hanipino
12-12-2009, 10:30 PM
طريقة لتغيير شكل المكون Edit وقت التصميم و بعده
فى حالة الاستعانة بالمكون XPManifest فلن يكون للكود اى تاثير بعد التنفيذ .
المثال على شكل مكون (الخاصية UseXPTheme ) هى المسؤولة عن تغيير شكله
unit EditXP;
interface
uses
Windows, SysUtils, Classes, Controls, StdCtrls, Themes, Messages;
type
TEditXP = class(TEdit)
private
FUseXPTheme: Boolean;
procedure SetXPTheme(Value: Boolean);
Procedure WMNCPaint( Var Message: TMessage ); Message WM_NCPAINT;
protected
public
constructor Create(AOwner: TComponent); override;
published
property UseXPTheme: Boolean read FUseXPTheme write SetXPTheme;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Standard', [TEditXP]);
end;
{ TEditXP }
constructor TEditXP.Create(AOwner: TComponent);
begin
inherited;
FUseXPTheme := True;
end;
procedure TEditXP.SetXPTheme(Value: Boolean);
begin
if FUseXPTheme <> Value then
FUseXPTheme := Value;
Width := Width - 1;
Width := Width + 1;
end;
procedure TEditXP.WMNCPaint(var Message: TMessage);
begin
inherited;
if FUseXPTheme then
ThemeServices.PaintBorder(Self, FUseXPTheme); {True Or False !!!}
end;
end.
فى حالة الاستعانة بالمكون XPManifest فلن يكون للكود اى تاثير بعد التنفيذ .
المثال على شكل مكون (الخاصية UseXPTheme ) هى المسؤولة عن تغيير شكله
unit EditXP;
interface
uses
Windows, SysUtils, Classes, Controls, StdCtrls, Themes, Messages;
type
TEditXP = class(TEdit)
private
FUseXPTheme: Boolean;
procedure SetXPTheme(Value: Boolean);
Procedure WMNCPaint( Var Message: TMessage ); Message WM_NCPAINT;
protected
public
constructor Create(AOwner: TComponent); override;
published
property UseXPTheme: Boolean read FUseXPTheme write SetXPTheme;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Standard', [TEditXP]);
end;
{ TEditXP }
constructor TEditXP.Create(AOwner: TComponent);
begin
inherited;
FUseXPTheme := True;
end;
procedure TEditXP.SetXPTheme(Value: Boolean);
begin
if FUseXPTheme <> Value then
FUseXPTheme := Value;
Width := Width - 1;
Width := Width + 1;
end;
procedure TEditXP.WMNCPaint(var Message: TMessage);
begin
inherited;
if FUseXPTheme then
ThemeServices.PaintBorder(Self, FUseXPTheme); {True Or False !!!}
end;
end.