Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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.071 c
2-1335260296
Вася
2012-04-24 13:38
2013.03.22
По какому событию пересчитывать рекордсет?


15-1332489521
ProgRAMmer Dimonych
2012-03-23 11:58
2013.03.22
Уникальность ключа


4-1259064819
Leonid Troyanovsky
2009-11-24 15:13
2013.03.22
Как заставить GUI thread создать нужное мне окно?


2-1328882938
Сергей
2012-02-10 18:08
2013.03.22
SimpleDataSet как обновить данные?


10-1181018110
Yriy
2007-06-05 08:35
2013.03.22
Проблема с Excel 2003





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский