« SaveDialogを拡張してコントロールを追加する(その3:完結編) | トップページ | Indy(IdSMTP)を用いた添付ファイル付きメール送信 »

2018.01.31

SaveDialogを拡張してコントロールを追加する(その3:補足)

> 何かもっとやり方があるのではないかと思ったりもするのですが
と言っていましたが、以下のようにComboBoxをひとつだけにしたところ、ラベルの色が黒になったことも含めてWindowsメモ帳の名前をつけて保存ダイアログと同じになりました。
アクセラレータキー(&E)もきちんと反応しますので、この方法がWindowsメモ帳でのファイルダイアログ拡張と同じ方法なのだと思います。

Dialog3



// IFileDialogCustomizeをサポートするかどうか問い合わせる
if Supports(FileSaveDialog1.Dialog, IFileDialogCustomize, Fdc) then
begin
// 返されたFileSaveDialog1のIFileDialogCustomizeインターフェイスに対して
// コントロールを追加する
//
// AddTextでラベルを追加すると文字が青色になることとComboBoxとのレイアウト
// が思うようにならないため、StartVisualGroupでラベルと追加する(色はグレーだけど)
Fdc.StartVisualGroup(dwIDCtl, '文字コードセット(&E):');
Fdc.AddComboBox(dwIDCtl + 1);
Fdc.AddControlItem(dwIDCtl + 1, 0, 'Shift-JIS'); // ComboBoxにアイテムを追加する
Fdc.AddControlItem(dwIDCtl + 1, 1, 'JIS');
Fdc.AddControlItem(dwIDCtl + 1, 2, 'EUC-JP');
Fdc.AddControlItem(dwIDCtl + 1, 3, 'Unicode(Little Endian)');
Fdc.AddControlItem(dwIDCtl + 1, 4, 'Unicode(Big Endian)');
Fdc.AddControlItem(dwIDCtl + 1, 5, 'UTF-8');
Fdc.AddControlItem(dwIDCtl + 1, 6, 'UTF-8N');
Fdc.SetSelectedControlItem(dwIDCtl + 1, 0); // 0番目を選択
Fdc.EndVisualGroup;

Fdc.MakeProminent(dwIDCtl + 0); // 上記で登録したコントロールをメイン指定する
Fdc.MakeProminent(dwIDCtl + 1); // この指定を行ったコントロールは「保存(開く)ボタン」の左側に配置されるが、配置出来るのはひとつだけ

// イベントを登録(ボタンが押された等のイベントを処理しない場合は以下の登録は
// しなくても良いようだ)
fdevt := TMyFileDialogEvents.Create;
if Succeeded(FileSaveDialog1.Dialog.Advise(fdevt, cookie)) then
begin
FileDialog := FileSaveDialog1.Dialog;
MyEvents := fdevt;
MyEventsCookie := cookie;
end;
end;

追加検索キーワード
ファイルダイアログのカスタマイズ
コモンダイアログのカスタマイズ

|

« SaveDialogを拡張してコントロールを追加する(その3:完結編) | トップページ | Indy(IdSMTP)を用いた添付ファイル付きメール送信 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/22406/66342669

この記事へのトラックバック一覧です: SaveDialogを拡張してコントロールを追加する(その3:補足):

« SaveDialogを拡張してコントロールを追加する(その3:完結編) | トップページ | Indy(IdSMTP)を用いた添付ファイル付きメール送信 »