Autor Beitrag
Poolspieler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45


D5 Prof / D7 Prof
BeitragVerfasst: Sa 10.07.04 18:56 
Hallo,
kann mir jemand sagen, wie ich das aktive Element im TWebbrowser ermittle und anschließend den Wert dieses Elements (ein Edit bzw. in Javascript Input-Feld) ändere?

Ich habs so versucht den Namen des aktiven Elements anzuzeigen:
ausblenden Quelltext
1:
showmessage(WebBrowser1.OleObject.Document.activeElement.name);					

Das ist aber der Name des aktiven Frames...
Die MSDN ist wie immer viel zu unübersichtlich: :?:
http://msdn.microsoft.com/libr ... /ifaces/iwebbrowser2/iwebbrowser2.asp

Wär schön, wenn mir jemand helfen könnte

Poolspieler

P.s.: Ich benutze Delphi5 Professional :roll:

Moderiert von user profile iconPeter Lustig: Link gekürzt

_________________
Ich weis, das ich nichts weis, aber was bringt mir das?
ringo!
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48

WinXP Pro, MacOS X 10.3
D7 Pers
BeitragVerfasst: Sa 10.07.04 19:19 
ausblenden Quelltext
1:
   Webbrowser1.OleObject.Document.Forms.item(0).elements.item('User').Value := edit1.text;					


In diesem Beispiel wird das Feld mit dem Namen User mit dem Wert aus Edit1 "gefüllt".
Poolspieler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45


D5 Prof / D7 Prof
BeitragVerfasst: Sa 10.07.04 21:42 
Hallo,
erstmal danke für die Antwort, aber:
1. Woher hast Du diese Information - aus der (übersichtlichen) MSDN konnte ich dies nicht herauslesen... :roll:
2. Ich muss das zur Zeit AKTIVE Eingabefeld ändern also sowas ähnliches wie
ausblenden Quelltext
1:
Webbrowser1.OleObject.Document.Forms.item(0).elements.aktives_element.Value := 'ich bin aktiv';					


Gibt es sowas - bzw. gibt es eine anständige Doku, wo ich nachlesen könnte...

Gruß

Poolspieler

_________________
Ich weis, das ich nichts weis, aber was bringt mir das?
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: So 11.07.04 09:11 
ich bin da auch schon am suchen - hab das ganze MSDN durchforstet. Allerdings such ich das selbe für die Edit-Variante (DHMTLEdit). Bin bis jetzt nicht darauf gekommen, ausser wenn man mit der Maus das ganze macht:
ausblenden Delphi-Quelltext
1:
2:
3:
var T:TPoint;  
T:=Webedit.ScreenToClient(Mouse.CursorPos);
ele:=WebEdit.DOM.elementFromPoint(T.X,T.Y); // ele = iHTMLElement WebEdit= TDHTMLEdit


in Javascript sieht das ungefähr so aus:

<BODY onmousedown="alert(event.srcElement.tagName)">
...
hier ist der aktuelle Name des element aus Event.

vielleicht hilfts ja

grez
msch

_________________
ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
ringo!
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48

WinXP Pro, MacOS X 10.3
D7 Pers
BeitragVerfasst: So 11.07.04 09:46 
Das Aktiv hab ich wohl überlesen :oops:

Ich hab vor einigen Jahren mal ein Project gemacht, welches einem beim Ausfüllen von WebFormularen hilft.
Ich erinnere mich noch, daß ich dort das aktive Element durch abfragen des Focus rausbekommen habe.
Bei Gelegenheit schau ich mal, ob meine alten Backup CDs noch etwas zu dem Thema beinhalten.

P.S.: Die MSDN kann man bei solchen Problemen doch knicken. Ich bin sowieso der Überzeugung, daß da nur die Hälfte von dem drinne steht, was eigentlich möglich ist.
Poolspieler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45


D5 Prof / D7 Prof
BeitragVerfasst: So 11.07.04 11:52 
Hi,
eure Hinweise haben mir sehr gut geholfen!!!
Die Antwort auf das Problem will ich euch natürlich nicht vorenthalten :wink:
(Ich habe den Quellcode gleich ein wenig kommentiert - damit das auch der letzte versteht... :? )
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TForm1.Button4Click(Sender: TObject);
var
  document: IHTMLDocument2;
  element: IHTMLElement;
begin
  document := WebBrowser1.Document as IHTMLDocument2;  // dokument des Browsers ermitteln
  if Assigned(document) then
    begin // ist document auch wirklich zugewiesen worden?
      element := document.activeElement; // das AKTIVE Element im dokument ermitteln
                                         // kann allerdings auch der Body selbst sein --> VORSICHT!!!

      showmessage('tag: ' + element.Get_tagName);  // ausgeben, was es für ein TAG ist
      if element.Get_tagName = 'INPUT' then // ist es ein eingabefeld?
        showmessage('Name: ' + element.getAttribute('name', 0)); // ja, es ist ein eingabefeld --> name des Feldes ausgeben
    end
   else
    showmessage('document konnte nicht zugewiesen werden'); // nö
end;


http://msdn.microsoft.c ... bjects.asp


Gruß

Poolspieler

P.s.: Wegen der MSDN hast Du nicht wahrscheinlich nicht ganz Recht, denn das ist halt alles seeehr gut versteckt. Die Lösung auf mein Problem hab ich nur absolut zufällig gefunden (und natürlich durch endloses Probieren *gääähn*)

Moderiert von user profile iconPeter Lustig: Link gekürzt

_________________
Ich weis, das ich nichts weis, aber was bringt mir das?
Poolspieler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45


D5 Prof / D7 Prof
BeitragVerfasst: So 11.07.04 16:06 
Verflixt noch mal:
Das ganze funktioniert NUR wenn die HTML-Seite NICHT aus Frames besteht!!!

Auch Deine Löschung MSCH funktioniert mit Frames NICHT --> es wird lediglich der Name des aktiven Frames, aber nicht der Name des Aktiven Elements (z.B. Eingabefeld) angezeigt :cry: :cry: :cry: :cry:

Kann mir vielleicht trotzdem jemand helfen, oder muss ich dem Gates was antun?

Gruß vom absolut enttäuschten

Poolspieler :?

_________________
Ich weis, das ich nichts weis, aber was bringt mir das?
ringo!
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48

WinXP Pro, MacOS X 10.3
D7 Pers
BeitragVerfasst: So 11.07.04 20:47 
Wozu brauchst du das aktive Element denn ? Vieleicht findet man einen anderen Ansatz.
Poolspieler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45


D5 Prof / D7 Prof
BeitragVerfasst: Mo 12.07.04 09:14 
Ich soll ein Programm (unter anderem) mit einer Adressverwaltung schreiben.
Auf Knopfdruck soll auch eine Karte mit der aktuellen Adresse (PLZ, Strasse) angezeigt werden.
Ich habe mir es folgendermaßen vorgestellt (und dürfte so auch mit keinem Onlinekartenanbieter Ärger bekommen... :? ):
In den Einstellungen für die Kartenansicht soll man (z.B. mit DragAndDrop --> so hab ichs bereits realisiert --> OHNE Frames) Die Felder (Straße, Postleitzahl, Suchenbutton) des Onlinekartenanbieters einstellen können.
:idea: Und genau das wollte ich ursprünglich mit dem aktiven Feld machen: Man clickt z.B. auf des Feld "straße", anschließend in meinem Programm auf "Straßenfeld festlegen"... Geht aber leider nicht :x
Wenn man nun in meinem Progamm eine Adresse sucht, geht man nur auf "Adresse_suchen" und mein Programm lädt automatisch dem VOM USER eingestellten Kartenservice. In die oben eingestellten Felder werden automatisch Postleitzahl und Strasse übernommen und anschließend der Suchenbutton (durch mein Programm) "angeclickt)

--> und schon hat man eine Karte...
:arrow: Vorteil diese Methode:
Man benötigt keine teueren Routenplaner (Map&Guide und co)
Man kann im Prinzip jeden beliebigen OnlineKartenDienst verwenden (bis jetzt leider nur OHNE Frames :cry: )
Da ich bei Auslieferung meines Programms keinen Kartenservice vorgebe, sonder nur anbiete, Websites (z.B. Kartenservices) "fern zu steuern" dürfte es auch keine rechtlichen Probleme geben... Außerdem wird ja die komplette Homepage des Anbieters angezeigt (inclusive aller Werbung...)

:roll: Was besseres ist mir leider nicht eingefallen - ich bin aber für alle Vorschläge dankbar :wink:

Gruß :wave:

Poolplayer

_________________
Ich weis, das ich nichts weis, aber was bringt mir das?