| 対象バージョン | |
| 最終更新日 | 2007-02-08 |
序 章
フォントを選択するダイアログを作ろうかと思ったわけです。
とりあえず、フォントを選択するコンボボックスは、自作のものがありましたが・・・それ一個だけのフォームを用意するのも、変な感じなので、TFontDialogを使ってフォントを選択するだけのダイアログを作ることできないかな?と考えたわけでございます。
解 説
普通のダイアログは、この画面です。
現在の開発環境 WindowsXP MCE SP2(SP2とMCEはどっちが先に書くものなんだろうか?)のものです。

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

緑: Static text
赤: Edit + ListBox に見えるところも含め ComboBox
黄: GroupBox
青: CheckBox
なお、コントロールのハンドルはGetDlgItem(ダイアログのハンドル, stc1)のように使用し、stc1は、(Delphi 5 では)Dlgs.pas ユニットに記述されています。(たぶん、Delphi 6 以降も同じではないかと・・・。)
GetDlgItemの使い方等は、インターネットで調べると、それこそゴロゴロしているでしょう。
問題は、ComboBoxの1〜3が、なぜ Edit + ListBox ではないのか?
ま、別にどうでもいいのでスルーします。
コンポーネント
以上をふまえて、コンポーネントを作成しました。
プログラムるコンポーネント部屋のダイアログパックを拾ってきてください。
ちなみに、拡張TFontDialog以外のダイアログを含むコモンダイアログセットになっています(一個余計なの入ってますが)
| プロパティ | ||
| DisableCtrls | fdcFontName | フォント名のコントロール(1)と(1)を使用不可にします | fdcFontStyle | フォントスタイルのコントロール(2)と(2)を使用不可にします | fdcFontSize | フォントサイズのコントロール(3)と(3)を使用不可にします | fdcDesignStrikeOut | 文字飾りの取消線チェックボックス(1)を使用不可にします | fdcDesignUnderbar | 文字飾りの下線チェックボックス(2)を使用不可にします | fdcDesignColor | 文字飾りの色コントロール(4)を使用不可にしますが、ラベル(4)は、なりません。 ・・・ただし、将来的に変わるかもしれません。。 |
fdcCharset | 文字セットコントロール(7)と(5)を使用不可にします |
| NoVerticalFont | Boolean | True にすると、「@MS ゴシック」のような縦書きフォントが、フォントの一覧に表示されません Default = False |
| FixedPitchOnly | Boolean | Trueにすると、「MS P ゴシック」のような可変ピッチフォントは、表示されなくなります Default = False |
| FontCharset | TFontCharset | 表示対象となる文字セットを指定します。 FontプロパティにもCharsetプロパティが存在しますが、使用しません Default = SHIFTJIS_CHARSET |
| OnFontSelectQuery | イベント | TOnFontSelectQuery = procedure (aFontName: String; var aDelete: Boolean) of object; ダイアログが表示される直前、上記設定で選択可能なフォント名が順にこのイベントを通して、選択可能なフォントであるか判定することができます。これにより、フォントの選択範囲を絞り込むことができます。 |
| 対象バージョン | |
| 最終更新日 | 2007-02-11 |
解 説

このように、最近使ったファイルとかが使えるようになった、TOpenDialogを表示できます。
たしか、Delphi 6 以降は、対応しているので、Delphi 5 以前をご利用の方限定品です。
プログラムるコンポーネント部屋のダイアログパックに含まれています。