Pausieren bis zum Buttonklick

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
AlbertEinstein
Beiträge: 8
Registriert: So 16. Dez 2012, 13:42

Pausieren bis zum Buttonklick

Beitrag von AlbertEinstein »

Hallo zusammen!

Ich hab ein kleines Problem, was ich gerne an euch weitergeben würde, da ich einfach keine Lösung finde.
Ich möchte bei einem Seriellen Monitor ein neues Fenster als Einstellungsfenster einfügen. Das klappt auch wunderbar...
Das Problem ist nun: Das Fenster soll über die Methode TOpenConnection.Exec: Integer; (OpenConnection ist der Narme des Formulars)aufgerufen werden, welche als Rückgabewert eine ID für den gedrückten Button (Übernehmen/Abbrechen) zurückgibt. Wie kriege ich es jetzt hin, dass das Programm wartet, bis einer der Buttons gedrückt ist?
Sorucecode:

Code: Alles auswählen

function TOpenConnection.Exec: Integer;
begin
  OpenConnection.Show;
 
  //Warten auf Tastendruck, Ergebnis speichern in  _click.
  //Übernehmen = 1 | Abbrechen/Fenster schließen = 0
 
  Result := _click;
  OpenConnection.Hide;
end; 
Ich hoffe, ihr könnt mir helfen... :mrgreen:

Code: Alles auswählen

if Beitrag = Nützlich then
  AllesDurchlesen
else
  Ignorieren;

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2811
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Pausieren bis zum Buttonklick

Beitrag von m.fuchs »

ShowModal könnte dir helfen.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

AlbertEinstein
Beiträge: 8
Registriert: So 16. Dez 2012, 13:42

Re: Pausieren bis zum Buttonklick

Beitrag von AlbertEinstein »

Vielen Dank; das klingt ziemlich vielversprechend.
Ich werd's mal ausprobieren...

Code: Alles auswählen

if Beitrag = Nützlich then
  AllesDurchlesen
else
  Ignorieren;

Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Re: Pausieren bis zum Buttonklick

Beitrag von Komoluna »

oder so:

Code: Alles auswählen

 
...
var
geklickt:boolean=false;
modresult:integer;     //<---Modal-Result
...
implementation
 
procedure TOpenConnection.Buttonclick(Sender:TObject);
begin
  geklickt:=true;
  if Sender=Button1 then modresult:=1;
  if Sender=Button2 then modresult:=0;
end;
 
function TOpenConnection.Exec: Integer;
begin
  OpenConnection.Show;
  while geklickt=false do
  application.processmessages;
  Result := modresult;
  OpenConnection.Hide;
end; 
 
und die OnClick prozedur der beiden Buttons auf TOpenConnection.Buttonclick(Sender:TObject) stellen, viel Spass

Komoluna
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

Antworten