掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
LazarusでのTOpenDialogのカスタマイズについて (ID:148788)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
にわかですが、Delphi と Lazarus の実装が違っているようですね。 TOpenDialogEx.DoShow 内で参照する Handle値 ですが、Delphiでは ダイアログの WindowHandle を取得できていますが、 Lazarusは、WindowHandleですらなく、OPENFILENAME 構造体へのポインタです(なんだそりゃ?)。 (struct.inc 参照) ダイアログ作成時のコールバック関数で、ダイアログを画面中央とかに移動させています(Delphi,Lazarus共通)。 加えて、Delphiでは、WindowHandle を取得してHandleプロパティにセットしていますが、 Lazarusは、以下のコメントがあるだけでなんにもしてくれません。 (Googleさんの翻訳) //ところで、ダイアログの幅と高さを設定しても、子コントロールは再配置されません:( //したがって、少なくともここで別の高さと幅を設定する方法はありません (Win32WSDialogs.pp 参照) さらなる深淵になにかあるのかもしれませんが、少なくともDelphi同様の記述でダイアログに コントロールを乗せることはできないようです。 たぶんですが、LPOPENFILENAME(Handle)^.lpfnHook で、Lazarus 側で設定した標準の コールバック関数(function OpenFileDialogCallBack(~~))のアドレスが取得できるので、 これを待避し、時前のコールバック関数と差し替えて、ちょこちょこしたら、動作するかもしれませんが、 そのへんの知識には自信がありません。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.