Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Daten aus Variablen in Tabellenform darstellen


dontello - So 27.03.11 16:41
Titel: Daten aus Variablen in Tabellenform darstellen
Hallo,

hier mal mein Anliegen:

Der Benutzer gibt über eine Eingabemaske Daten ein, welche in Variablen gespeichert werden.
Nun möchte ich diese Daten in einer Tabellenzeile darstellen. Der Benutzer sollte die Möglichkeit haben über die Eingabemaske weitere Zeilen einzufügen.

Welche Komponente bietet sich für dieses Vorhaben an? Ich möchte eine Tabelle mit Spaltenüberschriften.


jaenicke - So 27.03.11 17:01

Mit TStringGrid ist das möglich und wenn es auch gut aussehen und mehr Funktionen bieten soll, bieten sich die VirtualTrees [http://www.delphi-gems.com/index.php?option=com_content&task=view&id=12&Itemid=38] an.


dontello - So 27.03.11 17:04

Ja das TStringGrid hat mit optisch auch nicht so zugesagt optisch.

Gibt es denn eine Möglichkeit mit der TDBGrid zu arbeiten und diese mit Variablen zu füllen, oder geht das nur in Verbindung mit einer Datenbank?


ub60 - So 27.03.11 17:04

TListView wurde auch gehen.

ub60


dontello - So 27.03.11 18:47

Ich habe jetz im Listview drei Columns festgelegt. Wie kann ich dort meine Daten drunter einordnen zur jeweiligen spalte?


jaenicke - So 27.03.11 18:55


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
var
  NewItem: TListItem;
begin
  NewItem := MyListView.Items.Add;
  NewItem.Caption := 'Erste Spalte';
  NewItem.SubItems.Add('Zweite Spalte');
  NewItem.SubItems.Add('Dritte Spalte');
Trotzdem rate ich eher zu den genanten VirtualTrees, weil die besser anpassbar sind und bei der Datenanbindung deutlich besser sind.


dontello - So 27.03.11 18:57

Ist die Komponenete denn kostenpflichtig?


jaenicke - So 27.03.11 18:58

Klick den Link doch einfach an... :roll:

Nein, ist sie nicht, die ist Open Source unter der MPL oder LGPL.


dontello - So 27.03.11 19:18

ok hab mir das ganze mal installiert.

hast du denn evtl ein beispile für die erstellung einer solchen tabelle?


jaenicke - So 27.03.11 19:55

Beispiele sind eigentlich dabei, oder?

Hier findest du ein Programm von mir, in dem ich die Komponente nutze:
http://www.delphi-forum.de/viewtopic.php?t=93084&start=0&postorder=asc

Und ein kleines Beispiel liegt im Anhang.


dontello - Mo 28.03.11 00:15

danke für dein beispiel.

ich habe die tvirtualtable komponente gefunden. Weißt du wie ich dort zur Laufzeit einen neuen Datensatz einfügen kann?


jaenicke - Mo 28.03.11 06:05

Diese Datenbankkomponente kenne ich nicht. Aber da es ein TDataSet ist wird es wie jedes TDataSet funktionieren. Zuerst musst du (mit AddField vermutlich) die Felddefinitionen für die Datenbankfelder einfügen. Danach kannst du dann so etwas damit machen:

Delphi-Quelltext
1:
2:
3:
4:
5:
  MyVirtualTable.Append;
  MyVirtualTable.FieldByName('INDEX').AsInteger := 343;
  MyVirtualTable.FieldByName('ENTRYNAME').AsString := 'Wertname';
  MyVirtualTable.FieldByName('ENTRYVALUE').AsString := 'Wert';
  MyVirtualTable.Post;
Ich frage mich allerdings, ob du diese Komponente wirklich brauchst und ob dir klar ist wofür diese da ist. ;-)