Autor Beitrag
HeftCD
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 91
Erhaltene Danke: 9

Win2k, WinXP, Win7, Win8
Delphi 3 Pro, Delphi 5, Delphi 7, Turbo Delphi, BC1
BeitragVerfasst: Mo 08.08.11 12:36 
Hallo,

und zwar möchte ich - *** am besten mit Delphi 3 Pro (max. D5Std; allerhöchstens D7 Std) ***

  • zu einer Person Daten (Name im Tree) in einer Memo oder Strgrid Komponente anzeigen.
  • In der Treeview sollen verschiedene Icons an den Kreuzchen/Nodes angezeigt werden
  • in der Treeview sollten Anklicken/Umbenennen hinzufügen und löschen möglich sein
  • im Memo/Stringgrid die Daten wie Adresse, Tel, Geburtstag, Notizen
  • alle Daten sollen in einer simplen, portablen lokalen Datenbank gespeichert werden, sodaß sie womöglich auch sortiert (z.B. nach Alter o.ä. ausgegeben/aufgelistet werden können)
  • sowohl Überschriften[also Namen der Treenodes] als auch Content [Adr./Tel./etc.] sollen durchsuchbar sein und die Ergebnisse in einer Liste gesammelt werden - bei Click darauf soll dann der Treenode selektiert werden - wie üblich
  • ca. 30-1000 Datensätze (also Personennamen; dazu müßte ich jeweils die Informationen zuordnen)




falls ich mich für Memo entscheide (wahrscheinlich weniger Aufwand - sollen die Daten alle ganz siple untereinander angezeigt werden)

A) Wichtig ist auf jeden Fall die portable Datenbank - da dachte ich an Firebird oder SQLite - ich hab zwar versucht mich in beide einzulesen, allerdings suche ich immer noch gute, verständliche Tutorials. Falls da noch wer welche hätte?


B) Schaff ich das mit der Delphi3/5/7 Treeview oder muß ich das besser mit der VirtualTreeview machen? Welche dringenden Vorteile brächte mir das gegenüber der eingebauten noch?
Gibts auch dazu einfache/ oder passgenaue Tutorias?

c)Ganz wichtig noch, die Verknüpfung der Daten zwischen Treview, Adress/Tel-Informationen zum Namen und Datenbank [Speicherung und Abfrage]
Wie geht man dabei vor?
Mach ich das mit Pointern oder nur Aarrys of Records zur jew. Treenodezahl oder Treenview und Records?
[mit Pointern hab ich noch Probleme]


Wäre nett, wenn Ihr kurz erläutern könntet, wie Ihr vorgehen würdet, welche Tree-Komponenten besser sind und welche Datenbank.
Mit ist das Thema auch nützlich für andere.
Ich danke schon mal im Voraus.


Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mo 08.08.2011 um 12:51


Zuletzt bearbeitet von HeftCD am Mo 08.08.11 14:31, insgesamt 1-mal bearbeitet
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Mo 08.08.11 13:40 
user profile iconHeftCD hat folgendes geschrieben Zum zitierten Posting springen:
A) Wichtig ist auf jeden Fall die portable Datenbank - da dachte ich an Firebird oder SQLite - ich hab zwar versucht mich in beide einzulesen, allerdings suche ich immer noch gute, verständliche Tutorials. Falls da noch wer welche hätte?

SQLite:
www.itwriting.com/blog/?page_id=659
Dort ist glaube ich beim Download ein Beispiel dabei. Ich kannte überhaupt keine Probleme damit (hab allerdings bisher noch keine komplexen Sachen mit gemacht). Portabel ist sie auf jeden Fall absolut, nur eine dll neben deine exe und fertig. Für Single-User-Beispiele ist SQLite sehr beliebt.


user profile iconHeftCD hat folgendes geschrieben Zum zitierten Posting springen:
c)Ganz wichtig noch, die Verknüpfung der Daten zwischen Treview, Adress/Tel-Informationen zum Namen und Datenbank [Speicherung und Abfrage]
Wie geht man dabei vor?
Mach ich das mit Pointern oder nur Aarrys of Records zur jew. Treenodezahl oder Treenview und Records?

Also ich würds so machen:
Du hast erstmal deine normale Datenbank mit den Werten (evtl in mehrere Tabellen normalisiert). Dort sind einfach deine Leute mit den Daten gespeichert. Jede Person hat natürlich eine ID.

Deine Baumstruktur würde ich nur über die IDs machen.
Die Baumstruktur kannst du dann so machen:

ausblenden Quelltext
1:
 Vater-ID | Kind-ID					


Eine Afrage könnte dann so aussehen:

ausblenden SQL-Anweisung
1:
2:
SELECT Personen.Name FROM Personen, Tree
WHERE Tree.VaterID = 42 AND Personen.ID = Tree.KindID


=> Liefert alle Kinder von 42.

ausblenden SQL-Anweisung
1:
2:
SELECT Personen.Name FROM Personen, Tree T1, Tree T2
WHERE T1.VaterID = 42 AND T2.VaterID = T1.KindID AND T2.KindID = Personen.ID


=> Liefert alle Kinder aller Kinder von 42 (also die Enkel sozusagen).

Du kannst das ganze auch rekursiv machen. Ob das mit SQLite geht ist die Frage. Dann könntest du beliebig viele Stufen machen.

Da ich aber nicht glaube dass du Performance-Probleme kriegst (du willst ja nicht alle 30k in einen Baum packen denke ich), dürfte sogar der erste SQL-Befehl nutzen.

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)