Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 Самый простой HTMLView  [new]
alekcvp
Member

Откуда:
Сообщений: 1103
Собственно нужен сабж с целью отображения примитивного HTML с интегрированными картинками (<img src="data:image/png;base64,...">).

Из того что пробовал:
  • TWebBrowser - почти идеальный вариант, но он пытается переходить по ссылкам (даже в автономном режиме), а мне надо чтобы был только просмотр и никакого интерактива.
  • THTMLViewer - когда что-то меняется и изменяется размер окна THTMLViewer - отрисовка начинает "подтормаживать" и мерцать (причём не только у него, а у всей формы), мне это не нравится.
  • DelphiCEF 3/4 - размер дополнительных библиотек, которые необходимо таскать с приложением (50+ мегабайт), не радует вообще, так что даже пробовать не стал.

    Может кто-то ещё что-нибудь посоветует? Бесплатное или с адекватной ценой для некоммерческого ПО (1-2к деревянных).
  • 4 июн 18, 13:54    [21466510]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    defecator
    Member

    Откуда:
    Сообщений: 38703
    THTMLViewer или THTMLFrame
    ничего не тормозит и не моргает
    4 июн 18, 14:00    [21466536]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    alekcvp
    Member

    Откуда:
    Сообщений: 1103
    defecator,
    Именно у них и подтормаживает.
    4 июн 18, 14:02    [21466552]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    defecator
    Member

    Откуда:
    Сообщений: 38703
    alekcvp
    defecator,
    Именно у них и подтормаживает.

    ни разу не видел такого эффекта
    4 июн 18, 14:09    [21466565]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    alekcvp
    Member

    Откуда:
    Сообщений: 1103
    defecator,

    Без него (кликабельно):
    Картинка с другого сайта.

    С ним:
    Картинка с другого сайта.
    4 июн 18, 14:21    [21466619]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    Гаджимурадов Рустам
    Member

    Откуда:
    Сообщений: 59218
    alekcvp> Из того что пробовал:

    А либа Свириденкова сабж не умеет?

    Posted via ActualForum NNTP Server 1.5

    4 июн 18, 14:25    [21466638]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    alekcvp
    Member

    Откуда:
    Сообщений: 1103
    У меня такое ощущение, что он, при изменении размеров, вместо Invalidate делает принудительный Repaint всей форме...
    4 июн 18, 14:25    [21466644]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    alekcvp
    Member

    Откуда:
    Сообщений: 1103
    Гаджимурадов Рустам
    А либа Свириденкова сабж не умеет?

    Там цена не для физлиц :)
    4 июн 18, 14:26    [21466647]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    alekcvp
    Member

    Откуда:
    Сообщений: 1103
    В принципе, я буду полностью счастлив (по этому вопросу) если мне кто-нибудь подскажет: как в TWebBrowser запретить любой интерактив со страницей, кроме прокрутки.
    4 июн 18, 14:28    [21466664]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    defecator
    Member

    Откуда:
    Сообщений: 38703
    alekcvp
    defecator,

    Без него (кликабельно):
    Картинка с другого сайта.

    С ним:
    Картинка с другого сайта.


    смотри, а у меня ничего не моргает
    4 июн 18, 14:40    [21466753]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    alekcvp
    Member

    Откуда:
    Сообщений: 1103
    defecator
    смотри, а у меня ничего не моргает

    Ну тогда расскажи как ты этого добился. У меня панель, на которой кнопки лежат - DoubleBuffered, причём в эту панель встроен фрейм, а уже на нём - кнопки и всё прочее. Всю форму DoubleBuffered делать бы не хотелось, оно в Vcl несколько глючное.
    4 июн 18, 14:43    [21466767]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    чччД__
    Guest
    alekcvp
    В принципе, я буду полностью счастлив (по этому вопросу) если мне кто-нибудь подскажет: как в TWebBrowser запретить любой интерактив со страницей, кроме прокрутки.


    Я ни разу не пользовался TWebBrowser, но 2 мин экспериментов:

    В OnBeforeNavigate2():

     Cancel := URL <> 'http://sql.ru/'
    
    4 июн 18, 14:43    [21466769]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    defecator
    Member

    Откуда:
    Сообщений: 38703
    alekcvp
    defecator
    смотри, а у меня ничего не моргает

    Ну тогда расскажи как ты этого добился. У меня панель, на которой кнопки лежат - DoubleBuffered, причём в эту панель встроен фрейм, а уже на нём - кнопки и всё прочее. Всю форму DoubleBuffered делать бы не хотелось, оно в Vcl несколько глючное.

    я же говорю, что никогда у меня не моргало, а у тебя, может быть, не HTMLViewer виноват,
    а то, на чём он лежит - оно и заставляет перерисоваться фсю форму, например.

    Вот мой проект, там и нет ничего

    К сообщению приложен файл (Test_HTMLViewer.zip - 60Kb) cкачать
    4 июн 18, 14:46    [21466780]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    alekcvp
    Member

    Откуда:
    Сообщений: 1103
    чччД__
    В OnBeforeNavigate2():

    Ага, а OnPopupMenu() у него нету и пустое назначить не помогает...
    4 июн 18, 14:53    [21466809]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    чччД__
    Guest
    alekcvp
    чччД__
    В OnBeforeNavigate2():

    Ага, а OnPopupMenu() у него нету и пустое назначить не помогает...


    А тут что за проблема?
    4 июн 18, 15:00    [21466865]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    alekcvp
    Member

    Откуда:
    Сообщений: 1103
    defecator
    я же говорю, что никогда у меня не моргало, а у тебя, может быть, не HTMLViewer виноват,
    а то, на чём он лежит - оно и заставляет перерисоваться фсю форму, например.
    Вот мой проект, там и нет ничего

    Да, походу это из-за Align такие мигания были, сделал фрейму фиксированное положение - мерцать перестало.
    4 июн 18, 15:11    [21466910]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    alekcvp
    Member

    Откуда:
    Сообщений: 1103
    чччД__
    alekcvp
    пропущено...
    Ага, а OnPopupMenu() у него нету и пустое назначить не помогает...

    А тут что за проблема?

    Всплывающее меню же, стандартное для IE. Но я уже решил проблему с THtmlViewer, спасибо.
    4 июн 18, 15:12    [21466913]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    defecator
    Member

    Откуда:
    Сообщений: 38703
    alekcvp
    defecator
    я же говорю, что никогда у меня не моргало, а у тебя, может быть, не HTMLViewer виноват,
    а то, на чём он лежит - оно и заставляет перерисоваться фсю форму, например.
    Вот мой проект, там и нет ничего

    Да, походу это из-за Align такие мигания были, сделал фрейму фиксированное положение - мерцать перестало.


    ну вот, видишь, а ты сразу на HTMLViewer грешил ! Картинка с другого сайта.
    4 июн 18, 15:13    [21466918]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    Гаджимурадов Рустам
    Member

    Откуда:
    Сообщений: 59218
    alekcvp> Там цена не для физлиц :)

    Да ну что ты как маленький.
    Напиши, попроси скидку.
    В благодарность пообещай
    саксесс-стори написать, сюда
    и на сайт. Все будут довольны.

    Posted via ActualForum NNTP Server 1.5

    4 июн 18, 15:17    [21466945]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    чччД__
    Guest
    alekcvp
    чччД__
    пропущено...

    А тут что за проблема?

    Всплывающее меню же, стандартное для IE...


    Непонятно, чем плохо меню IE, ну ладно:


    http://www.delphidabbler.com/articles?article=18&part=4
    https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/platform-apis/aa770042(v=vs.85)
    4 июн 18, 15:19    [21466958]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    чччД__
    Guest
    чччД__
    alekcvp
    пропущено...

    Всплывающее меню же, стандартное для IE...


    Непонятно, чем плохо меню IE, ну ладно:


    http://www.delphidabbler.com/articles?article=18&part=4
    https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/platform-apis/aa770042(v=vs.85)


    Блин, да вообще полно инфы по TWebBrowser...
    4 июн 18, 15:21    [21466967]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    Dimonka
    Member

    Откуда:
    Сообщений: 1073
    Есть ещё такая штука:

    https://sciter.com/
    https://sciter.com/sciter-delphi-wrapper/

    Компактная и неплохо работает. Правда практической инфы мало.
    4 июн 18, 16:17    [21467202]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    alekcvp
    Member

    Откуда:
    Сообщений: 1103
    Dimonka,

    Прикольная штука, но странно что при заявленной поддержке HTML5 он не знает, что после </div> идёт перенос строки...
    4 июн 18, 17:08    [21467399]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    Dimonka
    Member

    Откуда:
    Сообщений: 1073
    alekcvp
    Dimonka,

    Прикольная штука, но странно что при заявленной поддержке HTML5 он не знает, что после </div> идёт перенос строки...
    Ну так это зависит от дефолтовых настроек, наверное. Укажи правильный "display" для своего и будет тебе перенос.
    4 июн 18, 17:10    [21467410]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    alekcvp
    Member

    Откуда:
    Сообщений: 1103
    Dimonka,
    Да нет, я просто примеры позапускал, которые с ним идут. Ни один не отрисовал тестовый HTML правильно.
    4 июн 18, 17:19    [21467451]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    Квейд
    Member

    Откуда: Kyiv, Ukraine
    Сообщений: 5076
    Dimonka
    Есть ещё такая штука:

    https://sciter.com/
    https://sciter.com/sciter-delphi-wrapper/

    Компактная и неплохо работает. Правда практической инфы мало.
    https://habr.com/post/154697/
    4 июн 18, 17:20    [21467456]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    kealon(Ruslan)
    Member

    Откуда: Нижневартовск
    Сообщений: 3312
    alekcvp
    Dimonka,
    Да нет, я просто примеры позапускал, которые с ним идут. Ни один не отрисовал тестовый HTML правильно.

    напиши создателю, может глюк
    4 июн 18, 19:58    [21467767]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    c-smile
    Member

    Откуда:
    Сообщений: 8
    alekcvp
    Dimonka,

    что после </div> идёт перенос строки...



    Пример теста в студию.
    11 июн 18, 20:00    [21484939]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    alekcvp
    Member

    Откуда:
    Сообщений: 1103
    c-smile,

    Ну я тестировал на этом, первое что под руку попалось.
    11 июн 18, 20:28    [21484957]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    c-smile
    Member

    Откуда:
    Сообщений: 8
    alekcvp
    Ну я тестировал на этом, первое что под руку попалось.


    В HTML5 нет элемента <font>. Он еще в HTML4 был deprecated.

    Поэтому он интерпретируется неоднозначно в sciter.

    Или добавь вначале того документа это вот:

    <style>
      font { display:contents; }
    </style>
    


    Или убери первый <font> отсюда:

    <font size=2 color="#000000" face="Arial">
    <h1><font size=2 color="#000000" face="Arial"><font size=4><b>Web location</b></font></font></h1>
    


    <font> (inline element) согласно последней версии где он поддерживался (HTML3.2, circa 1997), может содержать только inline элементы. Но не блоки типа <h1>, <div> и пр.
    12 июн 18, 06:18    [21485390]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    asviridenkov
    Member

    Откуда:
    Сообщений: 3813
    c-smile
    В HTML5 нет элемента <font>. Он еще в HTML4 был deprecated.


    Критерий истины тут не документы а браузеры, если они отображают правильно, нужно отображать так же.

    c-smile
    Или добавь вначале того документа это вот:
    ...
    Или убери первый <font> отсюда:


    Опят же, работать все должно по принципу браузеров - "жри что дают". Неправильная вложенность тегов, отсутствие закрытых тегов, broken атрибуты, двойные body, неверная кодировка и прочее не должно влиять на отображение документа.
    12 июн 18, 12:18    [21485720]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    alekcvp
    Member

    Откуда:
    Сообщений: 1103
    c-smile
    Или добавь вначале того документа это вот:

    ... мне просмотрщик нужен был чтобы отображать автоматически-сгенерированные страницы, типа той, что я выше показал. И их будет много, так что каждую руками править я не буду. Да и я, в итоге, нашёл что искал.
    12 июн 18, 12:25    [21485729]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    alekcvp
    Member

    Откуда:
    Сообщений: 1103
    asviridenkov
    Опят же, работать все должно по принципу браузеров - "жри что дают". Неправильная вложенность тегов, отсутствие закрытых тегов, broken атрибуты, двойные body, неверная кодировка и прочее не должно влиять на отображение документа.

    Справедливости ради, sciter, как я понял, позиционирует себя не как браузер, а как UI-фреймворк, а там можно задавать более жёсткие требования к документу, т.к. источник этих документов - тот же программист, который пишет приложение, а не не пойми кто из интернетика.
    12 июн 18, 12:29    [21485735]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    c-smile
    Member

    Откуда:
    Сообщений: 8
    alekcvp
    c-smile
    Или добавь вначале того документа это вот:

    ... мне просмотрщик нужен был чтобы отображать автоматически-сгенерированные страницы, типа той, что я выше показал. И их будет много, так что каждую руками править я не буду. Да и я, в итоге, нашёл что искал.



    В sciter документам можно задавать внешний CSS:


    <frame src="file://.../some.htm" content-style="file://…/customization.css" />
    


    В этом customization.css можно прописать все что надо:

    font { display:contents; }
    font[size=2] { font-size;10pt; }
    



    Т.е. "снаружи" - не трогая сам документ.
    12 июн 18, 17:45    [21486462]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    asviridenkov
    Member

    Откуда:
    Сообщений: 3813
    c-smile

    Т.е. "снаружи" - не трогая сам документ.


    Ну да, что стоит для каждого документа написать ручками нужный CSS )
    12 июн 18, 18:12    [21486501]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    c-smile
    Member

    Откуда:
    Сообщений: 8
    Зачем для каждого? Вопрос же был в том что есть набор сгенерированных документов чем-то совсем древним - не знающим про CSS.

    Вот для этого набора и можно подложить "облагораживающий" CSS.


    Ну в самом деле что такое <font size=2>, два попугая? Да на high-dpi мониторе например ...
    13 июн 18, 00:13    [21487089]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    asviridenkov
    Member

    Откуда:
    Сообщений: 3813
    c-smile
    Ну в самом деле что такое <font size=2>, два попугая? Да на high-dpi мониторе например ...


    font size="2" соответсвует CSS font-size: small, с ним вопросов не возникает? Вообще, как я уже говорил, тут критерий истины - браузеры. Если они что-то поддерживают и отображают одинаково, то вопросов быть не должно. Про попугаи тоже странно слышать, как известно, в браузерах пиксель это величина условная, и HighDPI ему не помеха.
    13 июн 18, 00:25    [21487098]     Ответить | Цитировать Сообщить модератору
     Re: Самый простой HTMLView  [new]
    c-smile
    Member

    Откуда:
    Сообщений: 8
    asviridenkov
    font size="2" соответсвует CSS font-size: small, с ним вопросов не возникает?


    Вопросы не возникают только в том случае если в browser в defaults прописано

    font[size=2] { font-size: small; }
    font[size=3] { font-size: normal; }
    ...
    


    Но

    MDN
    <font> - Obsolete

    This feature is obsolete. Although it may still work in some browsers, its use is discouraged since it could be removed at any time. Try to avoid using it.


    Т.е. сегодня оно есть, а завтра, с очередным Windows update, его нет.

    asviridenkov
    Вообще, как я уже говорил, тут критерий истины - браузеры. Если они что-то поддерживают и отображают одинаково, то вопросов быть не должно.


    Если документ разработан сугубо для браузера, то только в нем браузере нужно его смотреть.
    Но это как-то не соответствует "Самый простой HTMLView" цели.


    asviridenkov
    Про попугаи тоже странно слышать, как известно, в браузерах пиксель это величина условная, и HighDPI ему не помеха.


    Да, CSS pixel есть 1/96 inch, т.е. логический length unit. Описать что-то толщиной в 1 физический пиксел в браузере невозможно. Это одна из причин почему браузерные движки так коряво себя ведут в desktop UI.
    Но это не имеет отношения к font-size: small; проблеме ибо:


    MDN
    xx-small, x-small, small, medium, large, x-large, xx-large
    Absolute-size keywords, based on the user's default font size (which is medium).


    т.е. опять же "по воде виляно" - т.е. зависит от настроек юзера в IE, т.е. в galaxy far, far away.

    Короче <font> убирать надо во избежание возгорания если не сейчас то завтра.
    13 июн 18, 04:51    [21487173]     Ответить | Цитировать Сообщить модератору
    Топик располагается на нескольких страницах: 1 2      [все]
    Все форумы / Delphi Ответить