HTML-страница состоит из двух фреймов: левого фрейма содержания «contents» и правого фрейма «mainFrame».
Как правило, размеры страницы находящейся в правом фрейме «mainFrame » бываю велики. Возникает необходимость срыть левый фрейм «contents».
Пытаюсь сделать это так:
var
HTML_Doc: IHTMLDocument2;
oWindow: IHTMLWindow2;
oBody: IHTMLBodyElement;
oRange: IHTMLTxtRange;
oFrame: OleVariant;
В событии TWebBrowser.OnDocumentComplete пишу следующий код:
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
var
i: integer;
Label Lab1 ;
begin
IsFrameCont := false;
HTML_Doc := WebBrowser1.Document As IHTMLDocument2;
if (HTML_Doc <> nil) then
begin
oWindow := HTML_Doc.parentWindow As IHTMLWindow2;
if (oWindow.frames.Get_length > 1) then
//страница с фреймами
begin
//определяем начальный фрейм
for i := 0 to oWindow.frames.Get_length - 1 do
begin
index_frame := i;
try
name_frame := oWindow.frames.item(index_frame).name;
except
Exit;
end;
if (name_frame = '') then
goto Lab1
else
begin
Search_frame := oWindow.frames.item(index_frame).name;
if Pos('contents', AnsiLowerCase(Search_frame)) > 0 then
begin
oFrame := oWindow.frames.item(index_frame);
IsFrameCont := true;
end;
if Pos('main', AnsiLowerCase(Search_frame)) > 0 then break;
end;
end;
try
IsFrame := true;
oRange1 := oWindow.frames.item(index_frame).document.body.createTextRange;
except
Exit;
end;
end
else
//нет фреймов
begin
Lab1:
try
begin
oBody := HTML_Doc.get_body As IHTMLBodyElement;
if (oBody <> nil) then oRange := oBody.createTextRange;
end
except
Exit;
end;
IsFrame := false;
end;
end;
if (PosText) AND (HTML_Doc.Get_readyState='complete') then
begin
SearchInHtml(Form1.FindText);
PosText := false;
end;
end;
В событии нажатия кнопки управления размером фрейма пытаюсь изменить его размер:
procedure TForm1.Button1Click(Sender: TObject);
var str: AnsiString;
begin
if IsFrameCont then
begin
if MinFrame = false then
begin
oFrame.cols := '0,*';
MinFrame := true;
end
else
begin
oFrame.cols := '175,*';
MinFrame := false;
end;
end;
end;
Delphi сообщают, что Ole-объект не поддерживает данное свойство.
Подскажите, как быть?