線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1296
推到 Plurk!
推到 Facebook!

如何在TFram上的DBEdit依其值給予不同顏色

尚未結案
danajn
一般會員


發表:14
回覆:29
積分:8
註冊:2002-08-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-29 17:54:46 IP:220.130.xxx.xxx 未訂閱
如何在TFram上放了一個dbedit元件,在DBEDIT上依其值來改變DEBDIT的顏色?? 試著在DBEDIt.ONCHANGE 時去給顏色,但會出現元件不存在的訊息,是否有其他 方法可完成 謝謝各位
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-29 20:04:01 IP:61.31.xxx.xxx 未訂閱
在 OnChange 事件處理,應該是正確的。 可以用 function StringToColor(const S: string): TColor; 或是 function ColorToString(Color: TColor): string; 處理。
danajn
一般會員


發表:14
回覆:29
積分:8
註冊:2002-08-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-29 23:10:20 IP:61.64.xxx.xxx 未訂閱
Dear wameng 若寫在dbedit元件的onchange即可以,thx 再請問可否寫在 dbedit的datafield 的event中呢?? 發表人 - danajn 於 2004/10/29 23:14:30
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-10-29 23:47:04 IP:61.31.xxx.xxx 未訂閱
>再請問可否寫在 dbedit的datafield 的event中呢?? 當然也是可以的。 不然您將程式碼放上來,看看!
danajn
一般會員


發表:14
回覆:29
積分:8
註冊:2002-08-01

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-10-30 14:00:31 IP:61.64.xxx.xxx 未訂閱
type   TDBEdit = class(DBCtrls.TDBEdit)     procedure DataChange(Sender: TObject);   end;   TFrmColorEdit = class(TFrame)     Label1: TLabel;     Color_DBedit: TDBEdit;     Button1: TButton;     procedure Button1Click(Sender: TObject);     procedure Color_DBeditChange(Sender: TObject);   private     { Private declarations }   public     { Public declarations }   end;    implementation    uses Color_Pick;    {$R *.dfm}    procedure TFrmColorEdit.Button1Click(Sender: TObject); begin   ColorPick(Color_DBedit); end;    //寫在這個event是ok的    procedure TFrmColorEdit.Color_DBeditChange(Sender: TObject); begin   with TDBEdit(Sender) do   if DataSource.DataSet.FieldByName(DataField).AsString<>''then    begin     Color:=DataSource.DataSet.FieldByName(DataField).AsInteger;     Font.Color:=Color;   end; end;    
  但寫在這個event 是無作用的 
{ TDBEdit }
procedure TDBEdit.DataChange(Sender: TObject);
begin
  if DataSource.DataSet.FieldByName(DataField).AsString<>'' then egin
    Color:=DataSource.DataSet.FieldByName(DataField).AsInteger;
    Font.Color:=Color;
  end;    end;
end. 麻煩 wameng 囉 謝謝
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-10-30 14:34:04 IP:61.31.xxx.xxx 未訂閱
如果您要使用這個做法。
type
TDBEdit = class(DBCtrls.TDBEdit)
  procedure DataChange(Sender: TObject);
end;
請注意 DataChange 為私有的,使用繼承是無法 Override。 能夠覆寫主要看這函數字尾是否有 Override 或 virtual 語法。 因此應改為
type
  TDBEdit = class(DBCtrls.TDBEdit)
  protected
    procedure Change; override;
  end;
Procedure TDBEdit.Change;
begin
  inherited Change; { 繼承父元件的處理}
  ...
  { 加到這裡來 }
end;
發表人 - wameng 於 2004/10/30 14:35:38
danajn
一般會員


發表:14
回覆:29
積分:8
註冊:2002-08-01

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-11-08 11:42:02 IP:220.130.xxx.xxx 未訂閱
謝謝 ^^
系統時間:2024-05-17 12:42:27
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!