-
Решил с 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
-
> NeuroTechnic (29.01.2011 12:59:00) [0]
Теперь будет зависимость от текущей версии Хрома.
-
С чего бы это? Да и при чем тут хром? Не обижайтесь конечно, но как обычно ваш комментарий не в тему...
-
В публичных форумах готовься к любым ответом, это управляется не тобой, а отвечающим. От тебя тоже сильно зависит, какой ответ ты получишь, получил такой, как есть, значит вопрос поставлен так, что на большее не стоит расчитывать, довольствуйся тем, что есть. Но у тебя есть право уйти в другой форум.
-
ЗЫ: не надо было жаловаться на зависимость от ИЕ, получил зависимость от Хрома. А он при том, что это название по русски. И если это не Хром, то ты сам виноват, мало ли кто как продукт назовет, не наше дело.
-
> Но у тебя есть право уйти в другой форум.
Вы меня и на других находите (sql.ru по моему было аналогично). :-) К чему все эти едкие комментарии если помочь нечем?
Chromium и Chrome это несколько разные вещи. И Chromium Embedded это не Chromium, а фреймворк основанный на его исходниках, потому никак от текущей версии Chromium (если она вообще есть в системе) не зависит.
Отсюда видно, что с сабжем вы не работали, и получаются комментарии ради комментариев? Вопрос был адресован тем кто работал с данным фреймворком или тем кому интересно хотя бы посмотреть на него.
-
> NeuroTechnic (29.01.2011 20:46:05) [5]
Ну если нахожу значит нужно значит ты сам виноват. Не был бы нужен, то был бы неуловимым Джо. Проблему вижу тебе уже не инстересно обсуждать, а трепятся у нас в Прочем
-
Т.е. ваши посты были по теме проблемы?
Ладно, намек понятен, ухожу.
-
-
> antonn © (29.01.11 21:59) [8]
вполне заслуженная судьба, достаточно одного "а5", чтоб заслужить.
-
> NeuroTechnic (29.01.2011 21:48:07) [7]
Я не автор.
-
А если автор трепаться начал сразу, ни одного сообщения по теме, то судьба такой ветки незавидна.
-
Удалено модератором Примечание: п. 1.
-
Удалено модератором
-
Ого вы тут похоже срач развели :-) > А если автор трепаться начал сразу, ни одного сообщения > по темеВообще то мои сообщения были по теме, но вам же интересна только та их часть, что касалась ваших комментов... В общем проблему решил грабельками. Вообще это не только с 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 удалите.
-
скачал dcef-r306.7z с сайта http://code.google.com/p/delphichrom...downloads/list установил. кидаю на форму компонент компилирую и получаю ошибку. Exception EOSError in module Project1.exe at 0000C71E. System Error. Code: 126. Не найден указанный модуль. Кто сталкивался подскажите в чем может быть проблема? Установка прошла нормально, все установилось.
-
скачал dcef-r306.7z с сайта http://code.google.com/p/delphichrom...downloads/list установил. кидаю на форму компонент компилирую и получаю ошибку. Exception EOSError in module Project1.exe at 0000C71E. System Error. Code: 126. Не найден указанный модуль. Кто сталкивался подскажите в чем может быть проблема? Установка прошла нормально, все установилось.
-
> Exception EOSError
не знаю такого, но может ему dcu не хватает где-то?
-
2mr_switch
кинь рядом с экзешником библиотеки (*.dll), которые в архиве есть, который ты скачал
-
> Exception EOSError in module Project1.exe at 0000C71E. > System Error. Code: 126. > Не найден указанный модуль. >
Просто скомпилируй проект и запусти полученный exe, в папке с exe должны находиться файлы из dcef-r306.7z\dcef\bin\Win32, еще нужно скачать и установить Chrome Frame
-
> еще нужно скачать и установить Chrome Frame Не обязательно, хватает содержимого папки bin\Win32.
По теме вопроса. Устанавливал Хромиум уже на нескольких машинах (на всех ХЕ), - фокус нормально передается. Правда при этом не использовались никакие сторонние компоненты - только Хромиум и стандартные компоненты. Так что, возможно, это косяк DevExpress
to Anatoly Podgoretsky Если трепятся у вас в Прочем, тогда чего вы начинаете трепатся здесь? ИМХО, ваши остроумные комментарии к автору темы были неуместны. И согласен с автором - не видели никогда сабж - и не лезьте. Или здесь что-то вроде "что ты, зеленый, знаешь, а вот я еще фидо помню, а поэтому мне решать, кто и что здесь делать будет"?
-
Какой то этот delphichromiumembedded совсем неживой. Примеры в demos не работают. Кое как запустил, прописав пути да сливая dll в папку с EXEшкой. Но
1) простейшие попытки вызвать www.Browser.MainFrame.Url или www.Browser.MainFrame.GetUrl ошибки вызывает
2) куки не помнит совсем
3) любой чих - ошибки.
4) память жрет - ужас.
В общем беда. Может есть для Хрома что-то поживее и получше чем сия поделка?
P.S. Anatoly Podgoretsky - очень прошу Вас не отвечать, если сумеете.
-
> OLEKSANDR KHMELOV (07.04.2012 19:49:21) [21]
Webbrowser Embeded
-
> Anatoly Podgoretsky
Блин. Вашу мысль я понял еще на первой странице - нет смысла её вдалбливать. Претензии к вашему совету всё те же, что и у топикстартера. Вопрос про TChromium. Именно. И только про него или его аналоги на бае Хромого движка. TEmbeddedWB крутейший компонент, но нет, на базе IE в моих условиях ничего не годится. Медленно, память жрет, из кэша поднимается долго и нудно. Даже в IE9 режиме все равно проблемы постоянно выскакивают. Подходит короче только для простых не шибко AJAXовых задач.
Мне нужно вот для этого: trayos.com - слеплено именно на IE, и сие решение создает массу проблем. Понятно, что гуглобраузер тут будет как влитой, но его заразу с Delphi уже год корректно подружить не могу. Если Вы не работали с Хромовыми компонентами, то ваши советы для нас бесценны (в плохом смысле).
-
А хромиум совсем не работает и чего?
-
> А хромиум совсем не работает и чего? они считают, что это от того, что есть какой то секрет, тайные знания... узнать и все будет ок, а с IE (и это всем известно... сарказм) из-за того, что он априори "кривой".
хотя... все что написано, ну типа жрет память, долго грузится, проблемы, подходит только для простых задач... все это вранье. ничего лучше в этом плане не видел. вот странно правда? IE не нравится... за интерфейс, пользуюсь мозилой, а вот в сравнении встраиваемых "движков" @Gekco ембедед" с "IE ембедед" предпочитаю IE... проще, лучше, больше возможностей, быстрее работает (реально быстрее, за счет пред загруженности большей части движка в память, т.е. используется системой).
> Блин. Вашу мысль я понял еще на первой странице - нет смысла её вдалбливать. для этого нужно озвучить "понимание", ну типа, "да мы понимаем, что TChromium это наколенная поделка, но хочется именно потрах... а не работать с TWebBrowser". без такой четкости, все ваши "отмазки" выглядят безосновательными капризами, от не понимания... и потому нужно "додолбить" мысль.
-
> 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] > А хромиум совсем не работает и чего? > >
Он отлично работает
-
> DVM (08.04.2012 23:28:26) [26]
Это у тебя работает, а у автора только IE работает.
|