Du kannst im erstellten Objekt auf Form1 das Canvas der Paintbox auf Form2 zuweisen. Vorausgesetzt die Variable (hier: Paintbox) befindet sich im Public-Abschnitt, damit du darauf über Form1 zugreifen kannst...
Ich habe es jetzt mal in eine Klasse umgeschrieben, es sieht nun wie folgt aus:
Delphi-Quellcode:
type
TBoxplot = class
private
FZahlen : array of array of Double;
FNamen : TStrings;
FQuartils : array of array[0..1] of Double;
FMedian : array of Double;
FBereiche: array of array[0..3] of array of Double;
FPaintBox : TPaintBox;
FSize : array[0..1] of Integer; // size[0] -> Höhe; size[1] -> Breite
procedure sortiereZahlen(index: integer);
procedure drawLine(color: TColor; minX, minY, maxX, maxY:integer);
procedure zeichnen(Boxplot : real);
public
procedure einlesenZahlen(datensatz : array of TStringList; bNamen: TStrings);
procedure boxplotErstellen(PaintBox : TPaintBox); // Ermittelt die Anzhal der Boxplots und ruft dann n-mal die zeichen Funktion auf.
published
constructor Create(size : array of Integer); // Den Destruktor werde ich noch hinzufügen
end;
function isNumber(eingabe:string):Boolean;
function checkEingabe (eingabe : String) : Boolean;
procedure setButton(button:array of TButton; state : Boolean);
(Die unteren 3 Funktionen habe ich bewusst nicht in die Klasse genommen).
Ist die Deklaration soweit gut oder sollte ich etwas umändern?
ich würde sowieso die Klasse TBoxplot (oder wie auch immer die heißt) in eine eigen
Unit auslagern, die dann in Form1 und Form2 eingebunden wird.
Hatte ich so oder so gemacht, alleine schon weil es übersichtlicher ist
Irgendwo in Form1 wird dann eine Instanz dieser Klasse erzeugt und diese an Form2 übergeben.
Das erstellen in Form 1 ist kein Problem allerdings habe ich beim übergeben ein Problem:
Wie übergebe ich die Instanz am besten? Hatte mir überlegt auf Form2 eine variable von der Klasse zu erstellen und dann dieser in Form1 die Instanz zuzuweisen (-> Ich muss auf Form2 die ChangeSize/OnPaint nutzen, da die Größe dynamisch ist).
Allerdings muss ich die Variable auf Form2 ja "erstellen". Dann müsste ich aber doch den Konstruktor erneut aufrufen und erzeuge somit doch eine neue Instanz oder habe ich auch hier ein Denkfehler?