Bool型を文字列に変換するには、標準関数にBoolToStrがある。
しかし、"-1"と"0"もしくは、"True","False"になるのでON,OFFの"1"と"0"にしたいと思うときがたびたびある。
このたびに変換関数を自作するのも面倒なのだが...
IntToStr(ord( [Bool型] ));
とすればFalse:"0",True:"1"で取得できる!
2025年5月 2日(金) 22:39 JST
Bool型を文字列に変換するには、標準関数にBoolToStrがある。
しかし、"-1"と"0"もしくは、"True","False"になるのでON,OFFの"1"と"0"にしたいと思うときがたびたびある。
このたびに変換関数を自作するのも面倒なのだが...
IntToStr(ord( [Bool型] ));
とすればFalse:"0",True:"1"で取得できる!
すでに一般的になって久しい多ボタン多機能マウス。
ビジネス用途での浸透率はいまいちなのだが、家庭ではほとんどのパソコン利用者が使っているのではないだろうか?
最近、仕事でメニューアプリを作成している。そのメニューはウィンドウズアプリなのであるが、WEBサイトのリンクのように実行形式ファイルなどのオブジェクトに関連づけされているもの、次のメニューに関連づけされているものなど様々な登録が可能になっている。他のメニューに関連づけられたボタンをクリックした際にはそのメニューが展開されるのだが、一つ前のメニューに戻る機能を持ったボタンを画面上に配置していた。
それを見たお客さんが…「マウスの戻るボタンへの対応」を聞いてきた…。
Delphiの標準機能には当然無いのでたぶんメッセージを受け取ってるのだろうと当たりを付けて調べる。Spy++を動かすのも良かったが、面倒なのでGoogle検索すると、C#のコーディング例などが載っていた。
Delphiでも1件そのままのコードがあった。
こんな感じ
GExpertsはDelphi IDEを拡張するツール(エキスパート?ウィザード)集でXEにも対応しています。
現時点での最新版は1.34です。
http://www.gexperts.org/
GExpertsには非常に便利な機能がまとめられているので、インストールしておくと便利です。
しかし、フォームのフォントが欧文の設定になっているので修正しておく必要があります。
Font.CharSet が CHARSET_DEFAULT では無く大部分が CHARSET_ANSI になっています。
GExpertsにはいくつか便利な機能がありますが、英語表記なので読めなくて取りあえず使ってみるという感じで手探りです。
他のサイトでも紹介がありますが、くろねこが使って便利だと思った機能を抜粋。
Format 関数には困った仕様が…
Format 関数の仕様に幅指定子と精度指定子があって、フォーマットした際の文字列長を指定できる。
たとえば、下記の様に書くと「123」は、5桁に満たないので足りない分を頭から"0"で埋めて「00123」となる
Format('%.6d', [123]); { 123 -> 000123 }
しかし、下記のコードは…
Format('%.30d', [123]);
めんどくさがりなくろねこはシステムの必須入力チェックとフル桁入力チェックは業務入力チェックの前に出来ないかと考えた。
チェックの順番は、当然にタブ順がふさわしい。
タブ順を自分で管理するのはめんどくさい。エンターキーで[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;