Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Welche Komponente für Tabellen? (https://www.delphipraxis.net/188147-welche-komponente-fuer-tabellen.html)

hedie 3. Feb 2016 18:08

Welche Komponente für Tabellen?
 
Hallo zusammen

Ich möchte in einer Tabelle die Datensätze einer MySQL Tabelle ausgeben.

Nun frage ich mich, mit welches Komponente dies am besten und elegantesten zu realisieren ist.
Ich habe mir mal StrngGrid angeschaut. Auch ListView und ListBox

Wobei mich keine auf anhieb überzeugte.
Auffüllen würde/müsste ich die Tabelle dann selbst.

Ich möchte auch die Möglichkeit haben, links von einem Eintrag ein Icon anzuzeigen.

Bei StringGrid gefällt mir nicht, dass ich mich selbst manuell darum kümmern muss, dass
die Spalten immer so breit sind wie das StringGrid selbst.

Perfekt wäre noch, wenn die Tabelle das darunterliegende TImage durchscheinen lässt, bzw. transparent ist.
Das geht vermutlich jedoch nicht.

//EDIT
Die Tabelle muss nur ReadOnly können. Vorerst... :)

Danke für euere kreativen Vorschläge.

DeddyH 3. Feb 2016 18:12

AW: Welche Komponente für Tabellen?
 
Hast Du Dir die VirtualTreeview schon einmal angeschaut? Die Lernkurve ist zwar ziemlich steil, dafür kann das Ding fast alles, außer Kaffee kochen vielleicht.

hedie 3. Feb 2016 18:13

AW: Welche Komponente für Tabellen?
 
Danke für deine Antwort.

Meinst du VirtualTreeview oder einfach TreeView?

DeddyH 3. Feb 2016 18:34

AW: Welche Komponente für Tabellen?
 
Ich meinte VirtualTreeview, auch als VirtualStringTree bekannt. OpenSource und sehr mächtig.

hedie 3. Feb 2016 18:40

AW: Welche Komponente für Tabellen?
 
Danke werde ich mir mal anschauen :)

Perlsau 3. Feb 2016 22:38

AW: Welche Komponente für Tabellen?
 
Was spricht dagegen, einfach ein TDBGrid zu verwenden oder, mit ein paar mehr Möglichkeiten, den kostenlosen Jedi-Abkömmling TjvDBGrid? Da könntest du z.B. festlegen, daß eine bestimmte Spalte immer automatisch angepaßt wird. TDBGrid wird einfach mit dem jeweiligen TDataSource verbunden. In der Titelzeile stehen die Tabellen-Namen, wie sie im Property Display des jeweileigen Datasets angegeben sind. Du kannst die Ausrichtung des Textes sowie des Titels für jede Spalte extra einstellen, ebenso die anderen Textattribute. Zusätzlich zeigt TDBGrid immer den aktuell ausgewählten Datensatz an.

Dejan Vu 4. Feb 2016 06:48

AW: Welche Komponente für Tabellen?
 
Und da muss man dann noch nicht einmal programmieren.

DeddyH 4. Feb 2016 07:10

AW: Welche Komponente für Tabellen?
 
AFAIK steht das in der Starter-Edition nicht zur Verfügung.

Perlsau 4. Feb 2016 07:43

AW: Welche Komponente für Tabellen?
 
Du meinst, man kann in der Starter-Edition auch keine Jedi-Komponenten installieren? Oder zumindest diejenigen nicht, die mit Datenbanken zu tun haben? Wenn ja, dann wußte ich das nicht. Aber könnte man dann nicht wenigstens das TjvDBGrid zur Laufzeit erzeugen, wenn man die benötigten Units einbindet? Und wie greift man dann mit XE6Starter überhaupt auf eine MySQL-Datenbank zu?

DeddyH 4. Feb 2016 08:01

AW: Welche Komponente für Tabellen?
 
Meines Wissens nach enthält die Starter-Edition kein TDataset. Komponenten, die davon abgeleitet werden, kann man also nicht benutzen. Das heißt aber ja nicht, dass man deswegen nicht mit Datenbanken arbeiten könnte, es ist nur etwas mehr Aufwand nötig als bloße Komponenten-Schubserei. Ich weiß nicht, ob es eine Unicode-Portierung davon gibt, aber MySQL direct wäre z.B. eine Option.

hedie 4. Feb 2016 08:12

AW: Welche Komponente für Tabellen?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Danke für eure Antworten

Es ist korrekt, dass die Starter Version keinerlei Datenbank komponenten enthält.
Ich gehe den Weg über MySQL Direkt mittels der libmysql.dll

Funktioniert bisher einwandfrei und sehr schnell.


Ich habe mir virtualTreeView angesehen und bin ziemlich begeistert.
Nur wie bereits erwähnt wurde, braucht es dazu ein wenig Einarbeitung.

Für meinen Fall, möchte ich nur eine simple Tabelle erzeugen ohne Baumstruktur.
Im Anhang habe ich ein Bild von einem treeview welcher ziemlich genau so aussieht wie ich das gerne hätte.
Anstelle der Checkbox links würde ich ein icon platzieren.

Leider habe ich bisher keine zielführende Dokumentation gefunden, mit welcher ich sehe, wie ich das gewünschte Ziel erreichen kann.

Hat mir hier vieleicht jemand einen Tipp, wie ich meinen VirtualTreeView so aussehen lassen kann wie jener im Bild?

Danke schonmal

DeddyH 4. Feb 2016 08:16

AW: Welche Komponente für Tabellen?
 
Schau doch mal auf der "alten" Hosting-Seite. Da gibt es eine Gallerie und jede Menge Demos. Inwiefern die allerdings noch Code-kompatibel sind, kann ich auch nicht sagen.

hedie 4. Feb 2016 13:25

AW: Welche Komponente für Tabellen?
 
Weiss jemand wie man die gepunktete Linie bei den Nodes ausblenden kann?

Daten einfügen klappt.

himitsu 4. Feb 2016 13:34

AW: Welche Komponente für Tabellen?
 
Die Visual LiveBindings sind auch nicht in der Starter drin?

* Klasse mit der Struktur (Felder der Tabelle) erstellen
* als TList<> mit den Daten befüllen
* per LiveBinding ans StringGrid binden

hedie 4. Feb 2016 13:40

AW: Welche Komponente für Tabellen?
 
Livebindings gibt es erst ab Professional.

Aviator 4. Feb 2016 14:14

AW: Welche Komponente für Tabellen?
 
Zitat:

Zitat von hedie (Beitrag 1329412)
Weiss jemand wie man die gepunktete Linie bei den Nodes ausblenden kann?

Daten einfügen klappt.

Einach in den TreeOptions --> Paint Options --> toShowTreeLines deaktivieren.

Alternativ gibt es noch die Option TreeOptions --> Paint Options --> toShowRoot. Dann werden allerdings auch die + und - Symbole entfernt was jedoch bei einer einzigen Ebene von Nodes nicht schlimm ist.

hedie 4. Feb 2016 14:25

AW: Welche Komponente für Tabellen?
 
Vielen Dank!
Sieht schon sehr gut aus.

Bisher übergebe ich ein record bestehend aus strings.
Kann man auch anstelle von strings z.b. ein TImage übergeben und dieses in die Zelle zeichnen?

Aviator 4. Feb 2016 14:26

AW: Welche Komponente für Tabellen?
 
Zitat:

Zitat von hedie (Beitrag 1329364)
Für meinen Fall, möchte ich nur eine simple Tabelle erzeugen ohne Baumstruktur.
Im Anhang habe ich ein Bild von einem treeview welcher ziemlich genau so aussieht wie ich das gerne hätte.
Anstelle der Checkbox links würde ich ein icon platzieren.

Leider habe ich bisher keine zielführende Dokumentation gefunden, mit welcher ich sehe, wie ich das gewünschte Ziel erreichen kann.

Icons können pro Node durch eine Automatik vom Tree platziert werden indem du einfach das OnGetImageIndex Event implementierst und dort entsprechend die Icons zuweist. Hier gibst du dem Tree einfach einen IconIndex von einer zuvor angebundenen ImageList. Das Icon kann zudem pro Column gesetzt werden.

[EDIT]Icons können selbstverständlich auch selbst in einem der tausenden PaintEvents (OnBeforeCellPaint, OnAfterCellPaint, OnAfterItemPaint, OnAfterPaint, ...) gezeichnet werden. Hier kommt es immer ganz darauf an, was "sichtbarer" sein soll. Das letzte Event zum Zeichnen einer Zelle das ausgelöst wird ist AFAIK OnAfterCellPaint. Hier wird dann nochmal über alles andere drüber gemalt.[/EDIT]

Das selbe funktioniert auch für den Header. Hier musst du mit der Property
Delphi-Quellcode:
vst.Header.Images
ebenfalls eine ImageList anbinden und dann mit der Property
Delphi-Quellcode:
vst.Header.Columns[x].IconIndex
den Index für das Icon festlegen.

Schau dir wie von DeddyH erwähnt auf der "alten" HomePage des VirtualTrees einmal die Dokumentation in der PDF Datei an. Die ist besser gepflegt als die CHM Datei. Allerdings fehlen auch dort drin viele neue Funktionen. Die beste Hilfe wenn du dich ein wenig mit der Komponente auseinandergesetzt hast ist sowieso der SourceCode der Komponente. Wenn du dich dort mal ein bisschen eingearbeitet hast, dann läuft das irgendwann automatisch. Die Demoprojekte welche normalerweise bei der Komponente beiliegen sind ebenfalls sehr nützlich und nur zu empfehlen. Hier werden von Basics bis hin zu fortgeschrittenen Techniken alles kurz angetastet um einen kurzen Einstieg zu vermitteln.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:14 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