如何讓已經show出的窗口轉換成ShowModal模式 |
答題得分者是:P.D.
|
lcc1299
一般會員 發表:39 回覆:42 積分:21 註冊:2004-09-12 發送簡訊給我 |
因為我在show放了資料庫查詢語法,但我想如果資料筆數大於1筆時,可以將窗口轉"ShowModal"模式,
而不需關閉再重新"showModal"該窗口,會多觸發了一次Show動作。我不要"FormStyle=stayonTop",這語法還是讓某些背景窗口可以被動作。謝謝 |
lcc1299
一般會員 發表:39 回覆:42 積分:21 註冊:2004-09-12 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
unit P_GlassMask; interface uses Windows, Forms; const WS_EX_LAYERED = $80000; LWA_ALPHA = $2; type TForm_GlassMask = class(TForm) procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form_GlassMask: TForm_GlassMask; function SetLayeredWindowAttributes(hwnd:HWND; crKey:Longint; bAlpha:byte; dwFlags:longint ):longint; stdcall; external user32; implementation {$R *.DFM} procedure TForm_GlassMask.FormCreate(Sender: TObject); var l: LongInt; begin l:= getWindowLong(Handle, GWL_EXSTYLE); l:= l or WS_EX_LAYERED; SetWindowLong(handle, GWL_EXSTYLE, l); SetLayeredWindowAttributes(handle, 0, 190, LWA_ALPHA); end; end. 把這段產出一支pas, 在 show你那個form前先create出來, 所以你必須另外將判斷 > 1 的程式寫一支 pas, 把以下這段放在這裡, 在你的form結束時要記得同步釋放 FreeAndNil(Form_GlassMask) if xxxx > 1 then begin_ Form_GlassMask:= TForm_GlassMask.Create(nil); Form_GlassMask.Show; end; ... show your form 試試看吧
編輯記錄
P.D. 重新編輯於 2019-01-06 10:16:41, 註解 無‧
|
lcc1299
一般會員 發表:39 回覆:42 積分:21 註冊:2004-09-12 發送簡訊給我 |
PD你好,我直接開兩個Form,把上面的程式碼放在Form2中,Form1直接於button中Form2.Show,Form2不會有showModal的模式產生,像是一個show的動作,是我少了什麼嗎?,謝謝。但我了解了你要傳達給我的意思了,先查詢資料筆數,再決定是否要進行showModal,然後我可以在顯示出來的窗口中去取原窗口的ADQ這樣我就不用進行第二次查詢動作。
補充:這個Form2的用意是。因為我發現我忘了於Form2.show後再呼叫我的Form3(我用show的方法呼出),但我的Form3也不會因為Form2的存在變成showModal模式。
編輯記錄
lcc1299 重新編輯於 2019-01-06 13:51:42, 註解 無‧
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
這個的做法並不是把 FORM1改為 SHOWMODAL, 因為不可能的,
這支程式是會產生一個MASK WINDOW(遮罩, form2), 把整個SCREEN 以半透明方式蓋掉, 再讓 FORM1 SHOW出來, 就不會點到其他FORM了(除非手動釋放掉), 忘了告訴你, 要遮的大小是你自己決定form2的尺寸, 我是設定 windowstate := wsMaximized, 所以你要用一個form3來判斷, 後來我想一想, 好像脫褲放屁, 如果用一個form3來判斷, =1 則 form1.show, >1則 form1.showmodal 不就好了, 幹嘛還幫你搞一個mask form 來做..... |
lcc1299
一般會員 發表:39 回覆:42 積分:21 註冊:2004-09-12 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |