TWebBrowser и THtml

Вопросы использования сторонних (не входящих в состав FPC и Lazarus) утилит и библиотек.

Модератор: Модераторы

v-t-l
энтузиаст
Сообщения: 744
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

TWebBrowser и THtml

Сообщение v-t-l »

Предпринимаются попытки портировать TWebBrowser и THtml
http://lazarus.freepascal.org/index.php?PHPSESSID=8a8195a1f73a5809533e9cd187bc3e62&topic=7854.0
THtml - скомпилился и установился в Lazarus 0.9.29 SVN:12829 i386-linux-gtk2.
Но framedemo запускается, пытается нарисовать страницу и вылетает без сообщений об ошибках в Lazarus.
При запуске из терминала получаю следующее

Код: Выделить всё

vital@vitalws:~/progr/lazarus/components/3dparty/thml/demo_src$ ./framedem 
Warning: TWinControl.DestroyHandle :THintWindow Handle not Allocated
Warning: TWinControl.DestroyHandle :THintWindow Handle not Allocated
Warning: TWinControl.DestroyHandle :THintWindow Handle not Allocated
Warning: TWinControl.DestroyHandle :THintWindow Handle not Allocated
Warning: TWinControl.DestroyHandle :THintWindow Handle not Allocated
Warning: TWinControl.DestroyHandle :THintWindow Handle not Allocated
Warning: TWinControl.DestroyHandle :THintWindow Handle not Allocated
Warning: TWinControl.DestroyHandle :THintWindow Handle not Allocated
Warning: TWinControl.DestroyHandle :THintWindow Handle not Allocated
Warning: TWinControl.DestroyHandle :THintWindow Handle not Allocated
Warning: TWinControl.DestroyHandle :THintWindow Handle not Allocated
Warning: TWinControl.DestroyHandle :THintWindow Handle not Allocated
Warning: TWinControl.DestroyHandle :THintWindow Handle not Allocated
GetMapMode not implemented yet
SetMapMode not implemented yet

(framedem:10737): Gdk-WARNING **: Attempt to draw a drawable with depth 24 to a drawable with depth 1
The program 'framedem' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadMatch (invalid parameter attributes)'.
  (Details: serial 2616 error_code 8 request_code 62 minor_code 0)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the --sync command line
   option to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)

так что, сыроват пока :(

Добавлено спустя 25 минут 7 секунд:
ссылка на скачивание http://web.fastermac.net/~MacPgmr/Lazarus/
Аватара пользователя
Nik
энтузиаст
Сообщения: 573
Зарегистрирован: 03.02.2006 23:08:09
Откуда: Киров
Контактная информация:

Сообщение Nik »

Тоже вот в одном из проектов пытался задействовать - но безуспешно. Даже демка из пакета компилится без ошибок, но вылетает при попытке открыть любой HTML. Эх... Реально не хватает embedded-компонента для просмотра HTML+CSS. Может есть альтернативы? Gecko больно тяжёл (хотя, возможно, его можно урезать, просто я не знаю? :) )
Аватара пользователя
FeLiX
новенький
Сообщения: 15
Зарегистрирован: 13.02.2010 15:57:20

Сообщение FeLiX »

Забавно у людей ещё чет и пытается работать, вылетает. У меня просто при попытки загрузить html либо сразу thml исчезает, либо, если загрузится, то "самоликвидируется", после того как по нему щёлкнешь мышкой.:D
Да и по моему уже там нечего не осуществляется по портированию, а всё мертво. :(
Аватара пользователя
Brainenjii
энтузиаст
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение Brainenjii »

На днях проскакивало - http://lazarus.freepascal.org/index.php ... 762.0.html
Ну и конечно, а почему бы не перенести в браузер всё приложение ^_^
Аватара пользователя
Nik
энтузиаст
Сообщения: 573
Зарегистрирован: 03.02.2006 23:08:09
Откуда: Киров
Контактная информация:

Сообщение Nik »

IE юзать - не вариант, ибо не кросс-платформа. А всё приложение пока рановато - пользователи не привычные (про EP уже наслышан :) )
Timid
постоялец
Сообщения: 290
Зарегистрирован: 21.11.2007 20:33:15

Сообщение Timid »

Может попробовать портировать HTMLLite? Он имеет рендер написанный на Delphi, без всяких embeded и activeX.

Правда сам "браузер" довольно древний. Тот что доступен в исходниках.
Аватара пользователя
Nik
энтузиаст
Сообщения: 573
Зарегистрирован: 03.02.2006 23:08:09
Откуда: Киров
Контактная информация:

Сообщение Nik »

Так вот порт и пытаемся тут запустить. Сам пока за портирование не возьмусь - опыта маловато. Хотя надо попробовать новую версию, с поддержкой юникода (http://www.songbeamer.com/delphi/), там порядочно переделано по сравнению с заброшенным оригиналом, может меньше будет проблем.
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Nik писал(а):IE юзать - не вариант, ибо не кросс-платформа.

Кроссплатформенно - юзать просто внешний браузер, тот, который по умолчанию в системе. ;)
Timid
постоялец
Сообщения: 290
Зарегистрирован: 21.11.2007 20:33:15

Сообщение Timid »

А еще "кроссплатформеннее" вообще не использовать Lazarus/FPC, а писать на каком-нибудь Tcl/TK :(


По-возможности, код приложения должен быть написан так, чтобы не зависеть от настроек среды исполнения.
Аватара пользователя
Nik
энтузиаст
Сообщения: 573
Зарегистрирован: 03.02.2006 23:08:09
Откуда: Киров
Контактная информация:

Сообщение Nik »

Кроссплатформенно - юзать просто внешний браузер, тот, который по умолчанию в системе.

Ага, в Win по дефолту - корявый на всю голову IE, в Linux единственным может оказаться Konquer, про который мало кто из html-верстальщиков вообще знает. А вообще, имхо, пользователь не должен уходить за пределы программы, поскольку в таком случае программист теряет контроль (вы же не возьмётесь обрабатывать ошибки внешнего браузера?).


По-возможности, код приложения должен быть написан так, чтобы не зависеть от настроек среды исполнения.

Согласен на все 100%.

PS. В Delphi много лет использовал HTMLLite - очень удобно для просмотра отчётов, вывода справки и т.п.
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Timid писал(а):По-возможности, код приложения должен быть написан так, чтобы не зависеть от настроек среды исполнения.

Вот именно - по возможности. :) А раз такой возможности нет, значит будем использовать то, что есть.
Nik писал(а):Ага, в Win по дефолту - корявый на всю голову IE, в Linux единственным может оказаться Konquer, про который мало кто из html-верстальщиков вообще знает.

Я бы не сказал, что IE такой уж корявый. К примеру FireFox 3.x меня полностью разочаровал, когда он перестал скачивать файлы с русскими именами, которые выложены на FTP в кодировке win1251. Конечно, можно обозвать хозяев FTP всякими нехорошими именами и не ходить больше к ним, но, увы, есть категорическое распоряжение работать именно с ним и ничего тут не поделаешь. Мало того, плагин FireFox'а не читает некоторые PDF'ки. Видимо что-то в файле, но что, я так и не нашёл. Надо заметить, что по второму пункту остальные браузеры (в частности кривой IE :) ) работают без малейших проблем. Как следствие, было рекомендовано отказаться от FireFox'а.
Nik писал(а):А вообще, имхо, пользователь не должен уходить за пределы программы

Зачастую это зависит от постановки задачи. К примеру я должен из своей программы включать и выключать определённый сервис. Или формировать отчёты для Excel. Можно, конечно, встать в позу и отказаться писать такую программу, но, опять же увы, хочется каждый день есть свой хлеб с маслом и красной икрой, поэтому отказаться никак нельзя.
Nik писал(а):(вы же не возьмётесь обрабатывать ошибки внешнего браузера?).

Ясен перец, что нет. :) Однако как ни крути, а проверять работу программы у заказчика надо и делать те или иные настройки в ОС, чтобы программа выполняла поставленную задачу.
****************
Если сказать в общем, то вызывает недоумение, что распространено мнение о том, что нужно писать программу, в которой всё есть и чтобы она ни от чего не зависела. Это невозможно в принципе. Как минимум программа зависит от операционной системы в которой она должна работать. Мало того, если в той же системе уже есть компоненты, которые отвечают поставленой задаче, зачем лезть из кожи вон, тратить время на написание собственной подобной компоненты, которую потом же ещё и придётся Бог весть сколько отлаживать. ;)
К примеру если по ходу задачи мне нужно формировать и показывать небольшие, в одну две странички, отчёты, то я не стану приклеивать к своей программе Lazreport, а загоню данные в HTML-файл и буду его показывать браузером по умолчанию. Дёшево и сердито. :) Точно так же и странички со всякими там css. Человек их уже смотрит в своём браузере заходя на всякие там сайты. Так на кой ляд лишать его привычной оболочки для просмотра (сиречь того самого браузера) в которой он уже давно освоился?
Аватара пользователя
Nik
энтузиаст
Сообщения: 573
Зарегистрирован: 03.02.2006 23:08:09
Откуда: Киров
Контактная информация:

Сообщение Nik »

Однако как ни крути, а проверять работу программы у заказчика надо и делать те или иные настройки в ОС, чтобы программа выполняла поставленную задачу.

В случаях, когда программа пишется под конкретного заказчика - это всё самой собой разумеется. Но если софт распространяется как Shareware, такой вариант не катит :)
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Nik писал(а):Но если софт распространяется как Shareware, такой вариант не катит

Значит Вы берёте недоделаные TWebBrowser и THTML и собственноручно доводите их до идеального состояния. :)
Аватара пользователя
Nik
энтузиаст
Сообщения: 573
Зарегистрирован: 03.02.2006 23:08:09
Откуда: Киров
Контактная информация:

Сообщение Nik »

Энтузиасты, занимающиеся доработкой THTMLViewer под новые версии Delphi, пытаются сделать свою версию совместимой с Lazarus. Поставились и откомпилировались компоненты без проблем, но при попытке откомпилировать пустой проект с THTML на форме Lazarus наглухо виснет (использую последний снапшот).

http://code.google.com/p/thtmlviewer/updates/list

Кто-нибудь ещё пробовал эти компоненты юзать?
Odyssey
энтузиаст
Сообщения: 580
Зарегистрирован: 29.11.2007 16:32:24

Сообщение Odyssey »

Я не пробовал, но за новость спасибо. Свежий проект, да ещё и активно разрабатываемый командой из 3 человек, внушает определённые надежды :)
Ответить