我寫一個Edit +Button的VCL元件Button.Caption如何設定? |
尚未結案
|
jeffreck
高階會員 ![]() ![]() ![]() ![]() 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
請教各位輩, 我寫一個 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 發送簡訊給我 |
|
jeffreck
高階會員 ![]() ![]() ![]() ![]() 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
|
Mickey
版主 ![]() ![]() ![]() ![]() ![]() 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |