有关重载datetimepicker控件问题!!(50分)

  • 主题发起人 主题发起人 e_hua
  • 开始时间 开始时间
E

e_hua

Unregistered / Unconfirmed
GUEST, unregistred user!
delphi自带的datetimepicker控件没有borderstyle这个属性,我重载了该控件的类
以实现该控件的显示没有边框,可是并没有什么效果。
哪位能解决这个问题请指教!!
 
各位高手怎么不指点指点啊??
 
各位救救我啊,很急的!!
 
最简单的方法是用TPANEL作父类,TDATETIMEPICKER作为成员,在CREATE方法中加入
TDATETIMEPICKER控件的CREATE代码,在DESTROY方法中释放。
 
我试了一下,好像不行耶
能不能说具体一点或者把源代码贴出来OK??
 
你是要去掉边框,我还以为你要加边框呢,让我再想想!
 
我查了一下Tdatetimepicker的原码,好象不行,它是调用window api生成的控件,
直接用它来修改的话,我不知道怎么修改。
要是有时间的话,你可以自己写一个这样的控件。
 
我也发现了这个问题,我用直接截获WINDOWS画边框的消息不能实现
老兄,我就是因为没时间才到这来请教的。
 
unit MYDATETIMEPICKER;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls;

type
TMYDATETIMEPICKER = class(TDateTimePicker)
private
{ Private declarations }
procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
protected
{ Protected declarations }
public
{ Public declarations }
published
{ Published declarations }
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents('Standard', [TMYDATETIMEPICKER]);
end;

{ TMYDATETIMEPICKER }

procedure TMYDATETIMEPICKER.WMPaint(var Message: TWMPaint);
var
BtnFaceBrush, WindowBrush: HBRUSH;
dc : hdc;
r : TRect;
begin
inherited;
DC := GetWindowDC(Handle);
try
BtnFaceBrush := CreateSolidBrush(GetSysColor(COLOR_BTNFACE));
WindowBrush := CreateSolidBrush(GetSysColor(COLOR_WINDOW));
try
GetWindowRect(Handle, R);
OffsetRect (R, -R.Left, -R.Top);
FrameRect (DC, R, BtnFaceBrush);
InflateRect (R, -1, -1);
FrameRect (DC, R, BtnFaceBrush);
InflateRect (R, -1, -1);
FrameRect (DC, R, WindowBrush);
finally
DeleteObject (WindowBrush);
DeleteObject (BtnFaceBrush);
end;
finally
ReleaseDC(Handle, DC);
end;
end;

end.
 
谢谢蒋兄,以后多多指教!!
 
后退
顶部