Как заменить стиль в Twebbrowser

Тема в разделе "Delphi - СОМ", создана пользователем AlexSuv, 23 янв 2007.

  1. AlexSuv

    AlexSuv Гость

    Можно ли каким-то образом заменить один стиль на другой или изменить элемент стиля внутри TWebBrowser не обновляя весь объект т.е. работать должно все очень быстро.

    Например имем HTML документ загруженный в WebBrowser и содержащий стиль
    table table {background-color: rgb(255,0,0)},
    а надо его заменить например на table table {background-color: rgb(255,255,255)}

    сами названия стилей менятся не будут, только элементы внутри, хотя если можно
    заменить весь стиль (<style> ... </style>) тоже было бы неплохо.

    Помогите плиз, вроде задачка простая, а решения ни как не найду.

    Максимум что удалось найти это типа:

    WebBrowser1.OleObject.Document.all.tags('TABLE').item(0).style.backgroundColor := clRed

    работает мгновенно, но мне прийдется менять стили типа table table table tr ... и вычислять пути, что оооочень неудобно и коряво, должен же быть простой способ типа:

    WebBrowser1.OleObject.Document.styles[3].InnerHtml := 'table table {background-color: rgb(255,255,255)}'

    неужели такого нет. :)
     
  2. AlexSuv

    AlexSuv Гость

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

    Короче решение простое:

    Код (Text):
    Var
    sh : OleVariant;
    begin
    sh := WebBrowser1.OleObject.Document.styleSheets.item(3);//3 это порядковый номер стиля в коллекции
    sh.cssText := 'table table table {border-color: rgb(255,255,255) !important;}';
    End;
    Заменяет 4-й по порядку стиль (он у меня последний) на этот код и все равботает без обновления самого вебброузера - быстро и комфортно
     
Загрузка...

Поделиться этой страницей