Einzelnen Beitrag anzeigen

Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
659 Beiträge
 
Delphi 12 Athens
 
#6

Re: Einfaches OnMouseMove schießt Programm/Debugger ab

  Alt 30. Mär 2010, 19:24
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...
Angehängte Dateien
Dateityp: zip movetest_153.zip (4,7 KB, 3x aufgerufen)
  Mit Zitat antworten Zitat