Форум: "Сети";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизСломал голову на фреймах в TWebBrowser :( Помогите... Найти похожие ветки
← →
ForumReader (2009-05-04 09:52) [0]День добрый, уважаемые!
Задача в 2х словах: есть страница, в ней 2 фрейма. Нужно динамически (не перазагружая полностью контент) изменить высоту фреймов (в % от высоты экрана).
Код главной страницы вот:
<html><head></head>
<frameset rows="*, 50%" frameborder="0" framespacing="0">
<frame name="primary" src="primary.php" scrolling="no"></frame>
<frame name="secondary" src="secondary.php" scrolling="no"> </frame>
</frameset>
<body></body></html>
что я делал, чтобы изменить данную страницу:
doc: IHtmlDocument2;
v : Variant;
...
webBrowser.ControlInterface.Document.QueryInterface(IHtmlDocument2, doc);
v := VarArrayCreate([0, 0], varVariant);
v[0]:="html с подкорретированным "...<frameset rows="*, 50%" ...";
doc.Write(PSafeArray(TVarData(v).VArray));
doc.close;
Так вот, размер фреймов меняется, но! загруженные страницы исчезают, остается белый экран :(
Помогите изменить динамически высоту фреймов, которые уже загружены в TWebBrowser :(
Заранее благодарен.
← →
ForumReader (2009-05-05 07:06) [1]Товарищи! Я даже заплачУ за решение данной задачки :)
← →
ForumReader (2009-05-06 11:30) [2]... и даже не мало заплачУ :(
никто вообще не шарит? :\
← →
Сергей М. © (2009-05-06 12:41) [3]
> что я делал, чтобы изменить данную страницу
В обработчике какого события ты делаешь это ?
← →
ForumReader (2009-05-06 12:52) [4]
> В обработчике какого события ты делаешь это ?
Страница полностью загружена, нажимаю на форме кнопку и в ее обработчике пишу этот код.. Он как бы работает, но контент загруженный пропадает полностью. Остается разделение экрана на эти 2 фрейма и белый экран :\
Но я ТОЧНО знаю, что это возможно, ибо видел работающие примеры :(
← →
Palladin © (2009-05-06 13:19) [5]а если указать полный src, а не относительный ?
← →
Сергей М. © (2009-05-06 13:34) [6]
<html><head></head>
<frameset name="myframeset" rows="*, 50%" frameborder="0" framespacing="0">
<frame name="primary" src="http://google.ru" scrolling="no"></frame>
<frame name="secondary" src="http://www.delphimaster.ru" scrolling="no"> </frame>
</frameset>
<body></body></html>
procedure TForm1.WebBrowserDocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
begin
memo.Lines.Add("DocumentComplete - " + URL);
webbrowser.ControlInterface.Document.QueryInterface(IHtmlDocument2, doc);
(doc.all.item("myframeset", 0) as IHTMLFrameSetElement).rows := "*, 30%";
end;
← →
Сергей М. © (2009-05-06 14:08) [7]
> Я даже заплачУ
Изволь сдержать слово и выполнить обещание)
Клади сюда:
WebMoney: R288065700395
> и даже не мало заплачУ
Ту же сумму, но сюда:
WebMoney: E435338015555
))
← →
ForumReader (2009-05-06 14:44) [8]Сергей, я от своих слов не отказываюсь и денежка однозначно будет, но есть маааленькое "но", у меня frameset не имеет имени :(
Он выглядит именно так, как указано в первом сообщении...
← →
Сергей М. © (2009-05-06 15:51) [9]
> frameset не имеет имени
Что мешает его задать ?
И даже если такой возможности нет, пример приведет для илююстрации того, в какой момент времени следует модифицировать документ - после его загрузки, но до того как браузер начнет интерпретировать образованное после загрузки и парсинга дерево объектов загружененого документа.
Вот тебе тоже самое, но для анонимного фреймсета:procedure TForm1.WebBrowserDocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
var
Collection: IHTMLElementCollection;
Frameset: IHTMLFrameSetElement;
begin
// memo.Lines.Add("DocumentComplete - " + URL);
webbrowser.ControlInterface.Document.QueryInterface(IHtmlDocument2, doc);
Collection := doc.all.tags("frameset") as IHTMLElementCollection;
Frameset := Collection.Item(0, 0) as IHTMLFrameSetElement;
Frameset.rows := "*, 30%";
end;
← →
ForumReader (2009-05-06 16:01) [10]Как хорошо быть умным (утирает слезу).
Сергей, СПАСИБО! Через 2 часа переведу денег, будет мало - скажешь :)
Оно работает... Блин :)
← →
Сергей М. © (2009-05-06 16:23) [11]Ну и последний "причесывающий" штрих:
var
MyURL: String;
procedure TForm1.Button6Click(Sender: TObject);
begin
MyURL := AnsiUpperCase("c:\test.html");
WebBrowser.Navigate("c:\test.html");
end;
procedure TForm1.WebBrowserDocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
var
Document: IHtmlDocument2;
Collection: IHTMLElementCollection;
Frameset: IHTMLFrameSetElement;
begin
if AnsiUpperCase(URL) <> MyURL then Exit; //нет никакого резона повторять одно и то же 3 раза
Document := Webbrowser.ControlInterface.Document as IHtmlDocument2;
Collection := Document.All.Tags("frameset") as IHTMLElementCollection;
Frameset := Collection.Item(0, 0) as IHTMLFrameSetElement;
Frameset.rows := "*, 30%";
end;
← →
Сергей М. © (2009-05-06 19:40) [12]
> Через 2 часа переведу денег
Все в порядке.
Приятно иметь дело с джентльменом !
← →
Igor2010 (2009-05-06 20:59) [13]
> и даже не мало заплачУ
безобразие.......
← →
Семен (2010-02-12 11:08) [14]Сергей М у меня к вам есть несколько вопросов, за которые я так же готов заплатить. Вы могли связаться со мной по аське 353575160
← →
Сергей М. © (2010-02-13 12:42) [15]ICQ UIN 353575160 не найден ..
Уточни или укажи иные координаты
← →
DVM © (2010-02-14 14:59) [16]
> Сергей М. ©
Пора создавать платный раздел форума "Спросите у Сергея М." :)
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.067 c