![]() |
Verwalten einer variablen Menge von TPanels
Hallo,
Ich habe Form eine unterschiedliche Menge von Panels. um diese Rauszufinden bzw diese anzuordnen mache ich folgendes:
Delphi-Quellcode:
for k := 0 to pred(ControlCount) do
if Controls[k] is TPanel then Begin Controls[k].top := y; Controls[k].left := x; end; So weit so gut das Funktioniert auch... hier die erste Frage. Gibt es eine bessere Möglich keit des verwaltens (habe D5) Wenn ein neues Panel hinzukommt wärend der Laufzeit - wie erfahre ich die Position des letzten Panels? |
Re: Verwalten einer variablen Menge von TPanels
Zitat:
an sich gibt es andere Möglichkeiten die zu verwalten, aber ob die Besser sind hängt davon ab, was Du mit den Panels vor hast. Hier empfehlen sich die üblichen Verdächtigen. Datenstrukturen, die eine variable Anzahl von gleichen Elementen verwalten können sind immer Listen (in jeglicher Form) sowie Bäume. Natürlich sind Listen nur entartete Bäume, es gibt also im Prinzip keinen großen Unterschied zwischen den Beiden. In Delphi hast Du wenn es um Listen geht zwei Möglichkeiten, Du kannst auf TList oder TObjectList zurückgreifen, ob es die (oder eine davon) schon in D5 gibt weiß ich nicht. Aber Du findest sicherlich in der DP die eine oder andere Implementierung für Listen. An sich müsstest Du nur ein dyn. Array verwalten. Idealerweise einfach ein Array mit einer festen Größe anlegen (z.B. 100 Elemente), beim Füllen immer die größe und den tatsächlichen Füllstand merken und wenn's Array voll wird, dann einfach neue Elemente hinzufügen (z.B. wieder 100). Dadurch verteilt sich der Overhead des Speicherallozierens auf alle 100 Elemente, macht das ganze etwas effizienter. Zudem kannst Du dank des Arrays wahlfrei auf einzelne Elemente zugreifen (anders als bei verketteten Listen). Zitat:
Zudem könntest Du gerade bei Listen bzw. Bäumen auch dafür sorgen, dass die Panels schon sortiert (z.B. nach der Position) eingefügt werden. Ist das Letzte Panel ohnehin das mit der "größten" Position, ist das natürlich nicht nötig. Gruß Der Unwissende |
Re: Verwalten einer variablen Menge von TPanels
Zusätzlich zu den Listen, die Der_Unwissende genannt hat, gibt es noch TComponentList (auch in der Unit Contnrs). Aber ob es die schon seit D5 gibt, ka.
Zitat:
|
Re: Verwalten einer variablen Menge von TPanels
Hallo Delphinia,
Warum möchtest du dein Beispiel ändern bzw. fragst nach was einfacherem ? Denn in meinen Augen ist das einfach oder ich verstehe nicht ganz auf was du ninaus möchtest ? Wenn du mit letztem Panel meinst, das welches du als letztes hinzugefügt hast, so hat es den höchsten Index in controls ... |
Re: Verwalten einer variablen Menge von TPanels
Hallo Doreen,
wenn du nach der Position des letzten Panels fragst, dann vielleicht deshalb, weil du ein bestimmtes Layout für die Panels hast? In dem Fall ist die Position meistens eine Funktion des Panel-Index und da macht es Sinn eine spezielle Liste der Panels zu führen um den Index nicht erst suchen zu müssen. Grüße vom marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz