SetWindowPos(Integer(TRzTabSheet(Sender).Tag), HWND_TOP, 0, 0, TRzTabSheet(Sender).Width, TRzTabSheet(Sender).Height, SWP_SHOWWINDOW) ;
一個FORM A 中有一個PAGE,然后PAGE 加載DLL中的一個表單B ,當滑鼠進行PAGE中的表單B時,發現A表單選單欄變灰色了。有辦法解決這個問題嗎?
PS:正常參考的表單。
方式1 windows.SetParent(aForm.Handle,TabSheet1.Handle); 會變灰
方式2 aForm.Parent:=TabSheet1; 不會變灰。
uj5u.com熱心網友回復:
補充一點:
procedure TForm1.Button1Click(Sender: TObject);
var
tmpclass:TFormClass;
aForm:TForm;
begin
tmpclass:=TdllFrm1; // 直接參考的UNIT2.
aForm:=tmpclass.Create(Self);
windows.SetParent(aForm.Handle,TabSheet1.Handle); // 只有一這句,也會變灰
aForm.Parent:=TabSheet1; // 加上這一句 不變灰,并且TAB也能進入。
aForm.Top:=0;
aForm.Left:=0;
aForm.Show;
end;
uj5u.com熱心網友回復:
下面這種方式: 來源于DLL中的一個類。
function getdll(ParentApplication: TApplication;ParentForm: TWinControl): TFormClass;stdcall;external 'DLL1.dll';
procedure TForm1.Button3Click(Sender: TObject);
var
tmpclass:TFormClass;
aForm:TForm;
begin
tmpclass:=getdll(Application,TabSheet3);
aForm:=tmpclass.Create(TabSheet3);
windows.SetParent(aForm.Handle,TabSheet3.Handle); //
aForm.Parent:=TabSheet3; // 加上這一句,不會變灰,但是TAB進入不了。并且按一下就跳出去了
aForm.Top:=0;
aForm.Left:=0;
aForm.Show;
end;
uj5u.com熱心網友回復:
dll視窗 FormStyle = bsnoneuj5u.com熱心網友回復:
版主好,我是指進入DLL后 外面的EXE 變暗藍色了
uj5u.com熱心網友回復:
有按我說的去處理了嗎?
因為你的dll視窗要嵌入到容器控制元件,如果dll視窗帶有標題欄會有這樣的問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/110201.html
