AGB  ·  Datenschutz  ·  Impressum  







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

Objekte in einer Liste anzeigen

Ein Thema von dr_gessi · begonnen am 24. Jul 2006 · letzter Beitrag vom 24. Jul 2006
Antwort Antwort
dr_gessi

Registriert seit: 5. Jun 2006
12 Beiträge
 
#1

Objekte in einer Liste anzeigen

  Alt 24. Jul 2006, 17:32
Hallo zusammen,

ich möchte gerne beliebig viele Instanzen eines Objektes in einer Liste darstellen. Dieses Objekt kann dabei aufgebaut sein wie eine Form, beinhaltet also Felder, Buttons, etc.

Meine Frage ist nun, wie kann ich soetwas bewerkstelligen? Welche Klassen muss ich da benutzen?

Anbei ein Screen Shot eines Beispiels (Datenträgerverwaltung unter Windows), wie ich mir es vorgestellt habe. Hier sieht man rechts unten die Auflistung aller Platten. Wie macht man sowas mit Delphi?

Würde mich sehr über Hinweise freuen.

Vielen Dank,
dr_gessi
Miniaturansicht angehängter Grafiken
bsp_189.gif  
  Mit Zitat antworten Zitat
Der_Unwissende

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

Re: Objekte in einer Liste anzeigen

  Alt 24. Jul 2006, 18:23
Hi,
woran genau scheiterst du denn gerade?
Also an sich ist es ganz einfach. Das was du als Grundlage benötigst ist eine TScrollBox (Zusätzlich). Der Name verrät eigentlich schon grob was dieses Control leistet. Du packst x Controls in diese ScrollBox und kannst hier scrollen (wenn die Kinder größer als der sichtbare Bereich sind).
Ja, wie bei allen Controls wird mit insertControl ein neues Control eingefügt und mittels Controls[i] kannst du auf das i-te Kind des Controls zugreifen.

Was du jetzt eigentlich nur noch machen musst ist dich ein wenig um sauberer Kapselung zu bemühen. Wie gesagt, ein Control kann wieder Controlls aufnehmen. Die TScrollbox ist natürlich schon ein Control (und soll ja auch Sachen aufnehmen). Ziemlich viele der sichtbaren Komponenten sind natürlich auch Controls. Natürlich würden Formulare sich hier eher schlecht machen, was du wahrscheinlich suchst ist ein TPanel. Wie man die benutzt sollte dir grob klar sein. Falls nicht lies einfach ein Tutorial dazu.
TPanel ist ein einfacher Container. Für die Anzeige deines Objekts kannst du am einfachsten eine Klasse von TPanel ableiten. Hier legst du im Konstruktor einfach die anderen Elemente (Buttons, Labels, ...) an. Damit hast du ein Objekt, dass du einfach dyn. erzeugen kannst und da sie von TPanel erben (und damit auch von TControl) kannst du die auch direkt auf andere Controlls (z.B. eine TScrollBox) einfügen.
Um es gleich richtig zu machen solltest du allerdings die Daten gleich von dieser Anzeige trennen. Am Beispiel der Datenträgerverwaltung : Du erstellst mind. zwei Klassen. Die eine speichert nur die Werte. In der Datenträgerverwaltung entspricht dann jeder Datenträger einer Instanz dieser Klasse. Hier werden dann alle Eigenschaften des Datenträger (z.B. Füllstand, Dateisytem, ...) gespeichert.
Deine Darstellung (also der Nachfolger von TPanel) ist dann eine unabhängige Klasse davon. Unabhängig nur in dem Sinn, dass deine Datenträger nicht ihre Darstellung kennen müssen. Dein TPanel Nachfolger dient anders herum auch nur der Visualisierung irgendwelcher Werte und muss nur die Werte kennen (egal wo die herkommen und ob man dafür Datenträger abfragen muss oder nicht).
Der Vorteil liegt darin, dass du durch diese Trennung leicht deine Visualisierung verändern kannst. Du kannst aber auch gleich mehrere verschiedene Anbieten. Ein Beispiel ist wieder durch die Datenträgerverwaltung gegeben, du hast einmal oben diese ausführliche Textliste (ein TListView) und unten halt das Ding mit den eigenen Controls.

Gruß Der Unwissende
  Mit Zitat antworten Zitat
dr_gessi

Registriert seit: 5. Jun 2006
12 Beiträge
 
#3

Re: Objekte in einer Liste anzeigen

  Alt 24. Jul 2006, 18:55
Hallo Unwissender,

ich bedanke mich für Deine super ausführliche Antwort! Da steckt also doch ein klein bisschen mehr Arbeit drin, als ich zuvor vermutet habe. Trotzdem gefällt mir der Ansatz.

Liebe Grüße,
dr_gessi
  Mit Zitat antworten Zitat
Der_Unwissende

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

Re: Objekte in einer Liste anzeigen

  Alt 24. Jul 2006, 20:44
Klingt ehrlich gesagt nach mehr als es ist.
An sich ist es nur recht schwer auf Beiträge zu antworten, die so allgemein gehalten sind wie deine. Du solltest immer so konkret wie möglich dein Problem beschreiben. Bei deiner Frage ist es einfach für die anderen Leute im Forum schwer zu antworten, da du nicht sagst woran genau du eigentlich scheiterst. Wenn du etwas mehr zu dem sagst was dein Ansatz ist (oder ob du gar keinen hast) und wie gut deine Kenntnisse im jeweiligen Gebiet sind, dann hilft das in der Regel deutlich mehr Ergebnisse zu bekommen. Ist nur als Tipp für's nächste Mal zu verstehen!

Freu mich jedenfalls, wenn ich dir helfen konnte!
  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 19:21 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