[Delphi] MainFormOnTaskBarとタスクバーボタンで完成できていなかったActiveFormOnTaskBarの動きがようやく完成です。
サポートの方にもご協力いただいて...実現しました。
2024年11月 9日(土) 14:47 JST
[Delphi] MainFormOnTaskBarとタスクバーボタンで完成できていなかったActiveFormOnTaskBarの動きがようやく完成です。
サポートの方にもご協力いただいて...実現しました。
Delphi2007 以降からでしょうか?MainFormOnTaskBar と言うプロパティが追加されています。
embarcadero のサイトでは下記のように説明されています。
MainFormOnTaskBar プロパティは、Windows タスクバー ボタンを VCL で扱う方法を制御します。このプロパティが true の場合、タスクバー ボタンはアプリケーションのメイン フォームを表し、そのキャプションが表示されます。false の場合、タスクバー ボタンは、アプリケーションの(非表示の)メイン ウィンドウを表し、アプリケーションのタイトルが表示されます。
Windows Vista Aero 効果を使用するには、MainFormOnTaskBar が true であることが必要です。効果には、ライブ タスクバー サムネイル、動的ウィンドウ、Windows フリップ、Windows フリップ 3D があります。
このプロパティの登場というか、Windows Vista Aero 対応のために Delphi が行った修正によっていろいろとフォームの挙動が変更されました。
めんどくさがりなくろねこはシステムの必須入力チェックとフル桁入力チェックは業務入力チェックの前に出来ないかと考えた。
チェックの順番は、当然にタブ順がふさわしい。
タブ順を自分で管理するのはめんどくさい。エンターキーで[Delphi] Enterキーで次のフィールドに移動する の様な処理が出来るんだからきっと何か良い方法がある!
と調べた結果がGetTabOrderListだった。これを使うと単純なチェックはカスタマイズしたコントロールに持たせたチェックで終わらせることが出来そうだ!しかし、この関数いつからあるんだろう?
※TBC~はくろねこ製のオリジナルコンポーネントのメソッドで、CheckRequiredとCheckFillCharはそれぞれ必須入力チェック、フル桁入力チェックである。
procedure TForm1.CheckInputData(Sender: TObject); var i: integer; CtrlList: TList; ctrl: TWinControl; begin CtrlList := TList.Create; try GetTabOrderList(CtrlList); for i := 0 to CtrlList.Count - 1 do begin ctrl := CtrlList[i]; if (ctrl is TBCCustomEdit) then // エディット begin if not TBCCustomEdit(ctrl).CheckRequired(true) then exit; if not TBCCustomEdit(ctrl).CheckFillChar(true) then exit; end; if (ctrl is TBCCustomComboBox) then // コンボボックス begin if not TBCCustomComboBox(ctrl).CheckRequired(true) then exit; end; end; finally CtrlList.Free; end; end;