Einzelnen Beitrag anzeigen

EugenB

Registriert seit: 7. Dez 2006
98 Beiträge
 
Lazarus
 
#10

Re: [Andorra2d]: keine Form-Events?

  Alt 13. Mai 2008, 17:37
Zitat von igel457:
Gehe das Programm doch einfach mal mit dem Debugger Schritt für Schritt durch und schaue ob innerhalb der Zuweisung der Events (in TAdLCLOGLComponentWindow.SetupEvents) irgendwo ein Fehler auftritt.
Hab ich gemacht, doch leider wird die Funktion nicht bis zu ende ausgeführt, weil ...

Delphi-Quellcode:
if FControl.Owner is TForm then
    FForm := TForm(FControl.Owner)
  else
    exit;
wegen diesen 4 Zeilen wird die Funktion sofort beendet. Nun gut also hab ich mal die erste und die letzten beiden auskommentiert. Beim durchlaufen der Funktion kamen keine Fehler.

Immernoch kein MouseEvent. Dann hab ich mir die Funktion TAdLCLOGLComponentWindow.MouseDown angeschaut und diese auch beim Debuggen durchgegangen. Das Ergebnis war es wurde kein Event Zugewiesen, obwohl bei der SetupEvents keine Fehler auftraten. Nun gut habe ich mal wieder versucht die Events per Hand zuzuweisen und tada der MouseEvent wurde ausgeführt jippiee ^^

Delphi-Quellcode:
AdDraw.Window.Events.OnMouseDown:=@FormMouseDown;
  AdDraw.Window.Events.OnMouseMove:=@FormMouseMove;
  AdDraw.Window.Events.OnMouseUp:=@FormMouseUp;
Also zusammengefasst:
Da die Funktion TAdLCLOGLComponentWindow.SetupEvents sofort beendet wird, können keine Events dem FContext zugewiesen werden und somit auch keine externen Zuweisungen.

Die Events der Form werden nicht in die AdDraw.Window.Events übernommen. Und da wäre auch der Fehler ^^.

Bei TAdVCLComponentWindow.SetupEvents werden anscheinend die Events übernommen, aber diese habe ich noch nicht probiert zu compilieren.

Naja wie auch immer, es funktioniert wenn man die 3 Zeilen (s.o) auskommentiert und die Events per Hand zuweist.

Ich hätte noch einen Lösungsvorschlag für die TAdLCLOGLComponentWindow-Klasse.

Man muss keine Events per AdDraw.Window.Events hinzufügen, die Events der Form werden sofort von der TAdLCLOGLComponentWindow-Klasse aus aufgerufen. Bisher nur OnMouseDown/Move/Up bearbeitet.

Siehe Anhang.

Und schon funktionieren Events unter Lazarus / Freepascal.

Bleibt nurnoch der Fehler mit dem AdDraw.Free^^.

MfG,
Eugen
Angehängte Dateien
Dateityp: pas adlcloglcomponentwindow_287.pas (10,0 KB, 9x aufgerufen)
  Mit Zitat antworten Zitat