線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:995
推到 Plurk!
推到 Facebook!

自定义组件问题!

答題得分者是:Justmade
sos_admin
版主


發表:121
回覆:697
積分:768
註冊:2003-07-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-08-14 09:46:52 IP:61.155.xxx.xxx 未訂閱
怎样在自己定义的组件中加入像 memo1.Lines [开启一个输入框] memo1.Font [点...会调用一个设置字体的对话框,并怎么取到设置的值] 的属性。 谢谢!
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-08-14 11:27:00 IP:218.16.xxx.xxx 未訂閱
>>memo1.Lines [{Q一r入框] 只要你的 Property 是 TStrings / TStringList 便可 >>memo1.Font [...`用一次m字体的O框,并怎么取到次m的值] 針對 Font 而言,只要你的 Property 是 TFont 便可。 若是你的自訂 Object 想要有類似效果便要自訂 Component Editor / Property Editor 了,這是一個大題目,你在 Google 裡 Search 應可找到很多相關的專文。
sos_admin
版主


發表:121
回覆:697
積分:768
註冊:2003-07-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-08-14 11:38:14 IP:61.155.xxx.xxx 未訂閱
Justmade 兄: 我不是想要引用现有的Tfont等,上面主要是打个比方来说的。 主要就是像您说的[自訂 Object 想要有類似效果便要自訂 Component Editor / Property Editor ] 在网上我看过很多的文章,好像总是有点雾里看花的感觉。 希望 Justmade 兄 能指点一些常规的步骤或实现方法的思想就可以了! 谢谢!
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-08-14 13:16:51 IP:218.16.xxx.xxx 未訂閱
參看一下 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=29426 那裡有 william 版主的一個範例,使小弟得益不少哩。
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-08-14 14:00:53 IP:202.39.xxx.xxx 未訂閱
小弟在這兒找到一個多行 Hint 的範例: http://www.undu.com/LIBS/hintprop.zip
unit HintProp;    interface    uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, DsgnIntf,
  ExtCtrls, StdCtrls, ComCtrls;    type
  THintStringEditDialog = class(TForm)
    Bevel1: TBevel;
    LineCounter: TLabel;
    Memo: TRichEdit;
    CancelButton: TButton;
    OkButton: TButton;
    ShowPanel: TPanel;
    procedure MemoChange(Sender: TObject);
  private
  public
  end;    procedure Register;    implementation    {$R *.DFM}    procedure THintStringEditDialog.MemoChange(Sender: TObject);
begin
  ShowPanel.Hint := Memo.Text;
  LineCounter.Caption := Format ('%d Lines', [Memo.Lines.Count])
end;    type
  THintProperty = class (TStringProperty)
  private
  public
    procedure Edit; override;
    function GetAttributes: TPropertyAttributes; override;
  end;    procedure THintProperty.Edit;
begin
  with THintStringEditDialog.Create (Application) do
  try
    Memo.Text := GetValue;
    if ShowModal = mrOk then
      SetValue (Memo.Text)
  finally
    Free
  end
end;    function THintProperty.GetAttributes: TPropertyAttributes;
begin
  Result := [paDialog]
end;    procedure Register;
begin
  RegisterPropertyEditor (TypeInfo (string), TControl, 'Hint', THintProperty)
end;    end.
但有一個問題, 如何執行 RegisterPropertyEditor 這行呢? 或者說如何覆蓋原有的 Hint 的 Property Editor? 謝謝. --- --<-<-<@
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-08-14 14:20:04 IP:218.16.xxx.xxx 未訂閱
將 pas 加入 Package 並 Complie 便會執行 Register 的動作了。
系統時間:2024-05-05 2:39:03
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!