Елементи в TWebbrowser

15 отговора 367 прегледа
#1

Елементи в TWebbrowser

ами... проблема ми е че неможах да намеря литература относно моя проблем и затова питам тук. отварям с TWebBrowser определена страница и искам да правя проверки по елементите на страницата, по-точно: ако source-а на един имг. от страницата е ..., то.... пробвахб да намеря нещо от рода на WebBrowser1.elements. ... но няма такова нещо.

Windmaster
Отговор
в отговор на lceHot #2

Re: Елементи в TWebbrowser

Литература не ти трябва, ето кратко упътване:
1) елемента се достига с
WebBrowse.OleObject.document.element_id.property
2) за frames
WebBrowse.OleObject.document.frame_id.element_id.property
3) за forms
WebBrowse.OleObject.document.form_id.element_id.property
4) колекциите от елементи са както следва, например за линкове:
WebBrowse.OleObject.document.links [link_num].href

Една добра практика е да се ползва InterDev (от пакета Visual Studio 6) - там при писане на javascript може визуално да изследваш колекциите и свойствата на IE, после ги пренасяш в Delphi

чети и дишай по-леко
Отговор
в отговор на Pechenia #3

Re: Елементи в TWebbrowser

Pechenia, благодаря за помоща, но явно аз нещо немога да се справя, ако ти можеш- щ сам ти много благодарен. Ето какво всъщност се опитвам да направя(на Delphi 6):
ето сорс на страницата, която се опитвам да обработвам:
В отговор на:



<form action="recruit.php" method="post" name="image_clickthrough_form">
<input type="hidden" name="uniqid" value="n74234f2">
<p>Click on the number shown in the image to proceed to <a href="stats.php?id=2874189">nemezius</a>'s Recruitment Center<p>




<img src="recruit.image.php?57280cc0d11a461cf641a1d001dc50e0" alt="Click on #"><p>
<table border="0" cellspacing="0" cellpadding="6">
<tr>
</tr>
<tr>
<td><input style="font-family: 'Century Schoolbook', 'Times New Roman', Serif; font-size: 24pt; height: 60; width: 60;" type="submit" value="1" name="image_click_value"></td>
<td><input style="font-family: 'Century Schoolbook', 'Times New Roman', Serif; font-size: 24pt; height: 60; width: 60;" type="submit" value="2" name="image_click_value"></td>
<td><input style="font-family: 'Century Schoolbook', 'Times New Roman', Serif; font-size: 24pt; height: 60; width: 60;" type="submit" value="3" name="image_click_value"></td>
<td><input style="font-family: 'Century Schoolbook', 'Times New Roman', Serif; font-size: 24pt; height: 60; width: 60;" type="submit" value="4" name="image_click_value"></td>

<td><input style="font-family: 'Century Schoolbook', 'Times New Roman', Serif; font-size: 24pt; height: 60; width: 60;" type="submit" value="5" name="image_click_value"></td>
</tr>
<tr>
<td><input style="font-family: 'Century Schoolbook', 'Times New Roman', Serif; font-size: 24pt; height: 60; width: 60;" type="submit" value="6" name="image_click_value"></td>
<td><input style="font-family: 'Century Schoolbook', 'Times New Roman', Serif; font-size: 24pt; height: 60; width: 60;" type="submit" value="7" name="image_click_value"></td>
<td><input style="font-family: 'Century Schoolbook', 'Times New Roman', Serif; font-size: 24pt; height: 60; width: 60;" type="submit" value="8" name="image_click_value"></td>
<td><input style="font-family: 'Century Schoolbook', 'Times New Roman', Serif; font-size: 24pt; height: 60; width: 60;" type="submit" value="9" name="image_click_value"></td>
<td><input style="font-family: 'Century Schoolbook', 'Times New Roman', Serif; font-size: 24pt; height: 60; width: 60;" type="submit" value="10" name="image_click_value"></td>
</tr>

<tr>
<td><input style="font-family: 'Century Schoolbook', 'Times New Roman', Serif; font-size: 24pt; height: 60; width: 60;" type="submit" value="11" name="image_click_value"></td>
<td><input style="font-family: 'Century Schoolbook', 'Times New Roman', Serif; font-size: 24pt; height: 60; width: 60;" type="submit" value="12" name="image_click_value"></td>
<td><input style="font-family: 'Century Schoolbook', 'Times New Roman', Serif; font-size: 24pt; height: 60; width: 60;" type="submit" value="13" name="image_click_value"></td>
<td><input style="font-family: 'Century Schoolbook', 'Times New Roman', Serif; font-size: 24pt; height: 60; width: 60;" type="submit" value="14" name="image_click_value"></td>
<td><input style="font-family: 'Century Schoolbook', 'Times New Roman', Serif; font-size: 24pt; height: 60; width: 60;" type="submit" value="15" name="image_click_value"></td>
</tr>
</table><input type="hidden" name="hash" value="">
</form>




целта ми е да задам променливата imgsource приема стойност адреса на
<img src="recruit.image.php?57280cc0d11a461cf641a1d001dc50e0" alt="Click on #">

т.е. да приеме това "recruit.image.php?57280cc0d11a461cf641a1d001dc50e0".
проблема е, че:
1)img-а не е именуван;
2)когато пробвам WebBrowse1.OleObject.document.image_clickthrough_form.img.source ми извежда съобщение, че няма такова нещо като "image_clickthrough_form"

Ако можеш- помогни, или ми препоръчай да прочета някъде нещо повече за това

Windmaster

Редактирано от lceHot на

Отговор
в отговор на lceHot #4

Re: Елементи в TWebbrowser

За твоя случай ще свърши работа:
document.images [0].src
Честно казано, аз не съм попадал на добро описание на Internet Explorer DOM досега, но мога да ти предложа два варианта:
1) отиваш на [линк], там има няколко линка за plug-ins към IE, които показват визуално структурата на една страница. Много добри отизиви има за IE DOM Inspector, само че е платен
2) Далеч по забавен, полезен и сигурен инструмент е InterDev, както вече казах. Какво направих аз за да реша твоя проблем:
2.1. Пуснах InterDev и отворих нов HTML файл, отидох в страницата Source
2.2. Копирах твоя HTML код в него (с десен бутон-> Paste as HTML)
2.3. Добавих следния код:
<script language='javascript'>
alert (document.images [ 0 ].src)
</script>
Още след "alert (document." получих падащо меню със свойствата на елемента document, в които фигурираше колекцията images. В твоя HTML картинката е първа, демек е с индекс 0. Добавих и свойството src, което ми трябваше.
2.4. Отидох в страницата Qiuck View, което фактически зареди и изпълни HTML-а и скрипта. Получих message box със
"file://C:\Temp\recruit.image.php?57280cc0d11a461cf641a1d001dc50e0"
което ми показа че съм готов с решението

Редактирано от Pechenia на

Отговор
в отговор на Pechenia #5

Re: Елементи в TWebbrowser

Точно това ми трябваше, благодаря че си отделил от времето си за един новак като мен, и за линка за литературата. Явно чак сега разбирам някои от добрите страни на InterDev

Windmaster
Отговор
в отговор на Pechenia #6

Re: Елементи в TWebbrowser

Използвах IE DOM Inspector и си ми даде инфото, зададох кода в Delphi 6, но...

Просто не се получава, и не се получава... аз ли нещо сам сбъркал?! не ми дава съобщения за глешки в кода, само това което е img-а...


Windmaster<P ID=&quot;edit&quot;><FONT class=&quot;small&quot;><EM>Редактирано от lceHot на 05.08.05 12:59.</EM></FONT></P>

Редактирано от lceHot на

Отговор
в отговор на lceHot #7

Re: Елементи в TWebbrowser

WebBrowser.Navigate (url) кара браузера да зареди дадена страница, но процеса на зареждане отнема време. След като страницата е заредена, се извиква метода WebBrowser.OnDocumentComplete, чак тогава можеш да взимаш данните. Има обаче една хватка - ако страницата е от няколко фрейма, OnDocumentComplete се извиква последователно за всеки фрейм.
Значи за твоя случай:

WebBrowser.OnDocumentComplete ...
...
Label.Caption:=WebBrowser.OleObject...

чети и дишай по-леко
Отговор
в отговор на Pechenia #8

Re: Елементи в TWebbrowser

еее, не, вече направо ми е неудобно , но сега пак ми изведе че:

това на какво се дължи, нали OleObject поддържа същия синтаксис както javascript?! да не би да трябва да добавя още нещо в uses? или да е нещо от версията ми на Delphi ( 6.0 )

Windmaster
Отговор
в отговор на lceHot #9

Re: Елементи в TWebbrowser

Не се шашкай, в случая аз съм те подвел, щото ме домързя тогава да си пусна Delphi-то.
Значи кода е следния:
ShowMessage (WebBrowser1.OleObject.document.images.item (0).src);
което е и коректния начин на писане в JavaScript. Лошото е, че IE-то пуска и двата синтаксиса със скрипта, а аз винаги обичам да пиша кратко

чети и дишай по-леко
Отговор
в отговор на Pechenia #10

Re: Елементи в TWebbrowser

много благодаря, успях да сглобя наи-накрая програмата. но като я ползван на друг компютър, на който няма Delphi, ми извежда тази грешка:
"exception EDBEngineError in module BBImageStoringApp.exe at 0008D97E. An error occurred while attempting to initialize the Borland Database Engine (error $2108)."
От това, че няма Делфи ли е, или от нещо друго?! използвам програмата в същата директория, на която е и на моя компютър

Windmaster
Отговор
в отговор на lceHot #11

Re: Елементи в TWebbrowser

> От това, че няма Делфи ли е, или от нещо друго?!

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

Mixy
Отговор
в отговор на Mixy #12

Re: Елементи в TWebbrowser

а мойе ли да се инсталира само DBE?

Windmaster
Отговор
в отговор на lceHot #13

Re: Елементи в TWebbrowser

използвам Paradox7. може ли да се инсталира само BDE и как? Ако не- как мога да създам независима от БДЕ базаданни?

начинаещ съм, но всеки е започнал така
Отговор
в отговор на lceHot #14

Re: Елементи в TWebbrowser

Не мога да намеря дискусията за базите данни, но в резюме имаш две възможности:
1) Да си направиш базата с MS Access (част от MS Office). Получава се един MDB файл, с него се работи с компонентите от страница ADO. Ще работи без никакви инсталации на всички машини с Windows 2000&XP, както и на други с инсталирано ADO - например с MS Office
2) Да си инсталираш Firebird и IBExpert (редактора за бази данни).
Лично аз ти препоръчвам 1 вариант - няма да се налага поне в началото да се бориш с транзакциите

чети и дишай по-леко
Отговор
в отговор на lceHot #15

Можеш..

Макар че предложението на pechenia е по-добро, все пак можеш да си инсталираш само BDE - например влизаш в [линк] там си пише всичко - късмет :)

Отговор
в отговор на VladoVasilev #16

Re: Можеш..

In accordance with the Additional License Terms for BDE,
you may distribute the BDE files with your application
using an INPRISE-certified Redistributable Install program
such as InstallShield Express or another compliant install
program. You may redistribute only those BDE files selected
by the INPRISE-certified installation program.


See the BDE Links deployment notes in the file
BDEDEPLOY.TXT (found in the BDE directory) for specific
information regarding deploying the BDE with database
applications created in Delphi.

Отговор