AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Verwalten einer variablen Menge von TPanels

Offene Frage von "delphinia"
Ein Thema von delphinia · begonnen am 11. Nov 2007 · letzter Beitrag vom 12. Nov 2007
Antwort Antwort
delphinia

Registriert seit: 16. Feb 2006
444 Beiträge
 
Delphi 11 Alexandria
 
#1

Verwalten einer variablen Menge von TPanels

  Alt 11. Nov 2007, 17:59
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?
Doreen
Gruss Doreen
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

Re: Verwalten einer variablen Menge von TPanels

  Alt 11. Nov 2007, 18:14
Zitat von delphinia:
So weit so gut das Funktioniert auch...
hier die erste Frage. Gibt es eine bessere Möglich keit des verwaltens (habe D5)
Hi,
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 von delphinia:
Wenn ein neues Panel hinzukommt wärend der Laufzeit - wie erfahre ich die Position des letzten Panels?
Da gibt es wieder verschiedene Möglichkeiten. Eine einfache ist, dass Du einfach Variablen anlegst, in denen diese Informationen gespeichert werden. Der Nachteil ist dann ganz klar, dass Du eben auch dafür sorgen musst, dass die Belegung der Variablen immer up to date ist. Greifst Du auf eine Liste zurück, kannst Du einfach das Letzte Panel anhängen und das letzte Element ist entsprechend immer auch das letzte Panel. Die fertigen Listen haben eine Eigenschaft, mit der Du das letzte Element ermitteln kannst, bei einer eigenen Implementierung kannst Du die natürlich auch vorsehen (Füllstand merkst Du Dir eh, das Element an diesem Index ist das Letzte).
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
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Verwalten einer variablen Menge von TPanels

  Alt 12. Nov 2007, 08:19
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 von delphinia:
Wenn ein neues Panel hinzukommt wärend der Laufzeit - wie erfahre ich die Position des letzten Panels?
Wie kommt denn ein Panel hinzu? Du erzeugst es doch wohl selber, also kennst du es ya und kannst dementsprechend die gewünschten Werte auslesen, oder?! ...
Chris
  Mit Zitat antworten Zitat
Benutzerbild von peschai
peschai

Registriert seit: 15. Feb 2004
Ort: Göppingen
270 Beiträge
 
Delphi XE5 Professional
 
#4

Re: Verwalten einer variablen Menge von TPanels

  Alt 12. Nov 2007, 09:07
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 ...
Peter Schaible
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Verwalten einer variablen Menge von TPanels

  Alt 12. Nov 2007, 10:48
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz