全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1562
推到 Plurk!
推到 Facebook!

edit 改變顏色方法

尚未結案
a02
一般會員


發表:10
回覆:4
積分:2
註冊:2004-01-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-09-15 09:11:00 IP:203.69.xxx.xxx 未訂閱
請問大家,我為了要讓游標所到之Edit元件顏色改變,在本站找到了一個範 例,測試後是OK的,但我有一個問題,就是原本Edit的OnExit所寫的Code却執行不到了,請問我要如何修改才可以讓程式先執行Edit的OnEnter再變顏色,離開時先執行 OnExit再還原顏色呢?謝謝!! procedure Tform1.EdtEnter(Sender: TObject); begin Tedit(Sender).Color :=clblue; end; procedure Tform1.EdtExit(Sender: TObject); begin Tedit(Sender).Color :=clWindow; end; procedure TForm1.FormCreate(Sender: TObject); var i: Integer; begin for i:=0 to ControlCount -1 do if Controls[i] is Tedit then begin Tedit(Controls[i]).OnEnter :=EdtEnter; Tedit(Controls[i]).OnExit :=EdtExit; end; end;
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-09-15 12:22:34 IP:61.71.xxx.xxx 未訂閱
引言: 請問大家,我為了要讓游標所到之Edit元件顏色改變,在本站找到了一個範 例,測試後是OK的,但我有一個問題,就是原本Edit的OnExit所寫的Code却執行不到了,請問我要如何修改才可以讓程式先執行Edit的OnEnter再變顏色,離開時先執行 OnExit再還原顏色呢?謝謝!! procedure Tform1.EdtEnter(Sender: TObject); begin Tedit(Sender).Color :=clblue; end; procedure Tform1.EdtExit(Sender: TObject); begin Tedit(Sender).Color :=clWindow; end; procedure TForm1.FormCreate(Sender: TObject); var i: Integer; begin for i:=0 to ControlCount -1 do if Controls[i] is Tedit then begin Tedit(Controls[i]).OnEnter :=EdtEnter; Tedit(Controls[i]).OnExit :=EdtExit; end; end;
請到本站下載 DOSMOVE元件, 其中有一個PROPERITY -> ACTIVECOLOR 有範例, 或直接使用該元件即可解決你的問題!
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-09-16 02:28:27 IP:221.169.xxx.xxx 未訂閱
a02:我有一個控制的方式,來源已經忘了!請知道的告之!
但不幸的是這是BCB的語法,可以請雙修的大大翻譯一下
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  Screen->OnActiveControlChange=ColorControl;
}
void _fastcall TForm1::ColorControl(TObject *Sender)
{
  if (Screen->ActiveForm->Name != this->Name)
    return ;
  bool TF=false;
  PPropInfo PropInfo;
  TTypeKinds typekind;
  typekind= typekind<ClassInfo(),"Color",typekind);
    if ( PropInfo )
      SetOrdProp( OldControl, PropInfo, clWindow);
  }
  OldControl=Screen->ActiveControl;
  if (GetPropInfo((TTypeInfo *)Screen->ActiveControl->ClassInfo(),"Text"))
    TF=true;
  if (TF) {
    PropInfo= GetPropInfo((TTypeInfo *)Screen->ActiveControl->ClassInfo(),"Color",typekind);
    if ( PropInfo ) 
      SetOrdProp( Screen->ActiveControl, PropInfo, clSilver);
  }
}
這種方式,我使用上不會有你說的問題!
請參考!
對不起!我不會Delphi。        
        
------
Andy Chang
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-09-16 16:10:04 IP:220.135.xxx.xxx 未訂閱
Hi a02 兄您好:    請問你是不是有用TPanel之類的, 如果有你的程式沒辦法設定到Panel上的TEdit, 改成
procedure TForm1.FormCreate(Sender: TObject);
var i: Integer;
begin
   for i:=0 to ComponentCount -1 do
      if Components[i] is Tedit then begin
         Tedit(Components[i]).OnEnter :=Edit1Enter;
         Tedit(Components[i]).OnExit :=Edit1Exit;
      end;
end;
我不是高手, 高手是正在銀幕前微笑的人.
------


我不是高手, 高手是正在銀幕前微笑的人.
系統時間:2024-05-17 13:27:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!