問題タブ [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 コントロールは、基本的に、スクロール バーが下端と右端に沿って取り付けられた TPanel のように見えます。フォームに配置しようとしましたが、何をしても、設計時または実行時にスクロール バーを実際に表示することはできません。それらを表示させる方法を知っている人はいますか?
delphi - スクロールバーが再び表示された後、TScrollBoxにスクロールバーを表示するにはどうすればよいですか?
私は1つの小さな問題に遭遇しました。いくつかのコントロールを動的に生成し、それらをTScrollbox
コンポーネントに配置しています。しかし、スクロールボックスが表示されている場合、ユーザーは作成および配置されている各コントロールを明確に確認できることに気付きました。そのため、多くの作業が行われているように見え、遅いです。
スクロールボックスを非表示にして、その上にすべてのコントロールを生成しました。これにより、時間が大幅に短縮され、ちらつきなどが発生しませんでした。しかし、ここに問題があります。スクロールボックスを再度表示すると、実際にフォームのサイズを変更するまで、そのスクロールバーは表示されません。(スクロールボックスの配置はalClient
)
これを修正する方法について何かアイデアはありますか?
塗り直しを試みましたが、うまくいきませんでした。更新も機能しませんでした。
ありがとうございました
編集:
上記のコードは、スクロールボックスを非表示および表示する方法を示しています。
fNaujasTermas
いくつかのトラックバー、画像、編集を含むパネルを生成します。
ステップバイステップの説明があるかどうかはわかりません。多くのコントロールを備えたパネルを生成し、ScrollBoxを親として設定する手順を作成するだけです。何かを生成する前にスクロールボックスを非表示にし、すべてが完了したら再表示します。
ところで、パネルは整列してalTop
います。したがって、新しいパネルが作成されてスクロールボックスに配置されるたびに、他のすべてのパネルが下に移動する間、そのパネルは上部に表示されます。
これが私がスクロールボックス自体を作成した方法です
EDIT2:私はこれを再現する方法を知っていると思います。
スクロールボックスに新しいパネルを追加するとき、そのスクロールボックスにすでにあるすべてのコントロールの高さの合計にはカウントされないようです。
例を挙げると。1つのパネルの高さが200pxだとします。
ScrollBoxの高さは300pxです。
したがって、合計で400pxの高さになる2つのパネルを作成した後、2番目のパネルの半分が表示されていなくても、scrollboxにはスクロールバーが表示されません。パネルをもう1つ追加すると、合計600ピクセルになります。スクロールボックスには、3つではなく、2つのパネルごとにのみスクロールするように見えるスクロールバーが表示されます。このようなウィンドウをスクロールしようとすると、値が再計算され、すべてが適切に表示されます。
したがって、主な問題は、スクロールボックスにスクロールバーを「時間内に」表示して、パネルが半分カットされないようにする方法です。
delphi - ボタンのクリック時にTScrollBoxにコンポーネントを動的に追加する方法は?
TScrollBox を 1 つ作成しました。ボタンのクリック時にラベルと編集ボックスを動的に追加しました。コンポーネントの位置を設定するために、コンポーネントの高さ、幅、左、上プロパティを使用しました。しかし、5 つのコンポーネントを追加した後にスクロール バーが画面に表示されると、次のコンポーネントの場所が乱れます。次のコンポーネントは ScrollBox に同期的に配置されません。
delphi - DelphiでTScrollBoxから選択したフォームを取得するには?
スクロールボックス内にいくつかのフォームを動的に作成しています。
作成したフォームをクリックすると、その特定のフォームに保存されている値を親フォームに取得したいと考えています。これは可能ですか?もしそうなら、どうすればいいですか?
紛らわしく聞こえないことを願っています。これが私がやっていることのスクリーンショットです。
delphi - TScrollBoxの固定位置にビットマップを保持します
TScrollBoxにあらゆる種類のフレームを配置しました。スクロールすると、正しくスクロールされます。次に、固定位置に残るビットマップを追加します。TScrollBoxと同じ親(TPanel)を持つTImageを試しました。BringToFrontを使用しても、TImageに割り当てられたビットマップが表示されません。
誰かが私を助けることができますか?
前もって感謝します、
アーノルド
delphi - TScrollBoxにスクロールバーが表示されないのはなぜですか?
これは非常に単純な問題のように思えますが、スクロールボックスにスクロールバーを表示させることができず、頭がおかしくなります。
これが状況です。フォームの一部に可変数のフレームを表示する必要があります。これらのフレームが表示されている領域は、TSplitterを使用するか、フォームのサイズを変更することにより、サイズを変更できます。
フォームの作成時に、データベース内のレコードに基づいてフレームを動的に生成しています。このフレームは、フレームの配置を担当するFlowPanelの親になります。FlowPanelはScrollBoxにあります。
FlowPanelが原因で、ユーザーがTSplitterを使用したり、フォームのサイズを変更したりすると、フレームが再配置される場合があります。フレームのいずれかがフォームのビューの外に再配置された場合、ユーザーがアクセスできないフレームまでスクロールダウンできるように、ScrollBoxにスクロールバーが表示されることを期待しています。これは起こりません。スクロールボックスの寸法の外側のフローパネルの領域にあるフレームにはアクセスできません。
スクロールボックス内の単純なオブジェクトを使用していくつかのテストを作成しました。スクロールボックスに含まれるオブジェクトのいずれかがスクロールボックスの寸法の外側に表示される場合、スクロールボックスはスクロールバーを正しく配置します。
フローパネルがclClient(スクロールボックス)に位置合わせされているか、スクロールボックスの側面に固定されているか、またはこれらのいずれでもないかは関係ありません。
代わりにTPanelを使用して、パネルのOnResizeイベントハンドラーからコード内のフレームの配置と再配置を実行できることに気付きましたが、これがFlowPanelの目的です。
何が起きてる?私は多くの異なるスクロールボックスのプロパティをいじくり回しましたが、それでも機能させることができません。問題は何ですか、そして解決策はありますか?
Ok。私はEweの答えを正しいものとして選択していますが、この作品を作る秘訣は彼のコメントの1つにあり、私はまだ結果に完全に満足していません。
これがスクープです。ScrollBoxとFlowPanelをEweが提案した方法で構成しましたが、その構成が機能しなかったため、他の多くの設定を試してみました。これは、パネル内に多くのパネルがあり、多くのスプリッターがあり、フォーム自体がPageControlのTabSheetにペアレント化されているフォームのユーザーインターフェイスの複雑さによるものだと確信しています(フォームをスタンドとしてテストしたため、この事実を省略しました単独のフォームでも同じ結果が得られました)。
不格好な方法ではありますが、それを機能させたのは、FlowPanelのAutoWrapをオフとオンに切り替えるというEweの提案です。ScrollBoxのOnResizeイベントハンドラーに次のコードを追加しました。
サイズを変更するとちらつきが目立ちますが、希望どおりの結果が得られるので、それでも問題ありません。ユーザーがフォームのサイズを変更すると、常にそれらのディメンションを使用して再作成されるため、サイズ変更はユーザーが頻繁に行うことではありません。
delphi - Scrollbar.visible:= Falseの場合に.Perform()またはSendMessageでScrollboxをスクロールする方法は?
水平スクロールバーを非表示にすると、使用時にスクロールされないことを確認しました。
sbxStudyBtnHolder.Perform(WM_HSCROLL, SB_LINEDOWN, 0);
どうすればそれを可能にすることができますか?
delphi - TScrollbox の MouseDown オーバーライド
TScrollbox から派生したカスタム スクロールボックスを作成しました。これは、スクロールバー以外のクライアント領域でドラッグするとスクロールすることを除いて、同じように機能します。
私の問題は、マウスが CustomScrollbox 内のボタンまたはパネル上にあるときにドラッグしてスクロールできないことです。
MouseDown、MouseUp、MouseMove オーバーライドは、別のコントロールにホバーするため、トリガーされません。
MouseDown、MouseUp、MouseMove を追跡し続け、ドラッグを開始したときに (CustomScrollbox 内で) Button/Panels イベントが発生しないようにするにはどうすればよいですか?
これが私の滑らかなCustomScrollboxのビデオです
delphi - TScrollBoxを使用してTExpanderコンポーネントを含める
フォームの左側に1つのスクロールボックスが配置されています。スクロールボックス内では、TExpanderコンポーネントが上部に配置されています。このエキスパンダーは、スクロールボックスの領域を超えているため、スクロールバーは表示されている必要がありますが、表示されていません。Texpanderの配置を変更すると、スクロールボックスの余白を超えてスクロールバーが表示されないため、問題はTexpanderの上部に配置されていることにあると思いますが、Texpanderのサイズが一定であるため、上部に配置する必要があります。変化。何か案は?どうもありがとう!
c++ - C++ ビルダーのスクロール ボックス コンポーネントがマウス ホイールに反応する
マウスホイールをスクロールボックスコンポーネントで動作させるオプションを探していましたが、これまでのところこれを入手しました
これまでのところ機能していますが、スクロールが非常に遅いです。スクロールを速くする方法はありますか、または c++ ビルダーでスクロールを処理するより良い方法はありますか?