-
Постов
77 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные Winexcel
-
-
Доброго времени суток, имею следующую проблему: нужно присвоить созданное окно контроллу на форме, например на 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 нужного компонента и всё. Если кто знает как решить данную проблему, помогите пожалуйста.
Присвоение окна определенному контролу на форме
в Приложение и формы
Опубликовано
Задача стоит писать на FMX