如下代碼是我想通過句柄將已打開的表單只用前置不再重新創建
SaveFrmAddress(DllFormName); //臨時存盤句柄
ChildHandle := StrToInt(FFrmIni.ReadString('FrmList', DllFormName, '0')); /在打開子表單時,將子表單存盤到Ini檔案中,再次打開時讀取句柄值,存盤句柄的方式也是比較死板的就是讀寫INI檔案
if ChildHandle = 0 then //判斷一下否打開過,打開過就不去呼叫DLL檔案,沒有打開就呼叫DLL檔案加載到主表單中
RunDllForm(DllFileName, DllFormName, Parameter, FrmCaption, 'ShowForm') //第一次打開可以顯示到主表單中
else
begin
//這段代碼有問題,第二次打開時不能將表單打開,不能顯示到最前面,再呼叫DLL又會創建一個新在子表單。想用這種方式通過句柄將表單再次顯示出來,
//這段代碼在執行時,如果子表單中沒有帶焦點的控制元件(xjPanel)是可以前置顯示,有焦點的控制元件(xjEdit)中不顯示出來,這里是我想咨詢各位的主要問題,不知道怎么再次將表單顯示出來?
Windows.ShowWindow(ChildHandle, SW_SHOW);
Windows.SetFocus(ChildHandle);
Windows.SetForegroundWindow(ChildHandle);
Windows.SetWindowPos(ChildHandle, HWND_TOPMOST, 0, 0, 0, 0, SWP_SHOWWINDOW or SWP_NOREDRAW or SWP_NOSIZE or SWP_ASYNCWINDOWPOS);
end;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/81156.html
標籤:VCL組件開發及應用
上一篇:一個SQL陳述句,請大神幫忙
