Hallo,
das verstehe ich nicht, das verstehe ich überhaupt nicht. Was ist denn da los?
Formular mit einem Label und einem Button.
Bitte nur unter der
IDE bei Benutzung des internen Debuggers starten!!!
Folgende Formular-
Unit:
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 =
class(TForm)
Label1: TLabel;
Button1: TButton;
procedure FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
sl: TStringList;
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
if assigned(sl)
then sl.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
var i: longint;
begin
sl:=Tstringlist.Create;
try
for i:=0
to 1000000
do begin
label1.Caption:=inttostr(i);
application.processmessages
end;
finally
freeandnil(sl)
end;
end;
end.
Versucht mal abzubrechen (durch Click auf den Schließen-Button, oben rechts).
Nur mit Zugriffsschutzverletzung (beim 2. Click drauf). Warum? Und wie umgehe ich das?
Und nun kommentiert mal die einzige Zeile in FormCloseQuery aus und versucht wieder abzubrechen.
Geht nicht! Er stoppt nur solange man clickt und zählt dann weiter!
Über die
IDE kann man das aber problemlos sofort abbrechen.
Warum geht das mit dem Schließen-Button nicht, warum geht das über die
IDE?
(Bei mir unter Delphi7 Pro passiert.)
Gruß
Matthias