Naja meinte grob, dass ich sie auf Arbeit in die Toolpalette integrieren kann und per Ziehen auf die Form bringe = Komponente. Denke da sicherlich noch etwas zu kompliziert wegen Unterscheidung Klasse und Komponente. Aber wie sieht es mit meinem Konzept aus? ist dies prinzipell machbar oder empfiehlt sich eventuell ein einfacherer Weg?
eine weitere Frage wäre, von welcher Komponente wäre das ableiten der Unterklasse sinnvoll? Ich meine bisher habe ich meistens von TComponent abgleitet, welches (wie ich mir vorstellen kann) dem Spruch "Mit Kanonen auf Spatzen schießen" nahe kommen könnte. Hier mal kurz eine Grobstruktur, wie ich mir das Vorstelle:
Delphi-Quellcode:
unit Unit1;
interface
uses Controls, Classes;
Type TOsziloscopKanal =
class(TWinControl)
private
xWert, yWert:
Array of Integer;
iXMax, iYmax: integer;
procedure SetXWert(iWert: integer);
procedure SetYWert(iWert: integer);
function GetXWert: integer;
function GetYWert: integer;
procedure moveArray(temparray:
array of integer);
protected
published
public
property EingangX: integer
read GetXWert
write SetXWert;
property EingangY: integer
read GetYWert
write SetYWert;
constructor create(AOwner: TComponent; DisplayWide, DisplayHeight: integer);
reintroduce;
destructor destroy;
override;
end;
implementation
constructor TOsziloscopKanal.Create;
begin
inherited create;
SetLength(xWert, DisplayWide);
iXmax := DisplayWide - 1;
SetLength(yWert, DisplayHeight);
iYmax := DisplayHeight -1;
end;
destructor TOsziloscopKanal.Destroy;
begin
SetLength(xwert, 0);
SetLength(yWert,0);
inherited destroy;
end;
//Procedure verschiebt ein Array so, dass die letzte Stelle überschrieben werden kann
procedure TOsziloscopKanal.moveArray(temarray:
array of integer);
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 TOsziloscopKanal.SetXWert(iWert: Integer);
begin
moveArray(xwert);
xWert[iXmax] := iWert;
end;
// Es werden immer nur die letzen Werte gesetzt
procedure TOsziloscopKanal.SetYWert(iWert: Integer);
begin
moveArray(yWert);
YWert[iYmax] := iWert;
end;
function TOsziloscopKanal.GetXWert;
begin
// muss noch überdacht werden, da man je nach angabe eines y einen x-Wert bekommen soll
end;
function TOsziloscopKanal.GetYWert;
begin
// muss noch überdacht werden, da man je nach angabe eines x einen y-Wert bekommen soll
end;
end.
[Code ist komipilierfähig, aber hab es noch nicht eingebunden, könnten sicherlich noch Fehler drin sein]
Wie gesagt, die Frage ist, ob von der Klasse TComponent abgleitet werden muss (hat ja viele Dinge z.B. Wnd, was ich nicht wirklich brauche) oder gibt es dort Klassen, die geeigneter sind?
[Edit]Die Frage ist jetzt eigentlich genau, wie creiere ich das jetzt genau in meiner nächsten Klasse/ wie halte ich das ganze EINDEUTIG, so das die Unterscheidbarkeit gewahrt bleibt? Wie erzeuge ich namen, denn ich brauche ja wieder MyComponentX := TOsziloscopKanal.Create(...)? Da hänge ich jetzt. Also mir ist schon klar, dass ich die Eindeutigkeit über die Namen behalte, aber ich muss das ja auch der höheren Funktion vorher sagen, dass ich dies will. Oder kann ich dort einfach ein Array of TOsziloscop machen?[/Edit]
2. Account Sero