![]() |
Datenbank: SQLite-3 • Version: 3 • Zugriff über: ZeosLib
Kundenliste
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo, Ich taste mich so langsam an Datenbankanwendungen heran und habe nach vorangegangenen Übungen nun eine Erweiterung des Programms Warenverkauf geschrieben. Ich bedanke mich hiermit nochmals für die Hilfe im Forum,vor allem bei Hobbycoder, p80286 und Haentschmann, sowie weiteren usern die mir viele Tipps und Hinweise gegeben haben. Hoffentlich enttäusche ich Euch nicht mit dem jetzigen Versuch. Ich habe eine Objectlist erstellt und will mit deren Hilfe Daten in eine SQLite-3 Tabelle speichern und natürlich auch wieder auslesen.
Das hat soweit erst einmal geklappt. Die Daten wurden erstellt und in einem Listview dargestellt. Auch die Speicherung in die Datenbank klappt soweit ganz gut. Nach dem Neustart des Programms sind die automatisch erstellten Daten wieder vorhanden. 1. Frage: ich habe eine TCustomer.create erstellt. Muss ich das irgendwo auch wieder freigeben? Die Customerlist gebe ich in Destroy frei. 2. Frage: Die Datensätze werden nicht in den gesondert erstellten TEdit-Feldern angezeigt, ausgenommen die 2 am Ende der Tabelle(mit der KDNR 67). Ich kann mir nicht erklären warum und habe keinen Ansatz, um die Ursache zu ergründen. Komischerweise wird in den TEdit's nicht der entsprechende Datensatz des ListView sondern ein ganz anderer Datensatz der Tabelle angezeigt, der tatsächlich auch existiert. Warum erscheinen die Daten nicht in den Edit-Feldern? Also vermutlich werden nur die "fehlerhaften Datensätze" (KDNR 67) in den TEdits angezeigt. Was mache ich falsch, oder wie muss ich vorgehen? Es handelt sich nur um ein Übungsprogramm ohne tiefen Sinn nur für mein Verständnis, um in der Sache weiter zu kommen. Bin ich damit auf dem richtigen Weg? Ich wünsche allen Forumnutzern ein frohes Osterfest.:thumb: |
AW: Kundenliste
Zitat:
Zitat:
|
AW: Kundenliste
Create und Destroy:
Delphi-Quellcode:
reicht das so?
procedure TFRMMainCustomer.FormCreate(Sender: TObject);
begin CustomerList:=TCustomerList.Create; connect; end; procedure TFRMMainCustomer.FormDestroy(Sender: TOBject); begin CustomerList.Free; end; |
AW: Kundenliste
Sieht in Ordnung aus, sofern Du nicht explizit die OwnsObjects-Eigenschaft der Liste auf false gesetzt hast.
|
AW: Kundenliste
ich frag mal ganz naiv: im listview die OwnerData-Eigenschaft im ObjectInspector steht auf false. Bei true sehe ich gar nichts.
Bin ich da an dem richtigen Punkt, oder wäre das eine andere Stellschraube? Was erreiche ich damit? |
AW: Kundenliste
Das OwnerData einer ListView besagt, ob diese im virtuellen Modus sein soll, der sehr effektiv bei großen Eintragszahlen ist. Ich meinte aber die OwnsObjects-Eigenschaft Deiner Objektliste, die festlegt, ob die enthaltenen Objekte automatisch freigegeben werden sollen, sobald sie aus der Liste entfernt werden.
|
AW: Kundenliste
Zitat:
|
AW: Kundenliste
Der Konstruktor der TObjectList hat einen Parameter, mit dem das eingestellt wird.
|
AW: Kundenliste
Ich habe die objectlist lediglich im Hauptformular mit den Methoden erzeugt/wieder freigegeben:
Zitat:
Erkenntlich habe ich also überhaupt keine Schalter gesetzt. Wie und wo müßte man das tun? Entschulige, es ist für mich Neuland. |
AW: Kundenliste
Beide (sowohl die nicht generische als auch die generische) TObjectList nutzen beim Aufruf
Delphi-Quellcode:
den internen Constructor
.Create
Delphi-Quellcode:
constructor Create(AOwnsObjects: Boolean = True); overload;
D.h. in diesem Falle wird der Defaultwert gezogen und der ist True. Wenn du also nirgendwo OwnsObjects der Liste setzt, steht es auf True. In der Starter ist afaik leider kein Sourcecode enthalten, aber die Hilfe sollte das trotzdem ausspucken. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz