Out of Memory hatte ich bei dem Versuch von 10000 "Panels". Näher eingerenzt hatte ich das in der Nacht nicht mehr.
Ich weiß nicht, ob Bitmaps und die verwendeten Kopierfunktionen das Maß aller Dinge sind. Grundsätzlich kann ich mir aber nicht vorstellen, dass ein Kopieren von Speicherinhalten so sehr langsam sein muss. Bestimmt kann man hier auf schnelle Lösungen umstellen.
Wenn man sich das ständige Neuzeichnen von gestylten Controls vorstellt würde ich schon eher mit erhöhtem Zeitbedarf rechnen.
Gemäß meiner Überlegung könnte man den bunten Button mit Schörkeln und Lichteffekten im Puffer lassen und lediglich den Text neu schreiben, wenn ein neues Caption zugewiesen wird.
Erst wenn der Button gedrückt wird muss auch sein Aussehen (nämlich gedrückt) neu berechnet werden.
Ob man das Konzept ohne
OpenGL oder ähnliches brauchbar realisieren kann, weiß ich immer noch nicht. Der Knackpunkt ist wohl, dass selbst das Kopieren des berechneten Gesamtbildes auf die Formularfläche mit dem Mainthread syncronisiert werden muss - und das verhindert dann eben dass die Darstellung von Formularänderungen unabhängig vom Mainthread erfolgen kann (eben z.B. auch nicht während dem schrittweisen Debuggen einer Anwendung).
Evtl. könnte man - mal so als Überlegung - die gesamte Businesslogik in einen eigenen Thread auslagern.
Dann würde der Mainthread sich allein um die Formularaktualisierung kümmern und die Mausereignisse an die Businesslogik geben.
Die Businesslogik (die man ja ohnehin von der
GUI trennen sollte) könnte in einem eigenen Thread gestartet werden (TMyBusinesslogic.Start).
Das sind natürlich alles recht unscharfe Überlegungen aber das Thema würde ich gern noch diskutieren und entsprechend lernen...
@Namenloser
Das stimmt. Die Verwendung gleicher "Bitmapmuster" für gleiche Controls gleicher Größe und gleichen Statuses habe ich auch schon als zweckmäßig erachtet.
Als einzelner Programmierer in 3 Stunden habe ich dann ja schon mal ein bissl was erreicht. Wenn meine Firma 100 Angestellte hätte wäre ich aber auch nicht unglücklich