两个控件联合问题(100分)

  • 主题发起人 主题发起人 killer01234
  • 开始时间 开始时间
K

killer01234

Unregistered / Unconfirmed
GUEST, unregistred user!
请问:我做了一个类,是从TButton继承来的,同时我想这个类包含一个TImage作为元素,
让这个类显示时能把button 和 Image 都显示出来怎么办?
我就想这个类能同时显示两个怎么做?我没钱了,只能给100了。
 
同时显示是什么意思?Image作为背景?
 
我的意思是 希望一个类C(包含 两个元素 a:TButton;b:TImage),希望button ,显示在
image的下面,而Sender 是 C;
 
从Twincontrol继承,
tmyclass=class9twincontrol)
private
fa:timage;
fb:tbutton;
...
end;
将button的事件引出,用self替代sender即可
 
TMYclass=clss(Twincontronl)
private
FButton:Tbutton;
FImage:=TImage;
constractor create(Aowner:Tcomponent);
...
TMyclass.create(Aowner:Tcompnent);
begin
inherited create;
Fbutton:=Tbutton.create(self);
Fbutton.parent:=self;
Fimage:=Timage.create(self);
Fimage.parent:=self;
end;
 
雨人:
那么在MyClass 的一个实例显示时。我怎样使button总在Image的下面。
 
pengjinlongex:
请问怎样将事件引出。谢谢
 
这样的控件我做过,你要的话我可以给你!不过你的那分要给我哦:)
联系h1yn@163.com
我做的是,和TImage差不多,但他具有Tbutton 的功能!!!
 
随便写了一个,只引出了Button.OnClick.在D6下运行通过.
unit ImageButton;

interface

uses
Windows, Messages, SysUtils, Classes,
Controls, ExtCtrls, StdCtrls;

type
TImageButton = class(TWinControl)
private
FImage: TImage;
FButton: TButton;
FOnClick: TNotifyEvent;
protected
procedure ButtonClick(Sender :TObject);
procedure DoClick; virtual;
procedure Resize; override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property OnClick: TNotifyEvent read FOnClick write FOnClick;
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents('Samples', [TImageButton]);
end;

{ TImageButton }

procedure TImageButton.ButtonClick(Sender: TObject);
begin
DoClick;
end;

constructor TImageButton.Create(AOwner: TComponent);
begin
inherited;

Width := 200;
Height := 220;

FImage := TImage.Create(Self);
FImage.Parent := Self;
FImage.SetBounds(0, 0, 200, 200);

FButton := TButton.Create(Self);
FButton.Parent := Self;
FButton.SetBounds(0, 200, 200, 20);
FButton.OnClick := ButtonClick;
end;

destructor TImageButton.Destroy;
begin
FImage.Free;
FButton.Free;
inherited;
end;

procedure TImageButton.DoClick;
begin
if Assigned(FOnClick) then FOnClick(Self);
end;

procedure TImageButton.Resize;
begin
inherited;
if HandleAllocated then begin
FImage.SetBounds(0, 0, Width, Height - 20);
FButton.SetBounds(0, Height - 20, Width, 20);
end;
end;

end.
 
JohnsonGuo:
我找你的试了一下,只是在单击button 才能响应,而单击image没响应
 
看到Create中的一句FButton.OnClick := ButtonClick没有?
在Create中添加FImage.OnClick := ButtonClick就可以了.
其他事件的处理方法相同,就不用我一一写出来了吧.
 
谢谢各位。分数有限。分一下。
 
后退
顶部