自作コンポーネントのプロパティに自作の型を設定するには?


ココナッツ  2005-09-24 09:33:22  No: 17684

おせわになります。
オブジェクトインスベクタに自作プロパティを表示させてその欄をクリックしたときにメッセージボックスを表示させるということはできますか?
コンポーネントを使用する際の注意事項などをこれに記述したいのです。


Mr.XRAY  URL  2005-09-25 09:18:52  No: 17685

巡回する度に読ませて頂いてはいるのですが,表題と書込みの内容から,
どの程度情報を提供すればいいのか判断できませんので.ヒントだけ.

オブジェクトインスペクタのクリック[...部],またはダブルクリック[値部]
でダイアログ等を表示するには,プロパティエディタを作成します.
例えば以下は,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.


Mr.XRAY  URL  2005-09-25 09:25:33  No: 17686

おっと失礼.
動作確認は,WindowsXP(SP2) + Delphi5(UP1)です.
釈迦に説法でしょうが,MyBompBの登録は,MyCompBReg.pasをコンポーネン
トとしてインスールします.


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加