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

FormCreate時的問題

尚未結案
gcleektop
一般會員


發表:7
回覆:4
積分:2
註冊:2004-03-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-21 10:05:44 IP:140.128.xxx.xxx 未訂閱
在FormCreate事件中,呼叫OpenDialog執行後,Main Form會縮小至下方,請問如何不讓Main Form縮起,而是正常顯示?
danny
版主


發表:100
回覆:522
積分:595
註冊:2002-03-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-21 10:12:45 IP:211.76.xxx.xxx 未訂閱
引言: 在FormCreate事件中,呼叫OpenDialog執行後,Main Form會縮小至下方,請問如何不讓Main Form縮起,而是正常顯示?
你應該是使用 SDI or MDI ? 我猜是 MDI ... FormCreate 時期, 此 Form 還沒有 "Show 出來". 改到 FormShow 中試看看 ... 還有此 Form 是否有設 FormStyle = fsMDIChild ? 另外, 下次最好將 Source code 貼上來, 大家比較知道你的問題所在.
------
將問題盡快結案也是一種禮貌!
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-21 10:19:47 IP:218.15.xxx.xxx 未訂閱
您好: 看TOpenDialog的online help: TOpenDialog displays a modal Windows dialog box for selecting and opening files. 可知如果您在form的oncreat事件中呼叫TOpenDialog,则会先显示a modal Windows dialog box,然后再建立一个Form,所以您看起来就像是Main Form縮起,而没正常顯示; 您可将语句下在onActivate事件中: 参考:
procedure TForm1.FormActivate(Sender: TObject);
begin
  if opendialog1.Execute then
    showmessage(openDialog1.FileName);
end;
~~~静心养德~~~
danny
版主


發表:100
回覆:522
積分:595
註冊:2002-03-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-21 10:46:13 IP:211.76.xxx.xxx 未訂閱
引言: 您好: 看TOpenDialog的online help: TOpenDialog displays a modal Windows dialog box for selecting and opening files. 可知如果您在form的oncreat事件中呼叫TOpenDialog,则会先显示a modal Windows dialog box,然后再建立一个Form,所以您看起来就像是Main Form縮起,而没正常顯示; 您可将语句下在onActivate事件中: 参考:
procedure TForm1.FormActivate(Sender: TObject);
begin
  if opendialog1.Execute then
    showmessage(openDialog1.FileName);
end;
deity 兄, 放在 FormActivate 中有一個問題, 如果在好幾個 Form 中切換, 每一次 Activate 此 Form 就會出現 OpenDialog 一次. 如果本來就是要這種效果那就另當別論, 但放在 FormShow 中不會有此問題.
------
將問題盡快結案也是一種禮貌!
te_hsun
一般會員


發表:43
回覆:34
積分:20
註冊:2002-03-25

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-01-21 11:24:34 IP:220.135.xxx.xxx 未訂閱
放在 FormShow 裡面的程式內容會先處理完畢..才會去 Show Form...    要在 FormActivate 裡處理只出現1次的程式內容 最好是在Form..加一個boolean的變數來控制...    
type
  TForm1 = class(TForm)
.......
  private
    CanOpenDialog: Boolean;
  public
    { Public declarations }
  end;    var
  Form1: TForm1;    implementation
{$R *.dfm}    procedure TForm1.FormCreate(Sender: TObject);
begin
  CanOpenDialog:= True;
end;    procedure TForm1.FormActivate(Sender: TObject);
begin
  if CanOpenDialog then
  begin
    CanOpenDialog:= False;
    if opendialog1.Execute then
      showmessage(openDialog1.FileName);
  end;    end;    end.
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-01-21 11:40:41 IP:218.15.xxx.xxx 未訂閱
引言:
引言: 您好: 看TOpenDialog的online help: TOpenDialog displays a modal Windows dialog box for selecting and opening files. 可知如果您在form的oncreat事件中呼叫TOpenDialog,则会先显示a modal Windows dialog box,然后再建立一个Form,所以您看起来就像是Main Form縮起,而没正常顯示; 您可将语句下在onActivate事件中: 参考:
procedure TForm1.FormActivate(Sender: TObject);
begin
  if opendialog1.Execute then
    showmessage(openDialog1.FileName);
end;
deity 兄, 放在 FormActivate 中有一個問題, 如果在好幾個 Form 中切換, 每一次 Activate 此 Form 就會出現 OpenDialog 一次. 如果本來就是要這種效果那就另當別論, 但放在 FormShow 中不會有此問題.
谢谢danny大大的指出,是有这个问题, > <>~~~静心养德~~~
系統時間:2024-05-14 1:49:18
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!