Einzelnen Beitrag anzeigen

Pytroxis

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

AW: Komponenten während der Laufzeit erstellen und löschen

  Alt 22. Apr 2019, 16:40

Wenn Du eine Zeichenfläche brauchst, die größer als der Clientbereich des Forms ist und vom Benutzer scrollbar sein soll, mach das so:

Wirf eine TScrollbox auf das Form und setzte sein Align auf alClient. Wirf eine TPaintbox auf die Scrollbox und setzte ihre Top und Left auf 0.
Hänge einen Handler an den OnPaint-Event der Paintbox. Verschiebe den Kode, den Du jetzt im FormPaint Eventhandler hast, in diese Methode, aber Achtung!! Du mußt jetzt auf den Canvas der Paintbox zeichnen, nicht auf den des Forms!

Die letzte Aufgabe ist es dann, wenn sich die Daten ändern, zu berechnen, wie groß die Zeichenfläche dafür sein muß, und die Höhe (und ev.Breite) der Paintbox entsprechend zu setzen. Das feuert nicht nur automatisch den OnPaint-Event der Paintbox, sondern die Scrollbox zeigt auch automatisch Rollbalken an, wenn die Paintbox größer wird als die Client area der Scrollbox.
Das hatte super funktioniert, vielen Dank!

Könnt ihr den Fehler finden, weshalb die ListBox Items nicht geladen werden bzw. weshalb dieses leer bleibt?
Delphi-Quellcode:
var zahlen: array of TStrings;
...
//In einer Procedure die ausgeführt wird und welche funktioniert
zahlen[ComboBox1.ItemIndex-1] := ListBox1.Items;
...
procedure TForm1.Button5Click(Sender: TObject);
begin
  ListBox1.Items := zahlen[ComboBox1.ItemIndex-1];
end;
Finde ehrlich gesagt nicht den Fehler, länge des Arrays wurde gesetzt, etc.
  Mit Zitat antworten Zitat