Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Button mehrmals klicken (https://www.delphipraxis.net/165552-delphi-button-mehrmals-klicken.html)

klaus9 5. Jan 2012 15:56

Delphi Button mehrmals klicken
 
Hallo,

ich will gerne über einen Button eine Actionliste ansteuern, dies funktioniert über

Action1.execute auch sehr gut, nun möchte ich gerne über ein Edit.Text Feld in dem Zahlen Werte stehen, dem Button sagen,wenn ich auf den Button klicke soll er 1,2 oder was an Zahlen im Textfeld stehen, das Action1.execute hintereinander ausführen.

Wie funktioniert das ?

Code:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ActnList;

type
TForm1 = class(TForm)
Edit1: TEdit;
ActionList1: TActionList;
Action1: TAction;
Button1: TButton;
procedure Action1Execute(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Action1Execute(Sender: TObject);
begin
showmessage('test')
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Action1.execute
end;

end.

DeddyH 5. Jan 2012 15:58

AW: Delphi Button mehrmals klicken
 
Stichwort Schleife.

Sir Rufo 5. Jan 2012 17:29

AW: Delphi Button mehrmals klicken
 
Stichwort Code-Tags

DeddyH 5. Jan 2012 17:36

AW: Delphi Button mehrmals klicken
 
Stichwort Delphi-Tags :tongue:

Steku 5. Jan 2012 18:39

AW: Delphi Button mehrmals klicken
 
Immer wieder gut: http://www.delphibasics.co.uk/index.html

Zitat:

Zitat von DeddyH (Beitrag 1144469)
Stichwort Schleife.

In diesem Fall:

http://www.delphibasics.co.uk/RTL.asp?Name=For


Grüße, Steku

DeddyH 5. Jan 2012 18:41

AW: Delphi Button mehrmals klicken
 
Naja, while ginge auch. Mir ging es ja nur darum, dass man für sich wiederholende Blöcke Schleifen verwendet/verwenden sollte.

klaus9 7. Jan 2012 20:35

AW: Delphi Button mehrmals klicken
 
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;
mylink:olevariant;
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 ?

Luckie 7. Jan 2012 21:06

AW: Delphi Button mehrmals klicken
 
Also mittlerweile solltest du aber die Delphi Tags beim schreiben von Beiträgen kennen, deswegen benutze sie auch bitte.

p80286 7. Jan 2012 21:11

AW: Delphi Button mehrmals klicken
 
Du hast natürlich F7 benutzt um die Codestelle zu finden, die nicht tut was sie soll.
Könntest Du uns da informieren?

Delphi-Quellcode:
soist Delpi-Code besser lesbar
Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:08 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz