• 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
  • ~AQUARIUS~ (05.01.12 11:49) [20]
    > еще нужно скачать и установить Chrome Frame
    Не обязательно, хватает содержимого папки bin\Win32.

    По теме вопроса. Устанавливал Хромиум уже на нескольких машинах (на всех ХЕ), - фокус нормально передается. Правда при этом не использовались никакие сторонние компоненты - только Хромиум и стандартные компоненты. Так что, возможно, это косяк DevExpress

    to Anatoly Podgoretsky
    Если трепятся у вас в Прочем, тогда чего вы начинаете трепатся здесь? ИМХО, ваши остроумные комментарии к автору темы были неуместны. И согласен с автором - не видели никогда сабж - и не лезьте. Или здесь что-то вроде "что ты, зеленый, знаешь, а вот я еще фидо помню, а поэтому мне решать, кто и что здесь делать будет"?
  • OLEKSANDR KHMELOV (07.04.12 19:49) [21]
    Какой то этот delphichromiumembedded совсем неживой.
    Примеры в demos не работают. Кое как запустил, прописав пути да сливая dll в папку с EXEшкой. Но

    1) простейшие попытки вызвать www.Browser.MainFrame.Url или www.Browser.MainFrame.GetUrl ошибки вызывает

    2) куки не помнит совсем

    3) любой чих  - ошибки.

    4) память жрет - ужас.

    В общем беда. Может есть для Хрома что-то поживее и получше чем сия
    поделка?

    P.S. Anatoly Podgoretsky - очень прошу Вас не отвечать, если сумеете.
  • Anatoly Podgoretsky © (07.04.12 20:12) [22]
    > OLEKSANDR KHMELOV  (07.04.2012 19:49:21)  [21]

    Webbrowser Embeded
  • OLEKSANDR KHMELOV (07.04.12 23:41) [23]

    > Anatoly Podgoretsky


    Блин. Вашу мысль я понял еще на первой странице - нет смысла её вдалбливать. Претензии к вашему совету всё те же, что и у топикстартера. Вопрос про TChromium. Именно. И только про него или его аналоги на бае Хромого движка. TEmbeddedWB крутейший компонент, но нет, на базе IE в моих условиях ничего не годится. Медленно, память жрет, из кэша поднимается долго и нудно. Даже в IE9 режиме все равно проблемы постоянно выскакивают. Подходит короче только для простых не шибко AJAXовых задач.

    Мне нужно вот для этого: trayos.com - слеплено именно на IE, и сие решение создает массу проблем. Понятно, что гуглобраузер тут будет как влитой, но его заразу с Delphi уже год корректно подружить не могу. Если Вы не работали с Хромовыми компонентами, то ваши советы для нас бесценны (в плохом смысле).
  • Anatoly Podgoretsky © (08.04.12 08:24) [24]
    А хромиум совсем не работает и чего?
  • sniknik © (08.04.12 15:57) [25]
    > А хромиум совсем не работает и чего?
    они считают, что это от того, что есть какой то секрет, тайные знания... узнать и все будет ок, а с IE (и это всем известно... сарказм) из-за того, что он априори "кривой".

    хотя... все что написано, ну типа жрет память, долго грузится, проблемы, подходит только для простых задач... все это вранье. ничего лучше в этом плане не видел.
    вот странно правда? IE не нравится... за интерфейс, пользуюсь мозилой, а вот в сравнении встраиваемых "движков"  @Gekco ембедед" с "IE ембедед" предпочитаю IE... проще, лучше, больше возможностей, быстрее работает (реально быстрее, за счет пред загруженности большей части движка в память, т.е. используется системой).

    > Блин. Вашу мысль я понял еще на первой странице - нет смысла её вдалбливать.
    для этого нужно озвучить "понимание", ну типа, "да мы понимаем, что TChromium это наколенная поделка, но хочется именно потрах... а не работать с TWebBrowser". без такой четкости, все ваши "отмазки" выглядят безосновательными капризами, от не понимания... и потому нужно "додолбить" мысль.
  • DVM © (08.04.12 23:28) [26]

    > OLEKSANDR KHMELOV   (07.04.12 19:49) [21]
    > Какой то этот delphichromiumembedded совсем неживой.
    > Примеры в demos не работают. Кое как запустил, прописав
    > пути да сливая dll в папку с EXEшкой. Но
    >

    все там работает давно использую никаких проблем нет вообще


    > 1) простейшие попытки вызвать www.Browser.MainFrame.Url
    > или www.Browser.MainFrame.GetUrl ошибки вызывает

    Нет там никаких ошибок, dll все в папку с исполняемым файлом надо положить и файлы локализации.


    > 2) куки не помнит совсем

    Все он помнит, свойства и методы смотрите.


    > 3) любой чих  - ошибки.
    >

    Например? Кстати, надо помнить, что некоторые события данного компонента вызываются в контексте не основного потока.


    > 4) память жрет - ужас.

    Не больше чем любой другой браузер

    Косяки в нем конечно есть. Но их еще поискать.


    > Anatoly Podgoretsky ©   (08.04.12 08:24) [24]
    > А хромиум совсем не работает и чего?
    >
    >

    Он отлично работает
  • Anatoly Podgoretsky © (09.04.12 06:57) [27]
    > DVM  (08.04.2012 23:28:26)  [26]

    Это у тебя работает, а у автора только IE работает.
Есть новые Нет новых   [134435   +16][b:0][p:0.003]