Einzelnen Beitrag anzeigen

Benutzerbild von Der.Kaktus
Der.Kaktus

Registriert seit: 22. Jan 2008
Ort: Erfurt
958 Beiträge
 
Delphi 7 Enterprise
 
#14

Re: Twebbrowser und Image klick... die xxx'te Variante

  Alt 2. Apr 2008, 11:08
Hallo, habe mit dem Code bissl rumgespielt aber ausser eine Zugriffsverletzung brachte es keinen Erfolg.

hier mal mein Codeschnippsel...vielleicht habe ich nen Denkfehler.

Delphi-Quellcode:
procedure TForm1.click_pic(s_pic:string);
var
  iDoc: IHtmlDocument2;
  i: integer;
  ov: OleVariant;
  iDisp: IDispatch;
  iColl: IHTMLElementCollection;
  InputImage: HTMLInputImage;
  r: TRect;
  tp:TPoint;
  Element: IHTMLElement;

begin
  Wb.ControlInterface.Document.QueryInterface(IHtmlDocument2, iDoc);
  if not Assigned(iDoc) then
  begin
    Exit;
  end;
  ov := 'INPUT';
  iDisp := iDoc.all.tags(ov);
  if Assigned(IDisp) then
  begin
    IDisp.QueryInterface(IHTMLElementCollection, iColl);
    if Assigned(iColl) then
    begin
      i:=iColl.Get_length;
      for i := 1 to iColl.Get_length do //iColl.Get_length=0 worduch es nicht weiter geht
      begin
        iDisp := iColl.item(pred(i), 0);
        iDisp.QueryInterface(HTMLInputImage, InputImage);
        if Assigned(InputImage) then
        begin
          if pos(s_pic,InputImage.Name)<>0 then
          // if the name is submit / falls der name submit lautet
          begin
           inputimage.focus;
            //InputImage.click; // click it / klick es
           r.Left := Inputimage.offsetLeft;
           r.Top := Inputimage.offsetTop;
           element:=inputimage.offsetparent;
           repeat
            if Element <> nil then
            begin
               if (Element.tagName = 'TD') // if parent a table cell,
                then
               begin
                r.Left := r.Left + (Element as IHTMLElement2).ClientLeft; // append cell border width to calcs
                r.Top := r.Top + (Element as IHTMLElement2).clientTop;
               end;
              r.Left := r.Left + Element.offsetLeft;
              r.Top := r.Top + Element.offsetTop; // <----- hier geht er Heim steht auch im tagNamen nichts gescheites drin
             end;
           Element := Element.offsetParent;
           until Element = nil;
           tp.x:=r.Left+10;
           tp.y:=r.Top+10;
           wb.clienttoscreen(tp);
           windows.setcursorpos(tp.x,tp.y);
....
Gruss Kaki

Repeat Until true=false;
  Mit Zitat antworten Zitat