自定義控件,如何在對象類型屬性里刷新控件?(20分)

  • 主题发起人 主题发起人 clwlyc
  • 开始时间 开始时间
C

clwlyc

Unregistered / Unconfirmed
GUEST, unregistred user!
在我的控件里有一個對象類型屬性,定義如下:
type
TFillOptions=class(TPersistent)
private
FDirection:TFDirection;
FFillStyle:TFFillStyle;
FStartColor:TColor;
FEndColor:TColor;
procedure SetDirection(Value:TFDirection);
procedure SetFillStyle(Value:TFFillStyle);
function GetStartColor:TColor;
procedure SetStartColor(Value:TColor);
function GetEndColor:TColor;
procedure SetEndColor(Value:TColor);
public
procedure Assign(Source:TFillOptions);
procedure Change;
published
property Direction:TFDirection read FDirection write SetDirection;
property FillStyle:TFFillStyle read FFillStyle write SetFillStyle;
property StartColor:TColor read GetStartColor write SetStartColor;
property EndColor:TColor read GetEndColor write SetEndColor;
end;

{ TFillOptions }
procedure TFillOptions.Assign(Source: TFillOptions);
begin
if Source is TFillOptions then
begin
Direction:=TFillOptions(Source).Direction;
FillStyle:=TFillOptions(Source).FillStyle;
StartColor:=TFillOptions(Source).StartColor;
EndColor:=TFillOptions(Source).EndColor;
end;
end;

procedure TFillOptions.Change;
begin

end;

function TFillOptions.GetEndColor: TColor;
begin
Result:=FEndColor;
end;

function TFillOptions.GetStartColor: TColor;
begin
Result:=FStartColor;
end;

procedure TFillOptions.SetDirection(Value: TFDirection);
begin
FDirection:=Value;
Change;
end;

procedure TFillOptions.SetEndColor(Value: TColor);
begin
FEndColor:=Value;
Change;
end;

procedure TFillOptions.SetFillStyle(Value: TFFillStyle);
begin
FFillStyle:=Value;
Change;
end;

procedure TFillOptions.SetStartColor(Value: TColor);
begin
FStartColor:=Value;
Change;
end;

請問我如何在Change過程中調用控件的Invalidate來刷新控件?
 
大蝦們,幫忙看看吧
 
不懂你的意思.
procedure TFillOptions.Change;
begin
//这里开始画控件哦.....
end;
 
我的意思是:
比如我設置StartColor後我要重新畫控件,在change過程中如何調用控件的方法重劃控件呢,下面這段代碼會出錯.
procedure TFillOptions.Change;
begin
Invalidate;
end;
 
怎麼沒人回答呢?是我沒說清楚嗎?
我在重寫DBGrid控件,加了一個TFillOptions屬性,如:
type
TCLWDBGrid = class(TDBGrid)
private
FFillOptions: TFillOptions;
procedure SetFillOptions(Value: TFillOptions);
...
protected
....
public
....
published
property FillOptions:TFillOptions read FFillOptions write SetFillOptions;
....

現在的問題是:當我設置了FillOptions的子屬性後,要重劃DBGrid,請問在以下這個過程中怎麼去刷新控件呢?
procedure TFillOptions.Change;
begin

end;
大俠們,幫幫忙吧.
 
FW們,出來說說話吧,分不夠可以加啊
 
高手都去哪了啊?帮帮忙吧,WF们!
 
//定义个Owner字段。
TFillOptions=class(TPersistent)
private
fOwner : TDBGrid;
...........
public
constructor Create(AOwner : TDBGrid);
begin
fOwner := AOwner;
end;

procedure TFillOptions.Change;
begin
fOwner.Invalidate;
end;
 
如果這個屬性是一個共用屬性,該怎麼處理?
 
多人接受答案了。
 
后退
顶部