私は Delphi 10.3 用に変更し、そのデフォルトTOpenDialog
にはプレビュー ペインが含まれています。いくつか検索したところ、標準ダイアログIFileDialogCustomize
をカスタマイズするために Microsoft が提供するインターフェイスを見つけました。ペインの画像を変更するには、イベント ハンドラーをWinAPI
使用する必要があることはわかっています。OnSelectionChange
私にとって大きな問題は、次のとおりです。プレビュー ペインの画像にアクセスするにはどうすればよいIFileDialogCustomize
ですか。これの ItemID は何ですか? この質問に対する答えは、ネット上で見つかりませんでした。誰かが答えを知っていますか?それから私とコミュニティと共有してください!:)
一部のコード フラグメントを ... に置き換えました。これらは些細なセクションまたはアプリに依存するセクションであるため、簡潔にするためです。
procedure TMainWindow.OnSelectionChange( Sender : TObject );
var
dc : HDC;
aBMP : TBitmap;
function isSelectedFilePreviewAble : boolean;
begin
result := ...;
end;
functon getPreviewPictureDC : HDC;
var
iCustomize : IFileDialogCustomize;
h : THandle;
begin
if OpenDialog1.QueryInterface( IFileDialogCustomize, iCustomize ) = S_OK then
begin
h := iCustomize.??? this is the missing code fragment
result := GetDC( h );
end else
result := 0;
end;
procedure generatePreviewPicture;
begin
...
end;
begin
dc := getPreviewPictureDC;
if ( dc <> 0 ) then
begin
aBMP := TBitmap.Create;
try
if ( isSelectedFilePreviewAble ) then
generatePreviewPicture;
StretchBlt( aBMP.Handle, ...);
finally
aBMP.Free;
ReleaseDC( dc );
end;
end;
end;