Доброго времени суток, имею следующую проблему: нужно присвоить созданное окно контроллу на форме, например на TPanel, при условии что форма на которой лежит контролл имеет свойство Transparency:=True. Окно может создаваться как через WinApi, так и через FMX, пробовал два способа:
Способ №1: Просто создать окно средствами FMX и присовить это окно к TPanel:
VAR
MyForm:TForm3;
begin
MyForm:=TForm3.Create(Panel1);
MyForm.Show;
Panel1.AddObject(MyForm);
Данный способ не работает, возможно я что-то не так делаю?
Способ №2: Создать дочернее окно через WinApi:
var
h_Instance : HINST;
h_wnd : HWND;
Form:TCommonCustomForm;
begin
h_Instance := GetModuleHandle(NiL);
h_Wnd:=0;
h_Wnd := CreateWindowEx(WS_EX_TOPMOST, PChar(32770), 'TestWindow', WS_CHILD or WS_VISIBLE or WS_BORDER, 0, 0, 100, 100, FMXHandleToHWND(Self.Handle), 0, h_Instance, NiL);
end;
Второй способ работает, но тогда не выполняется условие "при условии что форма на которой лежит контролл имеет свойство Transparency:=True", форма что создаётся через винапи также прозрачная на 100%.
Собственно вопрос: можно ли как-то создать форму на контролле?
Для чего вообще этот мазохизм? Мне нужно в дальнейшем создавать через винапи другие контроллы, на определеной области в моей форме, чтобы их создать я должен знать HWND окна, для этого собственно всё и делается. На VCL всё очень просто, указал Handle нужного компонента и всё. Если кто знает как решить данную проблему, помогите пожалуйста.