Einzelnen Beitrag anzeigen

klaus9

Registriert seit: 4. Dez 2011
123 Beiträge
 
#7

AW: Delphi Button mehrmals klicken

  Alt 7. Jan 2012, 20:35
Hi vielen Dank für die Infos, hmm nur bekomme ich einige Dinge nicht hin.

habe versucht zwei Abläufe hintereinander durchlaufen zu lassen. Aber egal wie ich es auch probiere es klappt nicht.



procedure TForm1.Action43Execute(Sender: TObject);
var link,s:string;
I:integer;
mylinklevariant;
begin
s:='';
mylink:='';
for I := 0 to WebBrowser1.OleObject.Document.links.Length - 1 do begin
s:=WebBrowser1.OleObject.Document.links.Item(I).In nerText;
if s='in Bearbeitung' then mylink := WebBrowser1.OleObject.Document.links.Item(I);
end;
webbrowser1.Navigate(mylink);

repeat;
Application.ProcessMessages;
Sleep(1000);
until WebBrowser1.ReadyState = READYSTATE_COMPLETE;
Webbrowser1.Navigate(Edit23.Text); // Filter öffnen
WebBrowser1.OleObject.document.forms.item(0).eleme nts.item(12).click; //aktiv 1
WebBrowser1.OleObject.document.forms.item(0).eleme nts.item(16).click; //aktiv 2

end;


procedure TForm1.Action45Execute(Sender: TObject);
var ovElements: OleVariant; i: Integer;
begin

ovElements := WebBrowser1.OleObject.Document.forms.item(0).eleme nts;
for i := 0 to (ovElements.Length - 1) do
if (ovElements.item(i).tagName = 'INPUT') and
(ovElements.item(i).type = 'submit') and
(ovElements.item(i).Value = 'Filter setzen') then
ovElements.item(i).Click;
end;


Diese beiden muß ich hintereinander mit einer kleinen Pause durchlaufen lassen.
Aber irgendwie macht er nur die Action43.execute führt er aus, die andere muß ich immer noch von Hand anstupsen

habe mir auch mal nen Wait eingebaut als procedure aber klappt auch nicht, selbst mit dem Command Sleep z.B. in der Form

procedure Button1
begin
Action43.execute;
sleep(500)
Action45.execute;
end;

auch mittels folgender procedure versucht

procedure Wait(eWebBrowser: TWebBrowser);
begin
repeat
Sleep(50); // 50ms warten
Application.ProcessMessages; // Andere Events verarbeiten
until (eWebBrowser.ReadyState = READYSTATE_COMPLETE) or (Application.Terminated);
end;

procedure ladeSeite;
begin
while ((Form1.Webbrowser1.ReadyState <> ReadyState_complete) or
(Form1.Webbrowser1.Document = nil) or
((Form1.Webbrowser1.Document AS IHTMLDocument2).readyState <> 'complete')) do
begin
Application.ProcessMessages;
if Application.Terminated then halt;
sleep (400);
end;
end;

selbst wenn ich die Wait oder ladeseite mit hintersetze keine chance, was mache ich falsch ?
  Mit Zitat antworten Zitat