AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Parameter in Event übergeben

Ein Thema von cltom · begonnen am 6. Sep 2013 · letzter Beitrag vom 6. Sep 2013
Antwort Antwort
cltom

Registriert seit: 22. Sep 2005
228 Beiträge
 
Delphi 12 Athens
 
#1

Parameter in Event übergeben

  Alt 6. Sep 2013, 09:22
Delphi-Version: XE2
Hallo,

wenig aussagekräftiger Titel, es ist aber auch eine recht allgemeine Frage. Ich hab eine einfache Zeichenprozedur. Dieser will ich eine Objektliste übergeben, also etwa:

Delphi-Quellcode:
procedure myclass.DrawObjects(myobjects : TObjectList<ObjectType>);
var
  i : integer;
begin
  for i := 0 to myobjects.count -1 do
    begin
     ...
    end;
end;
Nun soll die Zeichenprozedur ja im OnPaint-Event der PaintBox aufgerufen werden.

Delphi-Quellcode:
procedure myclass.OnPaint (Sender : TObject);
begin
  DrawObjects(...);
end;
Nun hat aber das event ja nur den Sender als Argument. Ich kann ihr also nicht die Objektliste übergeben, damit dann die OnPaint-Prozedur die Objektliste weiter an die Paint-Prozedur übergibt. Alternativ kann ich dann ja nur die Objektliste in der Klasse generell verfügbar machen und sie nur einemal übergeben. Lässt sich das auch eleganter machen?

danke und gruß
tom
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.639 Beiträge
 
Delphi 12 Athens
 
#2

AW: Parameter in Event übergeben

  Alt 6. Sep 2013, 09:27
Auf den Aufruf der Paint-Routine hast du keinen Einfluss. Weder darauf, wann sie aufgerufen wird und wie. Innerhalb der Paint-Routine muss die zu zeichnende Objektliste (sinnvollerweise in der Klasse) verfügbar sein. Der Inhalt der Liste oder die aktuelle Instanz kann natürlich variieren.

Ich würde ein Feld in der Klasse anlegen, das von der Paint-Routine genutzt wird. Du kannst dann ja an anderer STelle diesem Feld die passende Liste zuweisen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.874 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Parameter in Event übergeben

  Alt 6. Sep 2013, 09:35
Oder die Referenz in den .Tag scheiben, wenn du die Klasse nicht verändern willst/kannst.
Markus Kinzler
  Mit Zitat antworten Zitat
cltom

Registriert seit: 22. Sep 2005
228 Beiträge
 
Delphi 12 Athens
 
#4

AW: Parameter in Event übergeben

  Alt 6. Sep 2013, 10:36
Danke. Gut, ich kann natürlich die Objektliste in der ganzen Klasse verfügbar machen, ich dachte halt, es wäre eleganter, ich könnte sie nur als Parameter übergeben.

Aber danke!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.874 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Parameter in Event übergeben

  Alt 6. Sep 2013, 10:45
Ich würde diese nicht der Klasse, sondern pro Instanz bereitstellen; entweder als Eigenschaft oder halt im Tag
Markus Kinzler
  Mit Zitat antworten Zitat
cltom

Registriert seit: 22. Sep 2005
228 Beiträge
 
Delphi 12 Athens
 
#6

AW: Parameter in Event übergeben

  Alt 6. Sep 2013, 12:16
Danke. Aber auch wenn ich theoretisch weiss, was der Unterschied zwischen Klasse und Instanz ist, wie sähe das praktisch aus?

Ich hab jetzt eine Klasse "TDesigner", von der ich im Hauptform eine Instanz erzeuge. In der Klasse hab ich die Objektliste drin als public und natürlich auch die Draw und OnPaint. Also:

Delphi-Quellcode:
type
  TDesigner = Class(TObject)

    private
      Graphics : IGPGraphics;
      ABrush: IGPBrush;
      APen: IGPPen;
      AFont : IGPFont;

    public
      Destination_PB : TPaintBox;
      MyObjects : TObjectList<TDesignerObject>;
      procedure Initialize;
      procedure Draw;
      procedure AddObject(objecttype : TDesignerObjectType; x,y,d : integer);
      procedure Dest_PaintMe (Sender : TObject);
  end;
  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 17:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz