ダイアログとか、etc...


TFontDialogの拡張
Delphi 6 以降では対応済みのTOpenDialog

TFontDialogの拡張
対象バージョン以外はわかりません
最終更新日2007-02-08

序 章
フォントを選択するダイアログを作ろうかと思ったわけです。
とりあえず、フォントを選択するコンボボックスは、自作のものがありましたが・・・それ一個だけのフォームを用意するのも、変な感じなので、TFontDialogを使ってフォントを選択するだけのダイアログを作ることできないかな?と考えたわけでございます。

解 説
普通のダイアログは、この画面です。
現在の開発環境 WindowsXP MCE SP2(SP2とMCEはどっちが先に書くものなんだろうか?)のものです。
TFontDialog

ここでフォントの選択だけを使うことができるようにしたかったわけです。
もっとも、他の設定を変更できないのに、このダイアログを使うのもおかしな話ですが、Windows標準のダイアログを使うことに意味があるのですよ(笑)

さて、TOpenDialogもそうですが、Windowsの標準ダイアログがゆえに、TLabel, TEdit, TListBox なんぞが置いてあって、プロパティを変更するようなわけにはいきません。
幸いなことに、GetDlgItemというAPIを使用することにより、ダイアログ内部のコントロールにアクセスすることができます。
ちょっと調べてみると、こんな結果になりました。

TFontDialog

緑: Static text
赤: Edit + ListBox に見えるところも含め ComboBox
黄: GroupBox
青: CheckBox

なお、コントロールのハンドルはGetDlgItem(ダイアログのハンドル, stc1)のように使用し、stc1は、(Delphi 5 では)Dlgs.pas ユニットに記述されています。(たぶん、Delphi 6 以降も同じではないかと・・・。)
GetDlgItemの使い方等は、インターネットで調べると、それこそゴロゴロしているでしょう。

問題は、ComboBoxの1〜3が、なぜ Edit + ListBox ではないのか?
ま、別にどうでもいいのでスルーします。

コンポーネント

以上をふまえて、コンポーネントを作成しました。
プログラムるコンポーネント部屋のダイアログパックを拾ってきてください。
ちなみに、拡張TFontDialog以外のダイアログを含むコモンダイアログセットになっています(一個余計なの入ってますが)

プロパティ
DisableCtrlsfdcFontNameフォント名のコントロール(1)(1)を使用不可にします
fdcFontStyle フォントスタイルのコントロール(2)(2)を使用不可にします
fdcFontSize フォントサイズのコントロール(3)(3)を使用不可にします
fdcDesignStrikeOut 文字飾りの取消線チェックボックス(1)を使用不可にします
fdcDesignUnderbar 文字飾りの下線チェックボックス(2)を使用不可にします
fdcDesignColor 文字飾りの色コントロール(4)を使用不可にしますが、ラベル(4)は、なりません。
・・・ただし、将来的に変わるかもしれません。。
fdcCharset文字セットコントロール(7)(5)を使用不可にします
NoVerticalFontBooleanTrue にすると、「@MS ゴシック」のような縦書きフォントが、フォントの一覧に表示されません
Default = False
FixedPitchOnlyBooleanTrueにすると、「MS P ゴシック」のような可変ピッチフォントは、表示されなくなります
Default = False
FontCharsetTFontCharset表示対象となる文字セットを指定します。
FontプロパティにもCharsetプロパティが存在しますが、使用しません
Default = SHIFTJIS_CHARSET
OnFontSelectQueryイベントTOnFontSelectQuery = procedure (aFontName: String; var aDelete: Boolean) of object;
ダイアログが表示される直前、上記設定で選択可能なフォント名が順にこのイベントを通して、選択可能なフォントであるか判定することができます。これにより、フォントの選択範囲を絞り込むことができます。


Delphi 6 以降では対応済みのTOpenDialog
対象バージョンしかわかりません
最終更新日2007-02-11

解 説


このように、最近使ったファイルとかが使えるようになった、TOpenDialogを表示できます。
たしか、Delphi 6 以降は、対応しているので、Delphi 5 以前をご利用の方限定品です。


プログラムるコンポーネント部屋のダイアログパックに含まれています。



戻る
Ads by TOK2