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/)
-   -   Delphi Eingaben im Formular zeitgleich in ListView schreiben (https://www.delphipraxis.net/52011-eingaben-im-formular-zeitgleich-listview-schreiben.html)

camepul 22. Aug 2005 17:01


Eingaben im Formular zeitgleich in ListView schreiben
 
Hallo,

seit Kurzem arbeite ich mit Borland Delphi 2005 und bin in Sachen Delphi blutiger Anfänger.
Jetzt habe ich ein Projekt (na ja, soll es mal werden, wenn alle Funktionen integriert sind) erstellt und die "einfachen" Dinge funktionieren auch (Unterformulare öffnen, Dateien öffnen/speichern etc.).
Nun hab ich einige Probleme, die mich nicht mehr weiterkommen lassen.

1. Werden Daten in die Formulare eingegeben, sollen Sie zeitgleich in einer ListView geschrieben werden.
Die ListView steht auf vsReport und enthält z.B. die Spalten "Nr., Marke, Modell..."
Die Eingaben/Auswahl der verschiedenen Felder/ComboBoxen sollen genau in dieser Reihenfolge in der Listview geschrieben werden (zeitgleich zur Eingabe/Auswahl).
Die erste Spalte der ListView (Nr.) kann nirgends ausgewählt/eingegeben werden und soll in der ListView automatisch je nach Anzahl der Datensätze hochgezählt werden.

2. Wie lege ich eine Datenbank innerhalb des Programms an? D.h., sollte ich das Programm irgendwann mal fertig bringen, möchte ich alles als .exe auf CD-Rom und auf einem anderen Computer installieren. (.exe erstellen mit borland kapier ich auch - wenigstens etwas :wink: ).

Ich hab' zwar noch mehr Fragen, auf die ich auch nach tagelanger Suche nix passendes gefunden habe, aber ich bin schon froh, wenn mir hier jetzt mal jemand helfen könnte.

Vielleicht ist es auch ganz simpel, und ich hab' momentan einfach nur ein Brett vorm Kopf? :wall:

Danke schon mal!
Petra

marabu 22. Aug 2005 18:27

Re: Eingaben im Formular zeitgleich in ListView schreiben
 
Hallo Petra,

herzlich willkommen in der Delphi-PRAXiS.

Es wird das Beste sein, wenn wir deine Probleme einzeln angehen. Ich identifiziere dein erstes Problem im Zusammenhang mit der Komponente TListView. Erstelle dir doch einfach ein Testprojekt mit einer Form, darauf eine TListView und Buttons für Add und Delete:

Delphi-Quellcode:
procedure TDemoForm.AddButtonClick(Sender: TObject);
var
  li: TListItem;
begin
  li := ListView.Items.Add;
  li.Caption := IntToStr(ListView.Items.Count);
  li.SubItems.Add('Marke');
  li.SubItems.Add('Modell');
end;

procedure TDemoForm.DeleteButtonClick(Sender: TObject);
begin
  while Assigned(ListView.Selected) do
    ListView.Selected.Free;
end;
Beim Löschen stellst du dann fest, dass deine Nummerierung Lücken erhält. Bevor wir weiter machen, müsste ich wissen, ob das von dir gewollt ist.

Grüße vom marabu

Luckie 22. Aug 2005 18:30

Re: Eingaben im Formular zeitgleich in ListView schreiben
 
Bitte erstell für jede Frage einen extra Thread. Dann kannst du deine zwiete Frage auch gleich in der richtigen Frage posten, dies hier ist nämluch nicht die Datenbank-Sparte.

camepul 22. Aug 2005 18:55

Re: Eingaben im Formular zeitgleich in ListView schreiben
 
Hallo Marabu,

danke für die schnelle Antwort.
Ich werde das testen und mich dann wieder melden. :)


@Luckie
Sorry - wird gemacht!

camepul 23. Aug 2005 17:12

Re: Eingaben im Formular zeitgleich in ListView schreiben
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Marabu,

habs' ausprobiert. Also, beim Auswählen gibt's Lücken. Die sind so nicht geplant. Warum gibt's die??

Als Beispiel habe ich mal was drangehängt, wie ich mir das Ganze so vorstelle.(Hoffe, das funktioniert).
Die Nummern sollen in der ListView automatisch aufgezählt werden.
Bei der Auswahl/Eingabe von Marke/Modell soll dies gleich automatisch in der ListView aufgeführt werden.

Gruß Petra

marabu 23. Aug 2005 18:17

Re: Eingaben im Formular zeitgleich in ListView schreiben
 
Hallo Petra,

wenn du eine DemoForm anhängst, dann bitte außer .DFM auch .PAS.

Nun zur ListView - es gibt zwei Modi, die du unterscheiden musst. Im Standardmodus (ListView.OwnerData = false) speichert die ListView die angezeigten Daten, im virtuellen Modus (ListView.OwnerData = true) speicherst du die Anzeigedaten in einer eigenen Speicherstruktur oder extern. Du hast wahrscheinlich im Standardmodus getestet.

Wenn du die Nummern in der ersten Spalte lückenlos haben willst, dann dienen sie wohl nur der Zählung. Beim Löschen, wie beim Einfügen oder Verschieben eines Eintrages musst du im Standardmodus relativ viel Aufwand treiben, um die Lücken zu schließen bzw. Doppelnummern zu vermeiden. Im virtuellen Modus ist das viel einfacher, da du in der dann notwendigen Ereignisroutine ListView.OnData() sofort die richtige Nummer zuweisen kannst:

Delphi-Quellcode:
procedure TDemoForm.ListViewData(Sender: TObject; Item: TListItem);
begin
  Item.Caption := IntToStr(Item.Index);
  ...
end;
Du hast von einer Datenbank geschrieben. Wenn die drei Spalten deiner ListView zu einer Datenbanktabelle gehören, dann solltest du diese Tabelle mal beschreiben. Welche Tabellenfelder sind vorgesehen, was ist der Primärschlüssel, etc.

Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:14 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-2025 by Thomas Breitkreuz