AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Komponente und Ereignis in unit auslagern
Thema durchsuchen
Ansicht
Themen-Optionen

Komponente und Ereignis in unit auslagern

Ein Thema von soeschmid · begonnen am 22. Mai 2005 · letzter Beitrag vom 22. Mai 2005
Antwort Antwort
soeschmid

Registriert seit: 12. Mai 2005
2 Beiträge
 
#1

Komponente und Ereignis in unit auslagern

  Alt 22. Mai 2005, 21:21
Delphi-Version: 7
Hallo

Ich arbeite an einem größeren Programm, bei dem ich zur Übersicht
Komponenten sowie Ereignisprozeduren in units auslagern möchte.

Leider bekomme ich immer beim Beenden der dynamisch zugewiesenen Prozedur eine Zugriffsverletzung.

Der Quelltext im einzelnen:

Delphi-Quellcode:
unit5;
interface
uses
   ....
procedure start11();
procedure mouseup(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);

implementation

procedure start11();
begin
  bild := Timage.Create(Form2);
  bild.parent := Form2;
  @bild.onmouseup := @mouseup;
end;

procedure mouseup(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  //irgendwas (Berechnungen ohne an irgendwelchen Komponenten Änderungen vorzunehmen)
end;
Beim Beenden der Prozedur "mouseup" tritt immer eine Zugriffsverletzung auf, unabhängig vom Quelltext.
(Wenn im debugger das "end;" markiert ist und ich wieder auf "F7" drücke.)

Wenn ich als Ereignis nicht das onmouseup-Ereignis, sondern das Onclick-Ereignis benutze gibt es keine Fehlermeldungen.
Leider brauche ich für die Berechnungen die mauskoordinaten.

Kann mir jemand helfen?

Mfg
Soeschmid
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.170 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Komponente und Ereignis in unit auslagern

  Alt 22. Mai 2005, 21:43
Du darfst der bild.onmouseup-Ereignis nur eine Objektmethode zuweisen, sprich eine Methode eines Objekts.
Du weißt ihr aber per harten (fehlerhaften) Pointeroperationen eine normale Funktion zu!

So könntest du die Ereignisse auslagern (Alternativ du definierst eine eigene Basis-Formularklasse, welche schon einige Zusatzfunktionen besitzt):

Delphi-Quellcode:
type
  TMyObj = class(TObject);
  private
    bild: TImage;

    procedure mouseup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  public
    procedure start11(ParentForm: TForm);
  end;

implementation

procedure TMyObj.start11(ParentForm: TForm);
begin
  bild := Timage.Create(self);
  bild.parent := ParentForm;
  bild.onmouseup := mouseup;
end;

procedure TMyObj.mouseup(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  //irgendwas (Berechnungen ohne an irgendwelchen Komponenten Änderungen vorzunehmen)
end;
So könntest Du
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
22. Mai 2005, 21:51
Dieses Thema wurde von "MrSpock" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Ankündigungen" verschoben.
Ist kein Beitrag zur Code - Lib.
22. Mai 2005, 22:33
Dieses Thema wurde von "Luckie" von "Ankündigungen" nach "Object-Pascal / Delphi-Language" verschoben.
MrSpock war wohl gerade wieder als Waffensystemoffizier mit seiner Phantom unterwegs und hat wohl im Vorbeiflug nicht richtig gezielt.
An nach Delphi.
soeschmid

Registriert seit: 12. Mai 2005
2 Beiträge
 
#5

Re: Komponente und Ereignis in unit auslagern

  Alt 22. Mai 2005, 23:10
Vielen Dank

So verstehe ich auch, warum das nicht funktioniert hat.

Mfg
Soeschmid
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz