如何知道目前所在之TEDIT物件為何,並填入指定文字 |
尚未結案
|
Paicaso
中階會員 發表:140 回覆:124 積分:52 註冊:2002-09-04 發送簡訊給我 |
請問
假設有幾個TEdit(Edit1,Edit2,Edit3...),與一個TButton(Button1)
欲當游標所Edit1並按下Button1時,即在Edit1填入特定文字,相同當游標位於Edit2時,當按下Button1時即在Edit2寫入相同之字串
如
procedure TForm1.Button1Click(Sender: TObject);
begin Edit1.Text := Edit1.Text 'AAA';
end;
但述是將資料填入固定之EDIT1,而我應如何知道目前所在之物件為何,如Edit1 or Edit2,以將文字填入遊標所在之EDIT上?
謝謝
|
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
|
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
當游標click BTN 1 時 focus 即由 edit 轉到 BTN
所以妳要的是知道之前的那個 focus 是在那個上面
以下是範例
unit Unit1; interface uses Forms, StdCtrls, Classes, Controls; type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; Edit2: TEdit; Edit3: TEdit; Button2: TButton; Button3: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } protected Oldfocus: TWinControl; procedure screedAC(Sender: TObject); public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin if Oldfocus <> nil then begin TEdit(Oldfocus).Text := TEdit(Oldfocus).Text ' AddFromBTN1'; TEdit(Oldfocus).SetFocus; end; end; procedure TForm1.Button2Click(Sender: TObject); begin if Oldfocus <> nil then begin TEdit(Oldfocus).Text := TEdit(Oldfocus).Text ' AddFromBTN2'; TEdit(Oldfocus).SetFocus; end; end; procedure TForm1.screedAC(Sender: TObject); begin if not ((Oldfocus is TEdit) and (ActiveControl is TButton)) then if (ActiveControl is TEdit) then Oldfocus := ActiveControl else Oldfocus := nil; end; procedure TForm1.FormCreate(Sender: TObject); begin Screen.OnActiveControlChange := screedAC; end; procedure TForm1.Button3Click(Sender: TObject); begin if Oldfocus <> nil then begin if Oldfocus = Edit1 then TEdit(Oldfocus).Text := TEdit(Oldfocus).Text ' AddToEdit1' else if Oldfocus = Edit2 then TEdit(Oldfocus).Text := TEdit(Oldfocus).Text ' AddToEdit2' else if Oldfocus = Edit3 then TEdit(Oldfocus).Text := TEdit(Oldfocus).Text ' AddToEdit3'; TEdit(Oldfocus).SetFocus; end; end; end.發表人 - syntax 於 2004/01/21 05:40:19 |
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
我會建議您 不要用TButton 改用TSpeedButton
正如syntax大大所云當按下TButton時Focus跑到TButton而不在TEdit
但改用TSpeedButton 因其不會取得Focus 故按下TSpeedButton時Focus仍在原位置中(即TEdit) ,然後用hahalin大大提供的程式碼即可以了(如下)
引言:新年快樂!!!!!!!!!!!!!!!!!!!!!!!!!!! 發表人 - chance36 於 2004/01/21 11:34:47if self.activecontrol is tedit then begin tedit(self.activecontrol). do what u want... end; |
Paicaso
中階會員 發表:140 回覆:124 積分:52 註冊:2002-09-04 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |