Перейти к содержанию
Fire Monkey от А до Я

Winexcel

Пользователи
  • Постов

    77
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные Winexcel

  1. 1 час назад, Равиль Зарипов (ZuBy) сказал:

    не совсем понимаю выбор FMX, если Вам кросс не нужен. делайте на VCL.

    В FMX только один хэндл, и сообщения винапи обрабатываются криво, не мучайтесь, пишите на VCL

    Задача стоит писать на FMX

  2. Доброго времени суток, имею следующую проблему: нужно присвоить созданное окно контроллу на форме, например на 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 нужного компонента и всё. Если кто знает как решить данную проблему, помогите пожалуйста.

×
×
  • Создать...