Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Formular regiert nicht zur Laufzeit (https://www.delphipraxis.net/51276-formular-regiert-nicht-zur-laufzeit.html)

thomasch 9. Aug 2005 17:56


Formular regiert nicht zur Laufzeit
 
Hallo,
offenbar ist die Sache so simpel, dass sie nirgendwo steht...

Wie bringe ich mein Formular dazu, während es beschäftigt ist auf Benutzereingaben zu reagieren?

Zur Verdeutlichung hier ein ganz einfachss Beispiel
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  stopit : Boolean ;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
i:Longint;
begin
  stopit:=false;
  while not stopit do
  i:=i+1;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  stopit:=true;
end;

end.
Wenn ich hier einmal Drücken von Button1 gedrückt habe, reagiert das formular und mit ihm Button2 nicht mehr.
Die Variante, ein zweites Form darüber zu legen ist mir zu unsauber...

Danke schonmal

Thomasch

Treffnix 9. Aug 2005 17:58

Re: Formular regiert nicht zur Laufzeit
 
Delphi-Quellcode:
Application.Processmessages
in die Schleife, damit die Messages zwischendurch abgearbeitet werden.

RavenIV 9. Aug 2005 18:06

Re: Formular regiert nicht zur Laufzeit
 
Zitat:

Zitat von thomasch
Wenn ich hier einmal Drücken von Button1 gedrückt habe, reagiert das formular und mit ihm Button2 nicht mehr.

das ist klar.
das programm bleibt in Button1Click drinne.
solange eine callback-funktion (z.B Button1Click) ausgeführt wird, kann das form auf nix anderes reagieren.

ich würde für die "Arbeit" einen neuen Thread aufmachen.
dann ist das form nur solange beschäftigt, bis der neue thread angelaufen ist.
im form kannst du dann auf weitere aktionen reagieren (z.B. den thread wieder beenden).

gruessle

thomasch 10. Aug 2005 08:48

Re: Formular regiert nicht zur Laufzeit
 
Danke - ich dachte es gibt sowas, was repaint und ProcessMessages vereint.
Immrehin wirkt sich das "nichtreagieren" ja auf das ganze Form aus.

Viele Grüße

Thomasch


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:57 Uhr.

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