动态创建你的控件,不一定要注册到组件面板上去。当你写好控件的时候,最好先用动态创建来做测试,否则你的程序的Bug可能搞垮Delphi IDE。动态创建的方法是:var
AObject: TYourClass;begin AObject := TYourClass.Create(...).
//使用的你的控件
AObject.Free;end;
AObject: TYourClass;begin AObject := TYourClass.Create(...).
//使用的你的控件
AObject.Free;end;
解决方案 »
- Properties['Unique Table'].Value 的问题
- delphi 导入WSDL后参数没定义问题(请Delphi高手指点,难道Delphi就不能写这中WEB调用程序?)
- 关于数据排列的
- 怎样拖动一个CoolBar?急!!!
- 向局域网的机器写文件,如何在代码里设置用户名和密码
- 济南招聘
- 请问各位我有什么工具可以把delphi6的项目转成delphi5的呀?狂给分~!
- 请问VSS的最新版本是什么?是不是Visual Studio里面的?
- 续 关于TNotifyEvent
- 为什么不能在sql语句里面用表名参数?
- activeform数字认证后的问题?
- 怎样提取出dbgrid中当前记录中某个字段的值?
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
I := TI.Create(Nil);
I.Maxim := MaximStr;
I.Explain := '假如上述代码中出现“OA”、“3D”等字样,改为“=”或者去掉';
I.Desire := '加不加分随你';
—————————————————————————————————
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TOcoolEdit=class(TCustomControl)
protected
procedure Paint; override;
public
constructor Create(AOwner:TComponent); override;
end;
TMainForm = class(TForm)
Button: TButton;
procedure ButtonClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
MainForm: TMainForm;
OcoolEdit: TOcoolEdit;
implementation{$R *.dfm}constructor TOcoolEdit.Create(AOwner:TComponent);
begin
inherited Create(AOwner);
end;procedure TOcoolEdit.Paint;
begin
Canvas.Rectangle(0,0,100,200);
end;procedure TMainForm.ButtonClick(Sender: TObject);
begin
OcoolEdit.Paint;
end;end.
begin
inherited Create(AOwner);
end;
这个没有必要,可以去掉你在使用这个控件的时候没有创建它的实例
应该这样:procedure TMainForm.ButtonClick(Sender: TObject);
begin
OcoolEdit := TOcoolEdit.Create(MainForm);
OcoolEdit.Paint;
end;注意在MainForm的Close里面要释放OcoolEdit对象
procedure TMainForm.FormClose(Sender: TObject; var Action:
TCloseAction);begin
OcoolEdit.Free;
end;
begin
Canvas.Rectangle(0,0,100,200);
end;改成下面的写法不报错了,但如何在tabcontrol或pagecontrol上画个框子呢?
procedure TOcoolEdit.Paint;
begin
MainForm.Canvas.Rectangle(0,0,100,200);
end;
begin
Canvas.Rectangle(0,0,100,200);
end;改成下面的写法不报错了,但如何在tabcontrol或pagecontrol上画个框子呢?
procedure TOcoolEdit.Paint;
begin
MainForm.Canvas.Rectangle(0,0,100,200);
end;