Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: ActiveX/СОМ/CORBA > Проблема со скрытием скроллбаров в TWebBrowser


Автор: midavik 25.6.2007, 15:41
загружаю в TWebBrowser страницы. В событии OnDocumentComplete TWebBrowser-а скрываю вертикальный и горизонтальный скроллбар.

Код работает, но почему-то не на всех страницах скрываются скроллбары.

Если кто знает как исправить ситуацию прошу подсказать.


переменные HideScrollBarX и HideScrollBarY имеют значение true
Код

procedure TForm1.HideScrollBars;
begin
 if HideScrollBarX then
 wb.OleObject.Document.Body.Style.OverflowX := 'hidden';
 if HideScrollBarY then
 wb.OleObject.Document.Body.Style.OverflowY := 'hidden';
end;
//------------------------------------------------------------------------------
procedure TForm1.WB_DocumentComplete(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
var
  CurWebrowser: IWebBrowser;
  TopWebBrowser: IWebBrowser;
  Document: OleVariant;
  WindowName: string;
begin
 if (URL <> 'about:blank') and (URL <> '') then
  begin
   CurWebrowser := pDisp as IWebBrowser;
   TopWebBrowser := (Sender as TWebBrowser).DefaultInterface;
   if CurWebrowser = TopWebBrowser then
    begin
     HideScrollBars;
     sleep(1000);
     //Дальнеший код
    end;
  end
end;

Автор: Sanchezzz 24.8.2007, 23:40
Код

function WB_DocumentLoaded(WB: TWebbrowser): Boolean;
var
  iDoc: IHtmlDocument2;
begin
  Result := False;
  if Assigned(WB) then
  begin
    if WB.Document <> nil then
    begin
      WB.ControlInterface.Document.QueryInterface(IHtmlDocument2, iDoc);
      Result := Assigned(iDoc);
    end;
  end;
end;


procedure WB_ShowScrollBar (WB: TWebbrowser; Value: boolean);
begin
  if WB_DocumentLoaded(WB) then
    if Assigned((WB.Document as IHTMLDocument2).body) then
      if Value then
        (WB.Document as IHTMLDocument2).body.style.overflow := 'hidden'
      else
        (WB.Document as IHTMLDocument2).body.style.overflow := '';
end;

// пример 
WB_ShowScrollBar(GetCurrentWB, true); //  или CheckBox1.Checked



Автор: tavla 8.11.2007, 21:56
а можете подсказать, в чем моя ошибка?
никак не исчезает вертикальная полоса.

Код

procedure TWbBros.WebBrowser1DocumentComplete(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
var
..............

begin
Doc := IHTMLDocument2( TWebBrowser( Sender ).Document );
Doc.body.style.overflow := 'hidden';
..............

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)