Zitat von
Progman:
statt nil mal application nehmen?
Naja, mit Application ist es schlecht, weil das Ganze dann am Ende beim Freigeben zu einem Fehler führt.
Ich habe das Ganze nun noch einmal so umgebastelt, dass wieder alles in einer
Unit steht, so dass nun also die ALHintBalloon.pas wirklich nicht mehr gebraucht wird. Außerdem ist nun das Form1 der Owner von der Komponente, die erzeugt wird, also auch daran kann es eigentlich nicht mehr liegen. Aber: Das Dingen knallt immer noch an der selben Stelle wie vorher. Fast jedes mal.
Insgesamt sieht der Code nun so aus (auch noch mal komplett im Anhang):
Delphi-Quellcode:
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TALHintBalloonControl =
class(TComponent)
function CloseHintBalloon: boolean;
end;
TForm1 =
class(TForm)
Button1: TButton;
OpenDialog1: TOpenDialog;
procedure Button1Click(Sender: TObject);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
function myDummyFunction: boolean;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
bommelHelphHintBalloon: TALHintBalloonControl
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function TALHintBalloonControl.CloseHintBalloon;
begin
Result:=false;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
opendialog1.Execute;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
bommelHelphHintBalloon:=TALHintBalloonControl.Create(self);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
FreeAndNil(bommelHelphHintBalloon);
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
myDummyFunction;
end;
function TForm1.myDummyFunction: boolean;
begin
Result:=false;
end;
end.
Außer, dass dieses Programm nichts sinnvolles erledigt kann ich daran absolut nicht ungewöhnliches entdecken. Also, selbst falls ihr den Fehler bei euch nicht 1:1 nachtsellen könnt: So etwas darf doch eigentlich nicht zu einem solchen Absturz führen, wie ich ihn hier immer wieder habe, oder? Oder mache ich in diesem einfachen Code irgendwas böses, was ich noch immer übersehe?
Bis denn
Bommel
PS: Bin erst mal weg vom Rechner - falls noch Fragen auftauchen, kann ich wahrscheinlich erst morgen reagieren...