Конференция "Сети" » Chromium Embedded
 
  • NeuroTechnic © (29.01.11 12:59) [0]
    Решил с TWebBrowser перейти на Chromium Embedded, очень уж нужна поддержка CSS3 и независимость от текущей версии IE.
    Использую данный враппер: http://code.google.com/p/delphichromiumembedded/
    Вроде всё гладко перевел, но выплыла одна проблема.  TChromium не становится активным контролом. В первую очередь это создает у меня проблемы со скроллом. Использую DevExpress TreeList. При клике на браузер, ActiveControl на форме всё равно остается TreeList и скролится вместе с браузером. По табу тоже на него не переходит фокус.

    Простейший пример иллюстрирующий проблему: форма с TEdit, TMemo и TChromium.

    procedure TForm1.ActiveControlChanged(Sender: TObject);  
    begin  
     Memo1.Lines.Add('ActiveControlChanged:'+ActiveControl.Name);  
    end;  

    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);  
    begin  
     Screen.OnActiveControlChange := nil;  
    end;  
    procedure TForm1.FormCreate(Sender: TObject);  
    begin  
     Screen.OnActiveControlChange := ActiveControlChanged;  
    end;  



    http://i.piccy.info/i5/96/36/1023696/chromiumfocus.png
  • Anatoly Podgoretsky © (29.01.11 13:53) [1]
    > NeuroTechnic  (29.01.2011 12:59:00)  [0]

    Теперь будет зависимость от текущей версии Хрома.
  • NeuroTechnic © (29.01.11 15:18) [2]
    С чего бы это? Да и при чем тут хром? Не обижайтесь конечно, но как обычно ваш комментарий не в тему...
  • Anatoly Podgoretsky © (29.01.11 16:15) [3]
    В публичных форумах готовься к любым ответом, это управляется не тобой, а отвечающим. От тебя тоже сильно зависит, какой ответ ты получишь, получил такой, как есть, значит вопрос поставлен так, что на большее не стоит расчитывать, довольствуйся тем, что есть. Но у тебя есть право уйти в другой форум.
  • Anatoly Podgoretsky © (29.01.11 16:18) [4]
    ЗЫ: не надо было жаловаться на зависимость от ИЕ, получил зависимость от Хрома. А он при том, что это название по русски. И если это не Хром, то ты сам виноват, мало ли кто как продукт назовет, не наше дело.
  • NeuroTechnic © (29.01.11 20:46) [5]

    > Но у тебя есть право уйти в другой форум.

    Вы меня и на других находите (sql.ru по моему было аналогично). :-) К чему все эти едкие комментарии если помочь нечем?

    Chromium и Chrome это несколько разные вещи. И Chromium Embedded это не Chromium, а фреймворк основанный на его исходниках, потому никак от текущей версии Chromium (если она вообще есть в системе) не зависит.

    Отсюда видно, что с сабжем вы не работали, и получаются комментарии ради комментариев? Вопрос был адресован тем кто работал с данным фреймворком или тем кому интересно хотя бы посмотреть на него.
  • Anatoly Podgoretsky © (29.01.11 21:35) [6]
    > NeuroTechnic  (29.01.2011 20:46:05)  [5]

    Ну если нахожу значит нужно значит ты сам виноват. Не был бы нужен, то был
    бы неуловимым Джо.
    Проблему вижу тебе уже не инстересно обсуждать, а трепятся у нас в Прочем
  • NeuroTechnic © (29.01.11 21:48) [7]
    Т.е. ваши посты были по теме проблемы?

    Ладно, намек понятен, ухожу.
  • antonn © (29.01.11 21:59) [8]
    Видимо судьба этой ветки повторит судьбу http://pda.delphimaster.net/?id=1296293177&n=18
    Анатолий, остановись.
  • KilkennyCat © (29.01.11 22:17) [9]

    > antonn ©   (29.01.11 21:59) [8]

    вполне заслуженная судьба, достаточно одного "а5", чтоб заслужить.
  • Anatoly Podgoretsky © (30.01.11 00:10) [10]
    > NeuroTechnic  (29.01.2011 21:48:07)  [7]

    Я не автор.
  • Anatoly Podgoretsky © (30.01.11 00:11) [11]
    А если автор трепаться начал сразу, ни одного сообщения по теме, то судьба такой ветки незавидна.
  • Кагбэ (30.01.11 11:57) [12]
    Удалено модератором
    Примечание: п. 1.
  • * © (30.01.11 13:44) [13]
    Удалено модератором
  • NeuroTechnic © (02.02.11 12:47) [14]
    Ого вы тут похоже срач развели :-)

    > А если автор трепаться начал сразу, ни одного сообщения
    > по теме

    Вообще то мои сообщения были по теме, но вам же интересна только та их часть, что касалась ваших комментов...

    В общем проблему решил грабельками. Вообще это не только с TChromium проявляется. Например, если TStringGrid и TWebBrowser оба с прокруткой, то эффект тот же.

    Решение такое:
    Кидаем таймер на форму, в нем

     if IsChildWindow(Chromium1, GetFocus) then
       SetFocusedControl(Chromium1);



    IsChildWindow это функция из DevExpress модуля cxContainer


    function IsChildWindow(AParent: TWinControl; AChildHandle: HWND): Boolean;

     function InternalNativeIsChildWindow(AParent: TWinControl): Boolean;
     begin
       Result := IsChild(NativeHandle(AParent.Handle), AChildHandle);
     end;

     function InternalIsChildWindow(AParent: TWinControl): Boolean;
     var
       I: Integer;
       APopupWindow: TcxCustomPopupWindow;
     begin
       with AParent do
         for I := 0 to ControlCount - 1 do
           if Controls[I] is TWinControl then
           begin
             if HasNativeHandle(TWinControl(Controls[I]), AChildHandle) then
             begin
               Result := True;
               Exit;
             end else
             begin
               Result := InternalIsChildWindow(TWinControl(Controls[I]));
               if Result then
                 Exit;
             end;
             Result := InternalNativeIsChildWindow(TWinControl(Controls[I]));
             if Result then
               Exit;
           end;
       if AParent is TcxCustomPopupWindow then
         for I := 0 to FVisiblePopupWindowList.Count - 1 do
         begin
           APopupWindow := TcxCustomPopupWindow(FVisiblePopupWindowList[I]);
           if (APopupWindow = AParent) or (GetParentForm(APopupWindow.OwnerControl) <> AParent) then
             Continue;
           if HasNativeHandle(APopupWindow, AChildHandle) then
           begin
             Result := True;
             Exit;
           end else
           begin
             Result := InternalIsChildWindow(APopupWindow);
             if Result then Exit;
           end;
         end;
       for I := 0 to FVisiblePopupWindowList.Count - 1 do
       begin
         APopupWindow := TcxCustomPopupWindow(FVisiblePopupWindowList[I]);
         if APopupWindow.OwnerControl = AParent then
         begin
           Result := HasNativeHandle(APopupWindow, AChildHandle) or
             InternalIsChildWindow(APopupWindow);
           if Result then Exit;
         end;
       end;
       Result := False;
     end;

    begin
     Result := False;
     if (AParent = nil) or (AChildHandle = 0) or HasNativeHandle(AParent, AChildHandle) then
       Exit;
     Result := InternalNativeIsChildWindow(AParent);
     if not Result then
       Result := InternalIsChildWindow(AParent);
    end;



    Если девками не пользуетесь, то ту часть где TcxCustomPopupWindow удалите.
  • mr_switch (17.11.11 19:22) [15]
    скачал dcef-r306.7z с сайта http://code.google.com/p/delphichrom...downloads/list
    установил.
    кидаю на форму компонент компилирую и получаю ошибку.

    Exception EOSError in module Project1.exe at 0000C71E.
    System Error. Code: 126.
    Не найден указанный модуль.

    Кто сталкивался подскажите в чем может быть проблема?

    Установка прошла нормально, все установилось.
  • mr_switch (17.11.11 19:22) [16]
    скачал dcef-r306.7z с сайта http://code.google.com/p/delphichrom...downloads/list
    установил.
    кидаю на форму компонент компилирую и получаю ошибку.

    Exception EOSError in module Project1.exe at 0000C71E.
    System Error. Code: 126.
    Не найден указанный модуль.

    Кто сталкивался подскажите в чем может быть проблема?

    Установка прошла нормально, все установилось.
  • brother © (17.11.11 20:39) [17]
    > Exception EOSError

    не знаю такого, но может ему dcu не хватает где-то?
  • pest © (18.11.11 15:39) [18]
    2mr_switch

    кинь рядом с экзешником библиотеки (*.dll), которые в архиве есть, который ты скачал
  • simpolmix (03.01.12 22:42) [19]

    > Exception EOSError in module Project1.exe at 0000C71E.
    > System Error. Code: 126.
    > Не найден указанный модуль.
    >

    Просто скомпилируй проект и запусти полученный exe, в папке с exe должны находиться   файлы из dcef-r306.7z\dcef\bin\Win32, еще нужно скачать и установить Chrome Frame
 
Конференция "Сети" » Chromium Embedded
Есть новые Нет новых   [134435   +13][b:0][p:0.002]