Einzelnen Beitrag anzeigen

Pytroxis

Registriert seit: 12. Apr 2019
46 Beiträge
 
#18

AW: Seltsames Verhalten einer Funktion

  Alt 25. Apr 2019, 14:33
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?
  Mit Zitat antworten Zitat