おせわになります。
オブジェクトインスベクタに自作プロパティを表示させてその欄をクリックしたときにメッセージボックスを表示させるということはできますか?
コンポーネントを使用する際の注意事項などをこれに記述したいのです。
巡回する度に読ませて頂いてはいるのですが,表題と書込みの内容から,
どの程度情報を提供すればいいのか判断できませんので.ヒントだけ.
オブジェクトインスペクタのクリック[...部],またはダブルクリック[値部]
でダイアログ等を表示するには,プロパティエディタを作成します.
例えば以下は,MyCompBという,MyTextというString型のプロパティを追加
したものです.プロパティエディタは,MyCompBReg.pasとしています.
MycompB.pasのコード
unit MyCompB;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TMyCompB = class(TComponent)
private
FMyText : String;
published
property MyText : String read FMyText write FMyText;
end;
implementation
end.
MyCompBReg.pasのコード
unit MyCompBReg;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs,DsgnIntf;
type
TMyTextProperty = class(TStringProperty)
function GetAttributes: TPropertyAttributes; override;
procedure Edit; override;
end;
procedure Register;
implementation
uses MyCompB;
{ TMyTextProperty }
function TMyTextProperty.GetAttributes: TPropertyAttributes;
begin
Result:=[paDialog];
end;
procedure TMyTextProperty.Edit;
var
S : String;
begin
//MyCompBからMyTextプロパティの値を受取る
S:=GetStrValue;
S:='MyTextプロパティの値です [ '+S+' ] ';
Application.MessageBox(PChar(S),'プロパティ',MB_OK);
end;
// コンポーネント登録情報
procedure Register;
begin
RegisterComponents('Samples2',[TMyCompB]);
RegisterPropertyEditor(TypeInfo(String),
TMyCompB,
'MyText',
TMyTextProperty);
end;
end.
おっと失礼.
動作確認は,WindowsXP(SP2) + Delphi5(UP1)です.
釈迦に説法でしょうが,MyBompBの登録は,MyCompBReg.pasをコンポーネン
トとしてインスールします.
ツイート | ![]() |