Html Table get Id/Name hakkında
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- adelphiforumz
- Üye
- Mesajlar: 602
- Kayıt: 01 Nis 2008 05:38
- Konum: İstanbul
Html Table get Id/Name hakkında
Selamlar
Browser üzerinden açtığım bir sayfadaki tabloyu IHTMLTable olarak alıyorum
bir satırdaki hücrenin Id yada Name özelliğine nasıl ulaşabilirim.
.getatribube('Id') olarak denedim değer boş geliyor
HTML üzerinden baktığımda her hücrenein bir ID ve Name özelliği var
Bu konuda yardımcı olabilieceklere şimdiden
teşekkürler
Browser üzerinden açtığım bir sayfadaki tabloyu IHTMLTable olarak alıyorum
bir satırdaki hücrenin Id yada Name özelliğine nasıl ulaşabilirim.
.getatribube('Id') olarak denedim değer boş geliyor
HTML üzerinden baktığımda her hücrenein bir ID ve Name özelliği var
Bu konuda yardımcı olabilieceklere şimdiden
teşekkürler
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Re: Html Table get Id/Name hakkında
hücrelerin id veya name varsa, getelementbyid veya name kullanarak ulaşabilirsiniz.
- adelphiforumz
- Üye
- Mesajlar: 602
- Kayıt: 01 Nis 2008 05:38
- Konum: İstanbul
Re: Html Table get Id/Name hakkında
Amacım zaten o hücrenin Id yada Name bilgisini almakLord_Ares yazdı:hücrelerin id veya name varsa, getelementbyid veya name kullanarak ulaşabilirsiniz.
Bu nedenle ID ve Name elimde yok
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Re: Html Table get Id/Name hakkında
HTML üzerinden baktığımda her hücrenein bir ID ve Name özelliği var
Elinizde Var mı yokmu inan şuan ben bile şaşırdım ilk mesajına bakarak getelementbyid veya name yine önericem.Eğer elinizde yoksa (yani her hücre sadece id siz div ile yapılmışsa ) ozaman html parse yöntemi ile almanız gerekecek. Sayfa yapısını paylaşırsanız yardım etmek isteyenler sizi daha net anlayabilir.Amacım zaten o hücrenin Id yada Name bilgisini almak Bu nedenle ID ve Name elimde yok
Kolay gelsin
- adelphiforumz
- Üye
- Mesajlar: 602
- Kayıt: 01 Nis 2008 05:38
- Konum: İstanbul
Re: Html Table get Id/Name hakkında
SelamlarLord_Ares yazdı:HTML üzerinden baktığımda her hücrenein bir ID ve Name özelliği varElinizde Var mı yokmu inan şuan ben bile şaşırdım ilk mesajına bakarak getelementbyid veya name yine önericem.Eğer elinizde yoksa (yani her hücre sadece id siz div ile yapılmışsa ) ozaman html parse yöntemi ile almanız gerekecek. Sayfa yapısını paylaşırsanız yardım etmek isteyenler sizi daha net anlayabilir.Amacım zaten o hücrenin Id yada Name bilgisini almak Bu nedenle ID ve Name elimde yok
Kolay gelsin
Runtimeda ulaştığım tablonun içerisinde her hücrenin bir ID ve Bir Name özelliği var
fakat kodu yazarken ben o hücrenin ID yada Name'ini bilmiyorum
Zaten amaçta hücreye verilen ID'sini ve Name'mini almaya çalışıyorum.
Yani elde etmek istediğim sonuç hücrenin ID ve Name'ini alabilmek.
Teşekkürler
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Re: Html Table get Id/Name hakkında
Selam
Form içerisindeki elementlere ulaşan javascript kodu delphiye kendiniz uyarlayabilirsiniz.
Form içerisindeki elementlere ulaşan javascript kodu delphiye kendiniz uyarlayabilirsiniz.
Kod: Tümünü seç
var dede='input'; // Form elemanlarının ortak adı input,button,select,textarea gibi ...
if (document.getElementsByTagName(dede).length!=0){
for (i = 0; i < document.getElementsByTagName(dede).length; i++) {
console.log('Name Değeri :' + document.getElementsByTagName(dede)[i].name + ' İd Değeri :' + document.getElementsByTagName(dede)[i].id);
}
}
Kalk ve işe yarar bir şey yap! Çünkü Allah (c.c.) yeniden başlayanların yardımcısıdır.
Re: Html Table get Id/Name hakkında
Paşam sanırım kafanız epey yoğun ki beni anlamadın )
Zaten siz bunu daha önce şu konuda yapmışsınız "if iE.tagName <> 'TABLE' then continue;" continue yerine edit1.text:= ie.element.name derseniz adına ulaşmış olursunuz. getElementsByTagName('Table') size table bulmanızda kolaylık sağlayacaktır onuda araştırabilirsiniz.
viewtopic.php?f=2&t=35306&p=190647&hili ... nt#p190647
Ayrıca farklı olarakta aşağıda Mrman üstadımızın çok güzel bir kod örneği var.
Formuna bir adet memo ve webbrowser ekle. Aşağıdaki kod sayfadaki elementlerin namelerini id nolarını ekleyecektir.
uses mshtml eklemeyi unutma.
Veya bu örnekteki gibi
Zaten siz bunu daha önce şu konuda yapmışsınız "if iE.tagName <> 'TABLE' then continue;" continue yerine edit1.text:= ie.element.name derseniz adına ulaşmış olursunuz. getElementsByTagName('Table') size table bulmanızda kolaylık sağlayacaktır onuda araştırabilirsiniz.
viewtopic.php?f=2&t=35306&p=190647&hili ... nt#p190647
Kod: Tümünü seç
function TfrmHtmTest.fn_HtmlFindTable(_hDoc : IHtmlDocument2; _hIdName : String): IHTMLTable;
var
hAllCollectin: IHTMLElementCollection;
I,
Len: Integer;
E: OleVariant;
iE : IHTMLElement;
hTable : IHTMLTable;
begin
Result := nil;
hTable := nil;
hAllCollectin := _hDoc.All;
if hAllCollectin = Nil then Exit;
Len := hAllCollectin.Length;
for I := 0 to Len - 1 do begin
E := hAllCollectin.Item(I, varEmpty);
iE := IDispatch(E) as IHTMLElement;
if iE.tagName <> 'TABLE' then continue;
if iE.id <> _hIdName then Continue;
hTable := (iE as IHTMLTable);
break;
end;
Result := hTable;
end;
Ayrıca farklı olarakta aşağıda Mrman üstadımızın çok güzel bir kod örneği var.
Formuna bir adet memo ve webbrowser ekle. Aşağıdaki kod sayfadaki elementlerin namelerini id nolarını ekleyecektir.
uses mshtml eklemeyi unutma.
Kod: Tümünü seç
procedure TForm1.BitBtn1Click(Sender: TObject);
Var
i,j : Integer;
begin
WebBrowser1.Navigate('http://divxplanet.com/');
while WebBrowser1.ReadyState <> ReadyState_Complete do Application.ProcessMessages;
Memo1.Lines.Clear;
if WebBrowser1.OleObject.Document.Frames.Length > 0 then begin
Memo1.Lines.Add('');
Memo1.Lines.Add('-----------------------------');
Memo1.Lines.Add('FRAMES bilgileri');
Memo1.Lines.Add('-----------------------------');
for i := 0 to WebBrowser1.OleObject.Document.Frames.Length - 1 do
begin
Memo1.Lines.Add( Format('WebBrowser1.OleObject.Document.Frames.Item(%d)', [i]) );
end;
end;
if WebBrowser1.OleObject.Document.Forms.Length > 0 then begin
Memo1.Lines.Add('');
Memo1.Lines.Add('-----------------------------');
Memo1.Lines.Add('FORMS bilgileri');
Memo1.Lines.Add('-----------------------------');
for i := 0 to WebBrowser1.OleObject.Document.Forms.Length - 1 do
begin
Memo1.Lines.Add( Format('WebBrowser1.OleObject.Document.Forms.Item(%d).Document.Body.InnerHTML', [i]) );
for j := 0 to WebBrowser1.OleObject.Document.Forms.Item(i).Elements.Length - 1 do begin
Memo1.Lines.Add( Format(' WebBrowser1.OleObject.Document.Forms.Item(%d).Elements.Item(%d).Name -> ''%s'' ', [i, j, WebBrowser1.OleObject.Document.Forms.Item(i).Elements.Item(j).Name ]) );
end;
end;
end;
ShowMessage('Bitti');
end;
Kod: Tümünü seç
var
Document: IHTMLDocument2;
Body: IHTMLElement2;
aList: IHTMLElementCollection;
a: IHTMLElement;
I: Integer;
link: string;
begin
if Supports(WebBrowser1.Document, IHTMLDocument2, Document) then
if Supports(Document.body, IHTMLElement2, Body) then
begin
aList := Body.getElementsByTagName('a');
for I := 0 to Pred(aList.length) do
begin
a := aList.item(I, EmptyParam) as IHTMLElement;
link := a.getAttribute('href', 0);
//...
end;
end;
end;
- adelphiforumz
- Üye
- Mesajlar: 602
- Kayıt: 01 Nis 2008 05:38
- Konum: İstanbul
Re: Html Table get Id/Name hakkında
Selamlar
Dediğiniz gibi biraz yoğunum ve uykusuzum bu nedenle kafamı toplayıp çözemedim bir türlü
belkide yapmak istediğimi tam olarakta anlatamamış olabilirim
ilginiz ve sabrınız için teşekkürler
Aşağıda yapmak istediğimi ve ulaşmak istediğimi detaylı bir şeklide nasıl yapmaya
çalıştığımı ve takıldığım noktayı kodla anlatmaya çalıştım
Somut ve net olan tek şey sayfanın yüklenme sonrasında Tablo adının sabit olması
bu gelen ekranda bazen 8-10 farklı tablo olabiliyor benim ise derdim tek bir tablonun içerisindeki işlemler
Tekrardan teşekkürler
Dediğiniz gibi biraz yoğunum ve uykusuzum bu nedenle kafamı toplayıp çözemedim bir türlü
belkide yapmak istediğimi tam olarakta anlatamamış olabilirim
ilginiz ve sabrınız için teşekkürler
Aşağıda yapmak istediğimi ve ulaşmak istediğimi detaylı bir şeklide nasıl yapmaya
çalıştığımı ve takıldığım noktayı kodla anlatmaya çalıştım
Somut ve net olan tek şey sayfanın yüklenme sonrasında Tablo adının sabit olması
bu gelen ekranda bazen 8-10 farklı tablo olabiliyor benim ise derdim tek bir tablonun içerisindeki işlemler
Tekrardan teşekkürler
Kod: Tümünü seç
function fn_HtmlFindTable(_hDoc : IHtmlDocument2; _hIdName : String; Const _sClassName : String = ''; const _sIcerik:String = ''): IHTMLTable;
var
hAllCollectin: IHTMLElementCollection;
I,
Len: Integer;
E: OleVariant;
iE : IHTMLElement;
hTable : IHTMLTable;
begin
Result := nil;
hTable := nil;
hAllCollectin := _hDoc.All;
if hAllCollectin = Nil then Exit;
Len := hAllCollectin.Length;
for I := 0 to Len - 1 do
begin
E := hAllCollectin.Item(I, varEmpty);
iE := IDispatch(E) as IHTMLElement;
if iE.tagName <> 'TABLE' then continue;
if _sClassName <> '' then
if iE._className <> _sClassName then
continue;
if _sIcerik <> '' then
if AnsiContainsStr(iE.innerHTML, _sIcerik) = False Then
continue;
if iE.id <> _hIdName then
Continue;
hTable := (iE as IHTMLTable);
break;
end;
Result := hTable;
end;
.....
.....
.....
procedure TfrmTest.Button4Click(Sender: TObject);
var
htmdoc : IHTMLDocument2;
Rows : IHTMLElementCollection;
Cells : IHTMLElementCollection;
Table : IHTMLTable;
Row : IHTMLTableRow;
Cell : IHTMLTableCell;
All : IHTMLElementCollection;
I, T, R, C : integer;
ov : OleVariant;
begin
Table := fn_HtmlFindTable((WB.Document as IHTMLDocument2), 'IdUrunTablosu');
{ ***** benim uyguladığım yöntem
ovTable := Table;
if Table <> nil then
begin
for R := 1 to (ovTable.Rows.Length - 2) do
begin
for C := 1 to (ovTable.Rows.Item(R).Cells.Length - 2) do
begin
Memo1.lines.add('Index->' + IntToStr(R)+':'+IntToStr(C) + '->'+ ovTable.Rows.Item(R).Cells.Item(C).innerHTML);
**** bu yöntemle yalnızc Id alabiliyorum Name'e ulaşamıyorum
end;
end;
end;
}
// ***** yapmaya çalıştığım yöntem
if Table <> nil then
begin
Rows := (Table.Rows as IHTMLElementCollection);
for R := 0 to Rows.length - 1 do
begin
Row := Rows.Item(ovR, R ) as IHTMLTableRow;
Cells := (Row.Cells as IHTMLElementCollection);
for C := 0 to Cells.length - 1 do
begin
Cell := Cells.Item(ovC, C ) as IHTMLTableCell;
********* Ben bu noktada Cell elemanının name yada Id değerine direkt ulaşmaya çalışıyorum
********* başaramadığım nokta burda
********* her satırın her hücresinin id ve name'i farklı verilmiş
********* name içerisinde bir kodlama şekli kullanılmış bu kodlama şeklini pars ederek isim içerisinden
********* başka bir veri elde ederek alt bir rutine yönelmeye çalışıyorum
********* Name kısmı SabitKod:SatirNo:DeğişkenDeğer:SabitKod:UrunId:SabitKod
********* Id kısmı SabitKod:SatirNo:DeğişkenGrupId:SabitKod:DegiskenAltGrupKod:SabitKod
********* şeklinde bölümlenmiş.
end;
end;
end;
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana