一个关于可视控件的简单问题!高手帮忙!(100分)

  • 主题发起人 主题发起人 FlyIdeas
  • 开始时间 开始时间
F

FlyIdeas

Unregistered / Unconfirmed
GUEST, unregistred user!
我的类代码如下:
unit iDateTimePicker;

interface
uses Classes, Controls, Windows;

type
TiMonthCanlendar=class(TCustomControl)
private
protected
procedure CreateParams(var Params: TCreateParams); override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override;
end;

implementation

{ TiMonthCanlendar code beginning }

procedure TiMonthCanlendar.SetBounds(ALeft, ATop, AWidth, AHeight: Integer);
begin
inherited SetBounds(ALeft, ATop, AWidth, AHeight);
end;

procedure TiMonthCanlendar.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do
begin
Style := WS_BORDER;
ExStyle := WS_EX_TOOLWINDOW;
AddBiDiModeExStyle(ExStyle);
WindowClass.Style := CS_SAVEBITS;
end;
end;

constructor TiMonthCanlendar.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Left := 1;
Top := 1;
Width := 100;
Height := 100;
end;

destructor TiMonthCanlendar.Destroy;
begin
inherited Destroy;
end;

{ TiMonthCanlendar code ending }

end.

为什么我在窗体上创建它的实例,连个影子都没有呢?
高手和我讲讲为什么?分可以多给的!
 
>> TiMonthCanlendar=class(TCustomControl)
TiMonthCanlendar=class(TDateTimePicker)

另外可以看看DateTimePicker的源代码

 
constructor TiMonthCanlendar.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Parent := TWinControl(AOwner) ; //加上这句看看,有没有
Left := 1;
Top := 1;
Width := 100;
Height := 100;
end;
 
你创建的是一个TOOLBAR类的窗口,我试了你的代码,可以创建,但它是浮在外面的。

procedure TForm1.Button2Click(Sender: TObject);
begin
with TiMonthCanlendar.Create(Self) do
begin
Parent := Self; //你看不见可能是没有设Parent
end;
end;
 
可是只能浮在窗口外边,不能像TEdit那样嵌入到窗体中?并且关闭此控件窗口后,无法
关闭主窗口,高手请指点。
 
把CreateParams里面那几句去掉就行了。
 
可能是parent或是别的什么有错误吧。
 
TCustomControl是个基类,它的Paint方法是virtual的,如果你从TCustomControl继承
的话,应该自己实现Paint方法
 
后退
顶部