自製一個VCL 為TEdit右邊加一個button問題? |
答題得分者是:code6421
|
jeffreck
高階會員 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
請教各位前輩
自製一個VCL 為Edit右邊加一個button問題?
但是在輸入資料時Edit的字會跑到Button上面及Button會變白色?
請問要如何修改才可以?? 非常非常的謝謝你,因為有你這世界變的更美好 ☆ ^_^ ☆
°∴°﹒☆°.﹒‧°∴°﹒°.﹒‧°∴°﹒
﹒‧°∴°﹒☆°.﹒‧°∴°﹒°.﹒‧°∴°﹒﹒‧°∴°﹒☆°.
--------------------------------------------------------------------
unit JKdit; interface uses
SysUtils, Classes, Controls, StdCtrls,Buttons; type
TJKdit = class(TEdit)
private
{ Private declarations }
protected
{ Protected declarations }
FElipsis: TSpeedButton;
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
published
{ Published declarations }
end; procedure Register; implementation procedure Register;
begin
RegisterComponents('Smaples', [TJKdit]);
end;
constructor TJKdit.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Height := 24; Width := 150;
// WordWrap := False;
//WantReturns := False; FElipsis := TSpeedButton.Create(Self);
with FElipsis do begin
Parent := Self;
Align := alRight;
Caption := '...';
end;
end; { TElipsisEdit.Create }
end.
-----------------------------------------------------------------------
|
Brian77
中階會員 發表:8 回覆:114 積分:94 註冊:2002-05-17 發送簡訊給我 |
|
jeffreck
高階會員 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
|
code6421
版主 發表:43 回覆:223 積分:208 註冊:2002-08-16 發送簡訊給我 |
unit JTButtonEdit; interface uses Windows,Messages,SysUtils, Classes, Controls, StdCtrls, Mask,Buttons; type TJTButtonEdit = class(TMaskEdit) private FButton:TSpeedButton; //property get/set. procedure SetBtnClick(Value:TNotifyEvent); function GetBtnClick: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; { Private declarations } protected //adjust text area method. 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 OnBtnClick:TNotifyEvent read GetBtnClick write SetBtnClick; { Published declarations } end; procedure Register; implementation constructor TJTButtonEdit.Create(AOwner:TComponent); begin inherited Create(Aowner); {Initialize Button} FButton:=TSpeedButton.Create(Self); FButton.Top:=0; FButton.Height:=Height-5; FButton.Left:=Width-19; FButton.Width:=16; FButton.Cursor:=crHandPoint; FButton.Parent:=Self; FButton.Caption:='...'; end; destructor TJTButtonEdit.Destroy; begin FButton.Free; inherited Destroy; end; procedure TJTButtonEdit.AdjustTextRect; var R:TRect; begin {Resize Text Rect} FButton.Top:=0; FButton.Height:=Height-5; FButton.Left:=Width-20; FButton.Width:=16; FButton.Cursor:=crHandPoint; R:= Rect(0, 0, FButton.Left-2,GetClientRect.Bottom-GetClientRect.Top); SendMessage(Handle, EM_SETRECT, 0, Longint(@R)); end; procedure TJTButtonEdit.CMFontChanged(var Message: TMessage); begin inherited; { Resize} AdjustTextRect; end; procedure TJTButtonEdit.WMSize(var Message:TWMSize); begin inherited; { Resize} AdjustTextRect; end; procedure TJTButtonEdit.CreateParams( var Params: TCreateParams ); begin inherited CreateParams( Params ); Params.Style := Params.Style or WS_CLIPCHILDREN or WS_CLIPSIBLINGS or ES_MULTILINE; end; procedure TJTButtonEdit.WMSetFocus(var Message:TMessage); begin { defwndproc will resize control in focus message,so we resize to} inherited; AdjustTextRect; end; procedure TJTButtonEdit.SetBtnClick(Value:TNotifyEvent); begin FButton.OnClick:=Value; end; function TJTButtonEdit.GetBtnClick:TNotifyEvent; begin Result:=FButton.OnClick; end; procedure Register; begin RegisterComponents('CDSamples', [TJTButtonEdit]); end; end.that's my upcoming article(Component Designing-VCL Edition) sample,hopefully can help you. i will explain more about component in new article. enjoy it!! Just coding... Taiwan:http://code6421.ktop.com.tw China:http://home.hoolee.com/~code6421
------
Just codeing... |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |