記事カテゴリ

ユーザー機能


 2024年4月16日(火) 21:45 JST

[Delphi] Bool型を文字列に

  • 記事を友だちにメール
  • 印刷用ページ
  • 投稿者:
  • 表示回数
    14,679

Bool型を文字列に変換するには、標準関数にBoolToStrがある。
しかし、"-1"と"0"もしくは、"True","False"になるのでON,OFFの"1"と"0"にしたいと思うときがたびたびある。
このたびに変換関数を自作するのも面倒なのだが...

IntToStr(ord( [Bool型] ));

とすればFalse:"0",True:"1"で取得できる!

[Delphi] 多機能マウス対応

  • 記事を友だちにメール
  • 印刷用ページ
  • 投稿者:
  • 表示回数
    3,120

すでに一般的になって久しい多ボタン多機能マウス。
ビジネス用途での浸透率はいまいちなのだが、家庭ではほとんどのパソコン利用者が使っているのではないだろうか?

最近、仕事でメニューアプリを作成している。そのメニューはウィンドウズアプリなのであるが、WEBサイトのリンクのように実行形式ファイルなどのオブジェクトに関連づけされているもの、次のメニューに関連づけされているものなど様々な登録が可能になっている。他のメニューに関連づけられたボタンをクリックした際にはそのメニューが展開されるのだが、一つ前のメニューに戻る機能を持ったボタンを画面上に配置していた。

それを見たお客さんが…「マウスの戻るボタンへの対応」を聞いてきた…。
Delphiの標準機能には当然無いのでたぶんメッセージを受け取ってるのだろうと当たりを付けて調べる。Spy++を動かすのも良かったが、面倒なのでGoogle検索すると、C#のコーディング例などが載っていた。
Delphiでも1件そのままのコードがあった。

こんな感じ

[Delphi] GExpart

  • 記事を友だちにメール
  • 印刷用ページ
  • 投稿者:
  • 表示回数
    4,470

GExpertsはDelphi IDEを拡張するツール(エキスパート?ウィザード)集でXEにも対応しています。
現時点での最新版は1.34です。
http://www.gexperts.org/

GExpertsには非常に便利な機能がまとめられているので、インストールしておくと便利です。
しかし、フォームのフォントが欧文の設定になっているので修正しておく必要があります。
Font.CharSet が CHARSET_DEFAULT では無く大部分が CHARSET_ANSI になっています。

GExpertsにはいくつか便利な機能がありますが、英語表記なので読めなくて取りあえず使ってみるという感じで手探りです。
他のサイトでも紹介がありますが、くろねこが使って便利だと思った機能を抜粋。

[Delphi] Format関数の困った仕様

  • 記事を友だちにメール
  • 印刷用ページ
  • 投稿者:
  • 表示回数
    28,735

Format 関数には困った仕様が…
Format 関数の仕様に幅指定子と精度指定子があって、フォーマットした際の文字列長を指定できる。

たとえば、下記の様に書くと「123」は、5桁に満たないので足りない分を頭から"0"で埋めて「00123」となる

Format('%.6d', [123]); { 123 -> 000123 }

しかし、下記のコードは…

Format('%.30d', [123]);

[Delphi] タブ順に処理をする

  • 記事を友だちにメール
  • 印刷用ページ
  • 投稿者:
  • 表示回数
    4,224

めんどくさがりなくろねこはシステムの必須入力チェックとフル桁入力チェックは業務入力チェックの前に出来ないかと考えた。
チェックの順番は、当然にタブ順がふさわしい。

タブ順を自分で管理するのはめんどくさい。エンターキーで[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;

サイトカレンダー

サイトカレンダーをスキップ

2022年 12月
«
»
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

新着情報

記事 新着(24時間)

-

コメント 新着(2日)

-

トラックバック 新着(2日)

-

リンク 新着(2週)

新しいリンクはありません

ファイル (14日)