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

我寫一個Edit +Button的VCL元件Button.Caption如何設定?

尚未結案
jeffreck
高階會員


發表:247
回覆:340
積分:197
註冊:2003-01-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-06-20 17:10:48 IP:61.218.xxx.xxx 未訂閱
請教各位輩,    我寫一個 Edit +Button 的VCL元件 如下但在使用時設定ButtonCaption會產生錯誤?? 請各位前輩救救我..    
 
unit JFDBEditButton;    interface    uses
  Windows,Messages,SysUtils, Classes, Controls, StdCtrls, Buttons,DBCtrls;    type
  TJFDBEditButton = class(TDBEdit)
  procedure FButtonClick(Sender: TObject);
  private
    FButton:TSpeedButton;        //property get/set.
    //procedure SetButtonClick(Value:TNotifyEvent);  //
    //function GetButtonClick:TNotifyEvent;         //
    //windows message hook.
    procedure WMSize(var Message: TWMSize); message WM_SIZE;
    procedure WMSetFocus(var Message:TMessage); message WM_SETFOCUS;
    procedure CMFontChanged(var Message: TMessage); message CM_FONTCHANGED;
    procedure SetCaption(const Value: String);
    function  GetCaption:String;
    { Private declarations }
  protected
    //adjust text area method.
    ButtonClick:TNotifyEvent;     //EVENT Add
    procedure AdjustTextRect;virtual;        { Protected declarations }
  public
    procedure CreateParams( var Params: TCreateParams );override;
    constructor Create(Aowner:TComponent);override;
    destructor Destroy;override;
    { Public declarations }
  published
    //event for button click.
  //  property OnButtonClick:TNotifyEvent read GetButtonClick write SetButtonClick;
   property OnButtonClick:TNotifyEvent read ButtonClick write ButtonClick;
   property ButtonCaption:String read GetCaption write SetCaption;        { Published declarations }
  end;    procedure Register;    implementation    constructor TJFDBEditButton.Create(AOwner:TComponent);
begin
  inherited Create(Aowner);
  {Initialize Button}
  FButton:=TSpeedButton.Create(Self);
  FButton.Top:=0;
  FButton.Height:=Height-4;
  FButton.Left:=Width-26;
  FButton.Width:=22;
  FButton.Cursor:=crHandPoint;
  FButton.Parent:=Self;
  //FButton.Caption:='...';
  //Fbutton.OnClick :=FButtonClick;
end;    destructor TJFDBEditButton.Destroy;
begin
  FButton.Free;
  inherited Destroy;
end;    procedure TJFDBEditButton.SetCaption(const Value: String);
begin
FButton.caption:=Value;
end;    function  TJFDBEditButton.GetCaption:String;
begin
result:=Fbutton.caption;
end;    procedure TJFDBEditButton.AdjustTextRect;
var
  R:TRect;
begin
  {Resize Text Rect}
  FButton.Top:=0;
  FButton.Height:=Height-4;
  FButton.Left:=Width-26;
  FButton.Width:=22;
  FButton.Cursor:=crHandPoint;
  R:= Rect(0, 0, FButton.Left-2,GetClientRect.Bottom-GetClientRect.Top);
  SendMessage(Handle, EM_SETRECT, 0, Longint(@R));
end;    procedure TJFDBEditButton.CMFontChanged(var Message: TMessage);
begin
  inherited;
  { Resize}
  AdjustTextRect;
end;    procedure TJFDBEditButton.WMSize(var Message:TWMSize);
begin
  inherited;
  { Resize}
  AdjustTextRect;
end;    procedure TJFDBEditButton.CreateParams( var Params: TCreateParams );
begin
  inherited CreateParams( Params );
  Params.Style := Params.Style or WS_CLIPCHILDREN or WS_CLIPSIBLINGS or ES_MULTILINE;    end;    procedure TJFDBEditButton.WMSetFocus(var Message:TMessage);
begin
  { defwndproc will resize control in focus message,so we resize to}
  inherited;
  AdjustTextRect;
end;    procedure TJFDBEditButton.FButtonClick(Sender: TObject);
begin
  if assigned(ButtonClick) and (Readonly=False) Then
     Begin
      SetFocus;
      ButtonClick(Self);
     End;    end;    procedure Register;
begin
  RegisterComponents('JFControls', [TJFDBEditButton]);
end;        end.    謝謝各前輩..........
發表人 - jeffreck 於 2004/06/20 17:14:13
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-06-20 17:51:42 IP:218.170.xxx.xxx 未訂閱
我用delphi5是可以掛起來的唷
jeffreck
高階會員


發表:247
回覆:340
積分:197
註冊:2003-01-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-06-20 21:15:17 IP:61.70.xxx.xxx 未訂閱
引言: 我用delphi5是可以掛起來的唷
怪怪...用別台也可以了,害我試了半天< >< >
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-06-21 23:03:15 IP:218.32.xxx.xxx 未訂閱
參考看看 TComponent "SetSubComponent" Method.
系統時間:2024-07-03 1:09:27
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!