Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ist while in verbindung mit einem Button nicht möglich? (https://www.delphipraxis.net/11823-ist-while-verbindung-mit-einem-button-nicht-moeglich.html)

Zyro 14. Nov 2003 13:11


Ist while in verbindung mit einem Button nicht möglich?
 
ich habe einen Button, der heisst Bwert. Dann habe ich eine Prozedur, die ein paar Sachen durchläuft. jetzt will ich, aber die Prozedur an einer STelle anhalten, um einen Parameter einzugeben. Aber irgendwie will er das nicht akzeptieren. Hier der Quellcode:

Delphi-Quellcode:
 if(t=2)AND(Feld[t]<>'NULL')THEN begin
          while not BWert.Click do begin
          Edit1.Enabled:=true;
          Bwert.Enabled:=true;
          end;
          end;

MrKnogge 14. Nov 2003 13:18

Re: Ist while in verbindung mit einem Button nicht möglich?
 
ich glaub nicht, dass das geht, arbeite doch mit dem OnClick-Ereigniss des Buttons.

Zyro 14. Nov 2003 13:21

Re: Ist while in verbindung mit einem Button nicht möglich?
 
Und wie kann ich da solange die schleife anhalten?!

scp 14. Nov 2003 13:22

Re: Ist while in verbindung mit einem Button nicht möglich?
 
Delphi-Quellcode:
var
  BWertClicked : boolean;

// ...

procedure TForm1.BWertClick(Sender: TObject);
begin
  BWertClicked := true;
end;

// ...
begin
  BWertClicked := false;
if(t=2)AND(Feld[t]<>'NULL')THEN begin
          while not BWertClicked do begin
          Edit1.Enabled:=true;
          Bwert.Enabled:=true;
          Application.ProcessMessages;
          end;
          end;
  BWertClicked := false;
end;

maximov 14. Nov 2003 13:23

Re: Ist while in verbindung mit einem Button nicht möglich?
 
'Click' ist eine virtuelle methode...keine property! Ausserdem ist delphi ereigniss-orientiert und deshalb solltest OnClick benutzen :wink: ...echt jetzt.

cui.

samson 14. Nov 2003 13:29

Re: Ist while in verbindung mit einem Button nicht möglich?
 
Hallo.

Auszug aus Delphi-Hilfe:
Delphi-Quellcode:
Die Methode Click simuliert einen Mausklick durch den Benutzer auf eine Schaltfläche.

procedure Click; override;

Beschreibung

Ein Aufruf von Click weist dem übergeordneten Formular den Wert der Eigenschaft ModalResult der Schaltfläche zu und erzeugt dann das Ereignis OnClick.
Ich weiss nicht wie du Dein Kontrukt programmiert hast, aber kann nach der Hilfe nicht so funktionieren, so wie ich das Verstanden habe.

Weise Deinem Button mal die Eigenschaft: ModalResult := mrOK zu.

Deine Schleife änderst Du folgendermassen:

Delphi-Quellcode:
while self.modalResult<>mrOK do
  begin
    Edit1.Enabled:=true;
    Bwert.Enabled:=true;
    Application.ProcessManages;
  end;

Zyro 14. Nov 2003 13:30

Re: Ist while in verbindung mit einem Button nicht möglich?
 
Zitat:

Zitat von scp
Delphi-Quellcode:
var
  BWertClicked : boolean;

// ...

procedure TForm1.BWertClick(Sender: TObject);
begin
  BWertClicked := true;
end;

// ...
begin
  BWertClicked := false;
if(t=2)AND(Feld[t]<>'NULL')THEN begin
          while not BWertClicked do begin
          Edit1.Enabled:=true;
          Bwert.Enabled:=true;
          Application.ProcessMessages;
          end;
          end;
  BWertClicked := false;
end;

nach deinem Beispiel sagt er immer, dass Clicked ein undeclared identifier ist ?!?

Siehtix 14. Nov 2003 13:37

Re: Ist while in verbindung mit einem Button nicht möglich?
 
leg deine prozedur doch einfach auf nen timer und disable den auf knopfdruck.

scp 14. Nov 2003 15:22

Re: Ist while in verbindung mit einem Button nicht möglich?
 
@Zyro
In meinem Beispiel habe ich eine Variable definiert, deshalb kann sie janicht undeclared sein.
Du darfst nicht BWert.Clicked schreiben, sondern nur BWertClicked, ohne Punkt.

OLLI_T 14. Nov 2003 17:49

Re: Ist while in verbindung mit einem Button nicht möglich?
 
@Zyro!

Du solltest Dein Code mal gründlich überdenken. Dieses Konstrukt sieht echt verboten aus. Anhalten gibt es bei Windows nicht. wenn ein Codeabschnitt nicht erreichbar sein soll, lässt sich das über Variablen leicht handhaben. Rechenzeitintensive Geschichten gehören in einen Thread. Alles andere ist gezwackel. Dieses Application.Processmessages sollte verboten werden.

Sorry, meine Meinung

OLLI


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:36 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