掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
LazarusでのTOpenDialogのカスタマイズについて (ID:148783)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
先日の件で、時間ができたので、以下のとおりサンプルを作ってみました。 Delphiだと、以下のとおりで動きましたが、Lazarusの場合、2点が引っ掛かりました。 大変恐縮なのですが、もし改善点等の情報をお持ちの方は、ご提供をお願いできますでしょうか。 検索してもなかなか情報がなく難儀しております。どうぞよろしくお願いいたします。 uses Windows; type TOpenDialogEx = class(TOpenDialog) public ComboBox: TComboBox; procedure DoShow; override; constructor Create(AOwner: TComponent); override; destructor Destroy; override; function Execute: Boolean; override; end; // クラスの関数 procedure TForm1.Button1Click(Sender: TObject); var OD: TOpenDialogEx; begin OD := TOpenDialogEx.Create(Self); if OD.Execute then; end; constructor TOpenDialogEx.Create(AOwner: TComponent); begin inherited Create(AOwner); ComboBox:= TComboBox.Create(Self); end; destructor TOpenDialogEx.Destroy; begin ComboBox.Free; end; procedure TOpenDialogEx.DoShow; var OptionRect: TRect; begin GetClientRect(Handle, OptionRect); ComboBox.ParentWindow := Handle; // ↑①この行はDelphiでは成功するが、Lazarusでは必ず失敗。エラーメッセージは下記。 ComboBox.Top := OptionRect.Height - 40; ComboBox.Visible := True; end; function TOpenDialogEx.Execute: Boolean; begin Template := 'TEXTFILEDLG'; // ↑②この行を入れるとLazarusでは未定義エラー。 // Delphiでは削除すると、TOpenDialogExは開くものの、コンボボックスが追加されない。 Result := inherited Execute; end; // 実行部 procedure TForm1.Button1Click(Sender: TObject); var OD: TOpenDialogEx; begin OD := TOpenDialogEx.Create(Self); if OD.Execute then; end; ①のところで表示されるエラーメッセージ(理解できていません…) プロジェクト project1 は、例外クラス'Exception'を発生させました。メッセージ: Failed to create win32 control, error: 1400 : ?E?B???h?E ?n???h????????????B ←自分の環境ではエラーメッセージも文字化けします。 該当ファイル 'win32wscontrols.pp' 該当行 220
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.