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

如何設制動態建立的VCL得到焦點?

尚未結案
bradching
一般會員


發表:4
回覆:5
積分:1
註冊:2003-03-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-04-04 20:00:18 IP:218.16.xxx.xxx 未訂閱
有一段程序是用循環動態生成VCL組件的然後生成新的Form,現在我有一個問題就是如何才能在新生成的Form中設置其中的任何一個組件得到焦點? 多謝! 下面是生成新Form的原碼:     int FormHeight=0,FormWidth=0;         if(!ThisApp)              {                     ThisApp=Application;                    Application=CallingApp;              }               AutoFormOPData = new TAutoFormOPData(Application);                              // start create comp               for(int i=0;iCommaText =CompArray[i]; if(AutoFormOPData->Fields=="") { AutoFormOPData->Fields=(stringlist->Strings[0]); AutoFormOPData->DataType=stringlist->Strings[3]; } else { AutoFormOPData->Fields=AutoFormOPData->Fields "," stringlist->Strings[0]; AutoFormOPData->DataType=AutoFormOPData->DataType "," stringlist->Strings[3]; } if(stringlist->Strings[2]=="TEdit") { TLabel *label=new TLabel(AutoFormOPData); label->Caption =stringlist->Strings[1]; label->Top =FormHeight 5; label->Parent =AutoFormOPData; label->Name="label" IntToStr(i); TEdit *edit=new TEdit(AutoFormOPData); edit->Parent=AutoFormOPData; edit->Name=stringlist->Strings[0]; edit->Top=FormHeight; edit->Left=stringlist->Strings[1].Length()*10; if(((edit->Left) (edit->Width))>FormWidth) FormWidth= (edit->Left) (edit->Width); edit->Text =""; FormHeight=FormHeight 21; delete label; delete edit; } if(stringlist->Strings[2]=="TMemo") { TLabel *label=new TLabel(AutoFormOPData); label->Caption =stringlist->Strings[1]; label->Top =FormHeight 5; label->Parent =AutoFormOPData; label->Name="label" IntToStr(i); TMemo *memo=new TMemo(AutoFormOPData); memo->Parent=AutoFormOPData; memo->Lines->Clear() ; memo->Name=stringlist->Strings[0]; memo->Top =FormHeight; memo->Left =stringlist->Strings[1].Length()*10; if(((memo->Left) (memo->Width))>FormWidth) FormWidth= (memo->Left) (memo->Width); FormHeight=FormHeight 105; delete label; delete memo; } } TBitBtn *bitbtnok=new TBitBtn(AutoFormOPData); bitbtnok->Kind=bkOK; bitbtnok->Top =FormHeight 10; bitbtnok->Caption="Ok"; bitbtnok->Left =((FormWidth)/2)-10-bitbtnok->Width; bitbtnok->Parent=AutoFormOPData; bitbtnok->OnClick =AutoFormOPData->BitBtn1->OnClick ; TBitBtn *bitbtncancel=new TBitBtn(AutoFormOPData); bitbtncancel->Kind=bkCancel; bitbtncancel->Parent=AutoFormOPData; bitbtncancel->Top =FormHeight 10; bitbtncancel->Left =((FormWidth)/2) 10; bitbtncancel->Caption="Cancel"; bitbtncancel->OnClick =AutoFormOPData->BitBtn2->OnClick ; AutoFormOPData->SQLType=SQLType; AutoFormOPData->TableName =TableName; AutoFormOPData->Width =FormWidth 10; AutoFormOPData->Height=FormHeight 70; AutoFormOPData->Caption=FormCaption; AutoFormOPData->Position=poMainFormCenter; AutoFormOPData->Show();
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-04-04 22:50:28 IP:61.221.xxx.xxx 未訂閱
引言: 有一段程序是用循環動態生成VCL組件的然後生成新的Form,現在我有一個問題就是如何才能在新生成的Form中設置其中的任何一個組件得到焦點? 多謝!
bradching 你好:
(1)我並沒有仔細看你的程式碼,我只針對你問的問題回答
( >
   >Caption="Form2">Parent=Form2;
   Edit1->Left=0;
   Edit1->Top=0;
   Edit1->Width=80;
   Edit1->Text="Good";
   Edit1->TabStop=true;
   Edit1->TabOrder=2;
   TButton *btn1;
   btn1=new TButton(Form2);
   btn1->Parent=Form2;
   btn1->Caption="btn1";
   btn1->Left=100;
   btn1->Top=0;
   btn1->Width=80;
   btn1->TabStop=true;
   btn1->TabOrder=0;
   TButton *btn2;
   btn2=new TButton(Form2);
   btn2->Parent=Form2;
   btn2->Caption="btn2";
   btn2->Left=200;
   btn2->Top=0;
   btn2->Width=80;
   btn2->TabStop=true;
   btn2->TabOrder=1;
   Form2->ShowModal();
-- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
bradching
一般會員


發表:4
回覆:5
積分:1
註冊:2003-03-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-04-05 08:27:44 IP:218.16.xxx.xxx 未訂閱
問題已經解決,主要是在新的Form里面動態生成的組件是TControl要強制轉成TWinControl就可以,在TWinControl中就有SetFocus()的函數^_^
系統時間:2024-04-29 20:06:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!