繼承元件問題 |
尚未結案
|
cyl
中階會員 發表:163 回覆:171 積分:66 註冊:2002-07-11 發送簡訊給我 |
請問我想繼承StatusBar,在新元件中加入三個屬性,不用每次都需要寫以下程式碼,請問要如何寫這個新元件呢??
procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect);
var
sz :string;
begin
if (Panel.Index=0) then begin
StatusBar1.Canvas.Brush.Color:=clYellow;
StatusBar1.Canvas.Font.Name:='細明體';
StatusBar1.Canvas.Font.Color:=clBlue;
StatusBar1.Canvas.Font.Size:=14;
sz:='細明體';
end
else if(Panel.Index=1) then begin
StatusBar1.Canvas.Brush.Color:=clGreen;
StatusBar1.Canvas.Font.Name:='標楷體';
StatusBar1.Canvas.Font.Color:=clRed;
StatusBar1.Canvas.Font.Size:=14;
sz:='標楷體';
end;
StatusBar1.Canvas.FillRect(Rect);
StatusBar1.Canvas.Brush.Style:=bsClear;
StatusBar1.Canvas.TextOut(Rect.Left 2, Rect.Top 2,sz); end;
|
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
不繼承也無所謂
把這一個 procedure 放到公用程式(例如:FmUtil,檔名為 UnUtil.pas)中的 public 區段 procedure TFmUtil.DoStatusBarDrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect);
只是內容的 "StatusBar1" 要修改成 "StatusBar"。如以下程式碼:
procedure TFmUtil.DoStatusBarDrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel; const Rect: TRect); var sz :string; begin if (Panel.Index=0) then begin StatusBar.Canvas.Brush.Color:=clYellow; StatusBar.Canvas.Font.Name:='細明體'; StatusBar.Canvas.Font.Color:=clBlue; StatusBar.Canvas.Font.Size:=14; sz:='細明體'; end else if(Panel.Index=1) then begin StatusBar.Canvas.Brush.Color:=clGreen; StatusBar.Canvas.Font.Name:='標楷體'; StatusBar.Canvas.Font.Color:=clRed; StatusBar.Canvas.Font.Size:=14; sz:='標楷體'; end; StatusBar.Canvas.FillRect(Rect); StatusBar.Canvas.Brush.Style:=bsClear; StatusBar.Canvas.TextOut(Rect.Left 2, Rect.Top 2,sz); end;然後在要使用的 Form 中,FormCreate 事件中寫一行 StatusBar1.OnDrawPanel := FmUtil.DoStatusBarDrawPanel; 當然啦,要 uses UnUtil 這樣就行了 加油喔,喵~
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |