![]() |
TCollectionItem in TCollection erzeugen mit Wertübergabe
Also hab mir das mit der TCollection un TCollectionItem mal angeschaut, aber ich glaube das habe ich noch nicht so verstanden. Allerdings habe ich auch noch kein vergleichbares Beispiel gefunden. Also ich möchte eine TCollectionItem mit Wertübergabe in TCollection erzeugen. Habe hier mal ne Add-function in einem Beispiel gefunden, was aber Wertfrei Added. Damit ihr euch auch mal ein Bild machen könnt, was ich bisher gemacht hab:
Delphi-Quellcode:
Wie man sieht möchte ich die Anzahl des Arrays erst bei der Erzeugung anhand der Displayweite (wird später durch die Breite der Paintbox bestimmt) festlegen. Wie kann ich die TCollection-Klasse umarbeiten, dass dies funktioniert?unit OszilloskopKanalUnit; //ToDo-Liste //- Farbe muss verwendet werden! interface uses Controls, Classes; Type TOszilloskopKanal = class(TCollectionItem) private FadyWert: array of double; FiXMax, FiYmax: integer; FsName: string; procedure SetYWert(Index: integer; dWert: double); procedure SetName(sWert: string); function GetYWert(Index: integer): double; function GetName: string; procedure movedArray(temparray: array of double); public constructor create(ACollection: TCollection; DisplayWide: integer); reintroduce; destructor destroy; override; property EingangY[Index: integer]: double read GetYWert write SetYWert; property Name: string read GetName write SetName; end; implementation constructor TOszilloskopKanal.Create(ACollection: TCollection; DisplayWide: integer); begin inherited create(ACollection); SetLength(FadyWert, DisplayWide); FiYmax := DisplayWide -1; FsName := 'Signal'; end; destructor TOszilloskopKanal.Destroy; begin SetLength(FadyWert,0); inherited destroy; end; procedure TOszilloskopKanal.movedArray(temparray: array of double); var i: integer; begin for i := 0 to Length(temparray)-2 do temparray[i] := temparray[i+1] end; // Es werden immer nur die letzen Werte gesetzt procedure TOszilloskopKanal.SetYWert(Index: integer; dWert: double); begin movedArray(FadyWert); FadyWert[FiYmax] := dWert; end; procedure TOszilloskopKanal.SetName(sWert: string); begin FsName := sWert; end; function TOszilloskopKanal.GetYWert(Index: integer): double; begin result := FadyWert[Index] end; function TOszilloskopKanal.GetName; begin result := FsName; end; end. {--------------------------------------------------------------------------------------------------------------------------} unit OszilloskopUnit; interface uses Controls, ExtCtrls, Graphics, Classes, OszilloskopKanalUnit; Type TOszilloskop = class(TCollection) private FiDisplayWide, FiDisplayHeight: integer; FdYMax: double; // Funktion zur Ermittlung des Darstellungsbereiches //procedure GetDisplayArea; protected published public constructor create(AItemClass: TCollectionItemClass; DisplayWide, DisplayHeight, CountChannel: integer); reintroduce; destructor destroy; override; function Add(DisplayWide: integer): TOszilloskopKanal; end; implementation constructor TOszilloskop.create(AItemClass: TCollectionItemClass; DisplayWide, DisplayHeight, CountChannel: Integer); var i: integer; begin inherited create(AItemClass); FiDisplayWide := DisplayWide; FiDisplayHeight := DisplayHeight; end; destructor TOszilloskop.Destroy; var i: integer; begin inherited destroy; end; function TOszilloskop.Add(DisplayWide: integer): TOszilloskopKanal; begin inherited Add as TOszilloskopKanal; end; end. |
Re: TCollectionItem in TCollection erzeugen mit Wertübergabe
Liste der Anhänge anzeigen (Anzahl: 1)
Mal eine kleine Beispielkomponente, die Grafikausgabe lässt noch noch zu wünschen übrig:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:23 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