問題タブ [tpagecontrol]
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 - TPageControl のラベルの向きを変更するにはどうすればよいですか?
私は Delphi を初めて使用します (繰り返しますが、1994 年に Delphi を使用していました)。現在、Delphi 2009 Pro を使用しています。
Java 出身の私は、オブジェクトの継承が非常にわかりにくいと感じています。
ユーザーは、左側にタブがあるタブ付きページを望んでいます。ただし、TPageControl では、タブ ラベルの方向や向きを変更することはできません。彼らは、タブの単語を上から下に読み、文字を回転させて「通常の」向きにすることを望んでいます。左側のタブを使用すると、ラベルは下から上に読み取られ、文字は 90 度回転します。タブを読むために頭を左に傾ける傾向があります。標準の TPageControl VCL には、ホバーとアクティブのイメージ、テキスト、および色の変更を追加するいくつかの機能強化が見つかりましたが、タブのフォントの方向や方向を操作できるものは何もありませんでした。
ページ コントロール テーブルは次のようになります。
ページ
1
_
_
_
ページ
2
_
_
_
ページ
3
_
_
_
等々...
delphi - Delphi TPageControl の「タブ インデックス」を「ページ インデックス」に変換するにはどうすればよいですか?
特定のページが表示されない TPageControl を使用しています。
これにより、TabIndex プロパティと ActivePageIndex プロパティの通常の 1:1 マッピングが破られます。
ほとんどの場合、ActivePageIndex (または ActivePage 自体) を使用して現在のページを取得できますが、特定のタブ インデックスに関連付けられているページを特定する必要がある動的なツールヒント ヒントが必要です。
pageControl.IndexOfTabAt(X, Y) を呼び出すと、タブ インデックスが返されますが、一部のページ タブが表示されないため、それを Pages[] 配列のインデックスとして直接使用することはできません。
表示されているページを無視して、明示的にページを反復処理することはできますが、VCL には既にこれを行う何かがあるはずです...?
delphi - TPageControlのTTabsheetに閉じるボタンを実装する方法
FirefoxのようなTPageControlのTTabsheetに閉じるボタンを実装するにはどうすればよいですか?
編集:
Delphiバージョン:Delphi 2010
OS:WindowsXP以降
delphi - ページコントロールに埋め込まれたフォームのコントロールにアクセスするにはどうすればよいですか?
Form1にはPageControlがあります。実行時に、私のプログラムはタブシートを作成します。各タブシートでForm2を作成します。Form2には、Memo1コンポーネントがあります。Memo1にテキストを追加するにはどうすればよいですか?
delphi - Delphi TPageControl がタブのクリックに応答しない
メイン フォームに TPageControl を持つアプリがあります。ページコントロールにはいくつかのタブがあります。アプリはトレイ アイコンに最小化できます。しばらく最小化して実行した後、(トレイ アイコンを右クリックして) メイン ウィンドウを復元すると、最後に表示されていたタブが表示されますが、他のタブを選択できません。
別のタブをクリックすると、そのタブがアクティブなタブのように見えるように外観が変わります (つまり、タブ自体がタブの行の先頭に移動します) が、タブの本体は元のままです。他のタブを選択するためのメニュー項目とショートカット キーもあり、それらは同じように動作します。Alt-O (オプション) を入力すると、上部のオプション タブがアクティブになりますが、そのタブの本体に何が表示されているかわかりません。他のタブの内容はまだ表示されています。
別のタブをクリックするとフォーカスが最初のタブから移動し、そのタブをクリックすると元に戻ることを確認しました。
動作が発生するまでに時間がかかるため、動作が特定のタブに限定されているかどうかはまだ確認していません.
何か案は?
アップデート
興味深いメモ。このような状況で問題が発生することを確認しました。アプリが起動し、トレイに最小化されます。アラート状態が検出され、ウィンドウがポップアップ表示され、メイン ウィンドウが復元されます (これはアプリの意図した動作です)。この時点で障害が観察されます。つまり、他のタブをクリックしても表示されません。
- アプリを起動します。タブ 1 が表示されます
- アプリを最小化します。トレイへ
- ポップアップが表示されるのを待ちます。メインフォームが復元されます
- Tab 2 FAULT OBSERVED をクリックします (Tab 2 本体は表示されません)。
- TWinControl.CreateHandle にブレークポイントを設定
- タブ 3 - 休憩をクリックします。
- 実行 - タブ 3 本体を表示しない
- タブ 1 をクリック - 壊れません
- タブ 3 をクリック - 壊れません
- タブ 4 をクリック - 改行
- 実行 - タブ 4 本体を表示しません
- タブ 1、2、3、4 をクリック - 壊れません
そのため、タブは最初にクリックされたときにハンドルを作成しているようで、その時点から、それらは存在すると考えられますが、表示されません。ポップアップが無効になっている場合、障害は観察されません。ポップアップは Application.OnIdle タスクからトリガーされます。
別の更新: いくつかの進歩。ウェブをいじった後、いくつかの変更を加えました。
次のコードを削除しました。
そしてそれを次のように置き換えました:
私は削除しました:
そしてそれを次のように置き換えました:
問題は解決したようです。でも。これで、起動後にアプリを最小化できます。ポップアップが発生してモーダルに表示され、メイン フォームが表示され、すべてのタブが表示されて機能します。しかし。フォームを再び最小化することはできません。OnMinimize ハンドラーは、初回以降はトリガーされません。ぐらぐら。
なぜそれが機能するのか、今でも理解できません。これは少し心配です。そして、どうすればそれを再び最小化できますか??
delphi - DelphiでPageControlのちらつきを減らすにはどうすればよいですか?
Delphi 2009で、フォームのサイズ変更中に発生するPageControlのちらつきは、そのDoubleBuffered
プロパティをtrueに設定することで減らすことができることを発見しました。
ただし、PageControlタブシートにコントロールを追加すると、DoubleBufferedプロパティの設定に関係なくちらつきます。また、ランタイムテーマを有効にした場合と無効にした場合も試してみました。
delphi - TTabSheets の背景色を変更するにはどうすればよいですか?
私は Delphi 2009 でフォームを設計しており、TPageControl 要素を理解しようとしています。タブごとに個別のダイアログを作成しようとしています。TTabSheets を作成し、要素を TabSheets に配置することはできますが、問題は、TTabSheet のデフォルトの背景が白く見えるため、大麦が見えることです。TabSheet にパネルを配置しようとしましたが、何らかの理由でパネルが常に TabSheet の背後に表示されます。私の質問: タブ シートの色を標準の Windows ベージュに変更する方法はありますか、それともタブ ページに TPanel を配置して同じ目標を達成する方法はありますか?
delphi - TPageControl.OnChangeの遅いeventhandlerは奇妙な振る舞いを引き起こします
OnChange
TPageControl のイベントにスローコードを追加すると、問題が発生します。
コードが高速で時間がかからない場合は、問題ありません。
ただし、コードが+/- 0.5〜1秒を返すのに長い時間がかかる場合、PageControlは奇妙な動作を開始します。
ユーザーがページを変更した場合、最初のクリックでは何も行われないことがあり、実際に変更を行うには、ページを2回クリックする必要があります。
私はこのようなコードでこれを修正しました。 (アイデアを示すために、少し簡略化しました)
ご覧のとおり、これは恐ろしいハックです。
私が呼び出しているコードは、レポートやMySQLクエリなどを準備するためにQuickReportにあるため、それをあまり制御できません。
TPageControl.OnChangeから十分に速く戻らないために、混乱しているWin32メッセージングがあると思いますが、遅延は3秒よりも確実に短いです。
私は試しましProcessMessages
たが、それは事態を悪化させただけであり、これに別のスレッドを使用したくありません。
OnChange
通常のようにイベントハンドラーを使用できるようにこれを修正するにはどうすればよいですか
delphi - TPageControl の現在のページを設定するにはどうすればよいですか?
pagecontrol コンポーネントを使用しています。ボタンを追加してクリックすると、指定したページに移動する必要があります。
どうすればこれを行うことができますか?
delphi - Delphi: (TDockTabSet ?) とはどのようなコンポーネントで、どのように操作するのですか?
これは Delphi 用の TDockTabSet (強調表示) ですか? それとも別の成分?それを扱う方法。TPageControl の代わりに使用したいのですが、同じ機能 (タブ シートなど) を使用します。
もう 1 つの写真: http://www.tmssoftware.com/site/asg58.asp
ありがとう!