jimmyliu97
一般會員
![](./myimg/board/mystar_empty.gif)
![](images/icon_photo_none.gif) 發表:3 回覆:7 積分:2 註冊:2004-10-05
發送簡訊給我
|
各位好
小弟初學BCB 遇到一個問題
我在一個Form Onshow的事件中 做了一些判斷
如果判斷沒有過 我要把這Form給Close
可是 訊息顯示 無法在Onshow Onhide 下Close()的指令
請問我該怎麼做呢?! 發表人 - jimmyliu97 於 2004/10/22 11:08:29
|
m8815010
版主
![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif)
![](images/icon_photo_none.gif) 發表:99 回覆:372 積分:289 註冊:2003-11-13
發送簡訊給我
|
引言:
各位好
小弟初學BCB 遇到一個問題
我在一個Form Onshow的事件中 做了一些判斷
如果判斷沒有過 我要把這Form給Close
可是 訊息顯示 無法在Onshow Onhide 下Close()的指令
請問我該怎麼做呢?! 發表人 - jimmyliu97 於 2004/10/22 11:08:29
jimmyliu97你好 : 應該是可以的:
< class="code">
void __fastcall TForm1::FormShow(TObject *Sender)
{
if (!FileExists("C:\\test.txt"))
Close();
}
不曉得你的問題?還是你要post一下你的source code ?
|
jimmyliu97
一般會員
![](./myimg/board/mystar_empty.gif)
![](images/icon_photo_none.gif) 發表:3 回覆:7 積分:2 註冊:2004-10-05
發送簡訊給我
|
jimmyliu97你好 ![]() : 應該是可以的:
< class="code">
void __fastcall TForm1::FormShow(TObject *Sender)
{
if (!FileExists("C:\\test.txt"))
Close();
}
不曉得你的問題?還是你要post一下你的source code ![]() ?
[/
|
Zard
尊榮會員
![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif)
![](images/icon_photo_none.gif) 發表:24 回覆:396 積分:539 註冊:2003-11-26
發送簡訊給我
|
引言: 剛剛忘記說的詳細些
我是做了個TrayIcon的程式
在點選Menu選單後 會Show其中一個Form
在Form的OnShow事件中 加上這段判斷
會出現下面的訊息 而Form依然會顯示出來 我的目的是要將其Close
PS:不好意思 圖案上傳不了 他會秀出 Cannot change Visible in Onshow or OnHide.
會發生這種錯誤是因為你所關閉的form不是主form, 若是主form則m8815010所用的方法就可以了, 所以你的程式可以改為如下:
// Unit1.cpp
#include
#pragma hdrstop #include "Unit1.h"
#include "Unit2.h" #pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1; __fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
} void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form2 = new TForm2(this);
Form2->Visible = TRUE;
} /////////////////////////////////////////////// // Unit2.cpp #include
#pragma hdrstop #include "Unit2.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2; __fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
} void __fastcall TForm2::FormShow(TObject *Sender)
{
Close();
} void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
{
Action = caFree;
} 其中主form 為 Form1, 而Form1上的Button1按下後會動態產生 Form2, 若用上方的寫法就可以在Form2 的 OnShow 下Close().
|
Zard
尊榮會員
![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif)
![](images/icon_photo_none.gif) 發表:24 回覆:396 積分:539 註冊:2003-11-26
發送簡訊給我
|
引言: 會發生這種錯誤是因為你所關閉的form不是主form, 若是主form則m8815010所用的方法就可以了, 所以你的程式可以改為如下:
// Unit1.cpp
#include
#pragma hdrstop #include "Unit1.h"
#include "Unit2.h" #pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1; __fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
} void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form2 = new TForm2(this);
Form2->Visible = TRUE;
} /////////////////////////////////////////////// // Unit2.cpp #include
#pragma hdrstop #include "Unit2.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2; __fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
} void __fastcall TForm2::FormShow(TObject *Sender)
{
Close();
} void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
{
Action = caFree;
} 其中主form 為 Form1, 而Form1上的Button1按下後會動態產生 Form2, 若用上方的寫法就可以在Form2 的 OnShow 下Close().
補充一點, 記得把Form2從 Project設定中的Auto-Create Form List中移掉, 別忘了你現在是要動態產生Form2
|
m8815010
版主
![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif)
![](images/icon_photo_none.gif) 發表:99 回覆:372 積分:289 註冊:2003-11-13
發送簡訊給我
|
引言:
jimmyliu97你好 : 應該是可以的:
< class="code">
void __fastcall TForm1::FormShow(TObject *Sender)
{
if (!FileExists("C:\\test.txt"))
Close();
}
不曉得你的問題?還是你要post一下你的source code ?
>>< face="Verdana, Arial, Helvetica"> m8815010 謝謝您的回應 我用您的這段Code也是會發生相同的問題
就用您這段Code吧 我只是很簡單的判斷
if (!FileExists("C:\\test.txt"))
Close();
} 剛剛忘記說的詳細些
我是做了個TrayIcon的程式
在點選Menu選單後 會Show其中一個Form
在Form的OnShow事件中 加上這段判斷
會出現下面的訊息 而Form依然會顯示出來 我的目的是要將其Close
PS:不好意思 圖案上傳不了 他會秀出 Cannot change Visible in Onshow or OnHide. [/quote] jimmyliu97你好 : 不是很瞭解你的程式,可能要全部> >!
|
jimmyliu97
一般會員
![](./myimg/board/mystar_empty.gif)
![](images/icon_photo_none.gif) 發表:3 回覆:7 積分:2 註冊:2004-10-05
發送簡訊給我
|
m8815010 不好意思
程式碼有點多 不過我用了一個差不多的
http://my.so-net.net.tw/jimmyliu97/test.rar
您下載看看 Zard 謝謝您喔 正在試您的方法 ^^
|
jimmyliu97
一般會員
![](./myimg/board/mystar_empty.gif)
![](images/icon_photo_none.gif) 發表:3 回覆:7 積分:2 註冊:2004-10-05
發送簡訊給我
|
|
andychang1690
資深會員
![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif)
![](images/icon_photo_none.gif) 發表:20 回覆:694 積分:442 註冊:2003-03-14
發送簡訊給我
|
對不起!只是插個花!使用
PostQuitMessage(WM_QUIT); // 代替 Close();
是不是方便些!
對不起,連主Form一起關掉!
------ Andy Chang
|