Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: ActiveX/СОМ/CORBA > Координаты элемента формы


Автор: BUGOR 22.11.2006, 15:22
Есть небезизвестный компонент TWebBrowser, задача перечислить все формы на html странице, так же элементы форм и получить координаты последних(т.е. координаты элементов html формы).

Вот код, который перечилсяет все элементы:

Код

procedure TForm1.Button1Click(Sender: TObject);
var
Document: Variant;
ovE: OleVariant;
i,j:integer;
begin
  Document := WebBrowser1.Document;
  for j := 0 to Document.Forms.Length - 1 do
  begin
    ovE := Document.Forms.Item(j).Elements;
    for i := 0 to ovE.Length - 1 do
    begin
       // Вот тут надо получить координаты
    end;
  end;
end;


Есть свойство clientLeft(ovE.Item(i).clientLeft), казалось бы то, что доктор прописал, но эти свойства вовзращают значения в пределах 3, а мне надо как-то узнать координаты элемента html-формы относительно окна моей программы.

Автор: December 22.11.2006, 15:34
суммируй с clientLeft родителя просто

Автор: BUGOR 22.11.2006, 15:45
А под родителем ты что понимаешь? Если clientLeft формы, которую мы перечилсяем, то там вообще всегда 0 возваращется.

Автор: December 22.11.2006, 21:33
держи
Код

function GetElementTop(gEl:IHTMLElement):integer;
var
  pEl:IHTMLElement;
begin
result:=0;
pEl:=gEl;
while Assigned(pEl) and (pEl.tagName<>'HTML') do
  begin
  result:=result+pEl.offsetTop;
  result:=result-(pEl as IHTMLElement2).scrollTop;
  pEl:=pEl.offsetParent;
  end;//while
end;//GetElementTop


function GetElementLeft(gEl:IHTMLElement):integer;
var
  pEl:IHTMLElement;
begin
result:=0;
pEl:=gEl;
while Assigned(pEl) and (pEl.tagName<>'HTML') do
  begin
  result:=result+pEl.offsetLeft;
  result:=result-(pEl as IHTMLElement2).scrollLeft;
  pEl:=pEl.offsetParent;
  end;//while
end;//GetElementLeft

Автор: BUGOR 24.11.2006, 14:10
December, спасибо тебе огромное. Пожалуй, только на этом форуме встретишь таких модераторов, спасибо ещё раз и естественно +.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)