Форум: "Начинающим";
Текущий архив: 2009.10.25;
Скачать: [xml.tar.bz2];
ВнизTWebBrowser список ссылок ячейки таблицы Найти похожие ветки
← →
ford © (2009-09-03 12:05) [0]Здравствуйте!
На форме установлен компонент TWebBrowser, загружаю туда HTML
внутри есть такая табличка
<table class="grid" cellspacing="0">
<tr>
<th> </th>
<th>name</th>
<th>param</th>
<th>count</th>
<th>else</th>
<th colspan="2">doing</th>
</tr>
<tr class="inactive">
<td> </td>
<td nowrap>art</td>
<td nowrap>100%</td>
<td nowrap align="right">2</td>
<td>nothing</td>
<td colspan="2" align="center"><a href="/positions/clear/art">Clear</a></td>
</tr>
<tr>
<td> </td>
<td nowrap>canon</td>
<td nowrap>70%</td>
<td nowrap align="right">10</td>
<td>nothing</td>
<td><a href="/positions/add/1">add</a></td>
<td><a href="/positions/del/1">del</a></td>
</tr>
</table>
достаю текст ячеек таблицы следующим способом
ovTable := Web.OleObject.Document.all.tags("TABLE").item(1);
for i := 0 to (ovTable.Rows.Length - 1) do
begin
Form1.ListBox1.Items.Add("");
for j := 0 to (ovTable.Rows.Item(i).Cells.Length - 1) do
begin
Form1.ListBox1.Items[Form1.ListBox1.Items.Count-1]:=Form1.ListBox1.Items[Form1.ListBox1.Items.Count-1]+"|"+ovTable.Rows.Item(i).Cells.Item(j).InnerText;
end;
end;
с текстом все замечательно
но как вытащить из текущей ячейки ссылку ???
попробовал взять Children текущего IHTMLElement как IHTMDocument и взять его Links но как выяснилось
Children у всех ячеек = nil
можно конечно взять свойство InnerHTML
и парсить строку на наличие там ссылок, но не хочется изобретать велосипед, наверняка есть более изящный способ, например с использованием свойств и методов IHTMLElement
вытаскивать все ссылки из документа получается
но, в данном случае надо именно из ячейки т.к. по алгоритму, нажимать или нет на ссылку зависит от того что написано в других я чейках строки таблицы
← →
ford © (2009-09-03 14:40) [1]Хоть хтонибудь бы подсказал что Children это не что иное как IHTMLElementsCollection !!!!
в итоге код такой :
ovTable := Web.OleObject.Document.all.tags("TABLE").item(0);
for i := 0 to (ovTable.Rows.Length - 1) do
begin
Form1.ListBox1.Items.Add("");
for j := 0 to (ovTable.Rows.Item(i).Cells.Length - 1) do
begin
IDisp:=ovTable.Rows.Item(i).Cells.Item(j).Children;
IDisp.QueryInterface(IHTMLElementCollection,El);
ovLinks:=El.tags("a");
for k:=0 to ovLinks.Length-1 do
Begin
IDisp:=OvLinks.Item(k);
IDisp.QueryInterface(IHTMLElement,ch);
Form1.ListBox1.Items[Form1.ListBox1.Items.Count-1]:=Form1.ListBox1.Items[Form1.ListBox1.Items.Count-1]+"|"+ch.GetAttribute("href",1);
End;
Form1.ListBox1.Items[Form1.ListBox1.Items.Count-1]:=Form1.ListBox1.Items[Form1.ListBox1.Items.Count-1]+"|"+ovTable.Rows.Item(i).Cells.Item(j).InnerText;//+"("+ovTable.Rows.Item(i).Cells.Item(j).GetAttribute("href",0)+")";
end;
end;
так я получаю ссылку из выбранной ячейки таблицы
← →
Омлет (2009-09-03 15:26) [2]Мы дали тебе возможность самому разобраться. Здесь личностный рост превыше куска кода.
← →
ford © (2009-09-03 16:03) [3]
> Омлет (03.09.09 15:26) [2]
>
> Мы дали тебе возможность самому разобраться. Здесь личностный
> рост превыше куска кода.
если бы дали ссылку хотябы на кусок MSDN в котором все это написано
то я не потратил бы несколько часов на глупости
а как Вы выразились занимался бы дальнейшим "личностным ростом"
← →
Омлет (2009-09-03 16:10) [4]Если бы Вы не написали "Хоть хтонибудь бы подсказал", я бы не иронизировал. Честно )
← →
KilkennyCat © (2009-09-03 18:59) [5]
> если бы дали ссылку хотябы на кусок MSDN
ссылка MSDN находится легко.
> то я не потратил бы несколько часов
поиск в MSDN устроен просто
> на глупости
ты потратил не из-за нас
> занимался бы дальнейшим "личностным ростом"
фигня все это. в 2012 году мы все умрем.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.10.25;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.046 c