問題タブ [tscrollbox]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
delphi - TScrollBox スクロールバーが実際に表示されていることを確認します
私は、TScrollBox ( Align := alClient
) といくつかのコントロールを TScrollBox に置いた単純なサイズの大きなフォームを持っています。ユーザーがフォーム サイズを変更すると、TScrollBox は、HorzScrollBar と VertScrollBar を表示および非表示にします (実際のクライアント フォーム サイズによって異なります)。
実行時に確認する方法 - HorzScrollBar または VertScrollBar は現在表示されていますか?
TControlScrollBar.Visible
調整機能しかないので答えません。
delphi - スクロール ボックス内のコントロールがフォーカスされないようにするにはどうすればよいですか?
垂直スクロールがTScrollBox
あり、水平スクロールバーが無効になっています。このスクロール ボックス内には、上部に配置された 1 つの大きなパネルがあり、その高さはその内容に基づいて動的に計算されます。その内容は 2 つのパネルで、1 つは左側に配置され、もう 1 つはクライアントが配置され、その間にスプリッターがあります。これら 2 つのパネルのそれぞれの内部には、ユーザーが選択した一連のパネルが上部に配置されており、動的にサイズ変更することもできるため、スクロール ボックス内のメイン パネルの高さを拡大/縮小できます。
同時に、コンテンツのこれらの小さなサブパネルのほとんどには、フォーカスを受け取るコントロールもあり、フォーカスを取得できるようにする必要があります。現在、すべてがスクロールで正常に動作します。
この問題は、ユーザーがスクロール ボックス内のそのようなフォーカス可能なコントロールの 1 つをクリックしたときに発生します。そのコントロールが部分的に非表示になっている場合 (コントロールの上部がスクロール位置の上部より上に伸びている)、スクロール ボックス全体がジャンプして、このコントロールがスクロール ボックスの上部に配置されます。
これは「機能」のようですが、無効にしたい機能です。この状況ではかなり厄介です。子の 1 つがフォーカスを受け取ったときにスクロール ボックスの位置がジャンプしないようにするにはどうすればよいですか?
delphi - 親がスクロールボックスの場合、firemonkey で空の親名を取得する
親がスクロールボックスの場合、親の名前を取得するにはどうすればよいですか。次の例は空を返します:
delphi - ローカル変数がフォーム コントロールへのポインタとして使用されるだけの場合、ローカル変数を「作成」/初期化する必要がありますか?
スクロールボックスを同期するこの簡単な例があります。ここでは、ラジオボタンで同期する側を制御します-左側または右側を同期します。コンパイルすると、コンパイラ メッセージが表示されます。
[dcc32 警告] Unit1.pas(51): W1036 変数 'ScrlBox1' が初期化されていない可能性があります
[dcc32 警告] Unit1.pas(51): W1036 変数 'ScrlBox2' が初期化されていない可能性があります
これは簡単な例です:
ここでの問題は何ですか?
これを最初に追加すると、メッセージはなくなります。
しかし、スクロール ボックス変数を作成する必要はないと思いますよね?これらは、フォーム上のコントロールへの単なる変数ポインターです。
delphi - ラベルをスクロールボックスの中央にスムーズに配置するにはどうすればよいですか?
テキストを表示するためにTMemo
inを使用し、ヘッダー情報として on top を使用します。メモがスクロールボックスよりも広い場合もあります。もちろん、メモを左右にスクロールしてメモ内のテキストを表示することもできます。スクロールボックスの表示領域の中央に常にヘッダーとしてラベルを付けたいと思います。設定でこれを行うことができますが、動作しますが、前後にスクロールするとちらつき、揺れます。メモはスムーズに動きますが、ラベルは動きません。TScrollBox
TLabel
Horizontal scroll bar
Label1.Left:= (Scrollbox1.Width div 2) - (Label1.Width div 2);
単位は次のとおりです。
そしてdfm:
使用してみDoubleBuffered
ましたが、役に立ちません。
スクロール時に Memo1 と同じくらい滑らかに、Label1 をちらつきや揺れなく動かす方法について何か提案はありますか?
編集:
最終的には、フォームに 3 つ以上のスクロールボックスがあり、それぞれにヘッダー付きのメモが最大 3 つ含まれているという設計になります。また、同じスクロールボックス内のすべてのメモを同時にスクロールする必要があるため、スクロールはスクロールボックスで行う必要があります。つまり、フォームまたはパネルにラベルを付けてから、スクロールボックスの外側のフォームにラベルを付ける方法がわかりません。
編集2:
以下の回答は良い解決策を提供しますが、Labels
中央に配置されている を の外にScrollbox
配置し、それ自体の上に置く必要がありForm
ます。そして、 によって、Scrollbox's
scroll bars
または によってscroll bars
直接移動しますForm
。Labels
これにより、望ましい効果が得られますが、の一部ではないという不便さが少し加わりScrollbox
ます。
delphi - TScrollBox のコンポーネントの 2 つの列、Delphi
ユーザーがUIコンポーネント(TImage)ランタイムをドラッグアンドドロップできる添付のシナリオのようなものが必要でした(ツールパレットからではありません)。今まで使ってTScrollBox
いました。しかし、付属の構造物に合わせて2つに分割することはできませんでした。
2 番目のコンポーネントを続けて使用できますが、オプションです。また、2 つのコンポーネント (行単位) は同期してスクロールする必要があります。
2 つの TScrollBox を追加し、次のコードを使用して垂直スクロールバーを同期することを考えていました: Delphi で TScrollBox のスクロールを追跡する方法
しかし、「Scrollbox1.VertScrollBar.Position」プロパティが見つかりませんでした。