Thema: Kundenliste

Einzelnen Beitrag anzeigen

Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#39

AW: Kundenliste

  Alt 18. Apr 2017, 09:56
Müsstest du nicht nach LoadFromDB usw. auch wieder FuelleListView aufrufen. Irgendwie bin ich mir nicht sicher ob CustomerList und ListView immer sauber synchron sind. Ausserdem verstehe ich nicht, warum du die Cutomerlist einmal in der Connect-Funktion von außen füllst und dann wieder mit der LoadFromDB-Methode von innern füllst, da reicht doch eine Version.

Dann hast du öfter solche Konstrukte:
Delphi-Quellcode:
   if lvCustomer.Selected<>nil then
  begin
    //Über den Index kann man nun auf jedes Object in der ObjektListe zugreifen
    //Damit bestücken wir das Formular mit den Werten aus den Eigenschaften des Objects
    frmCustomer.edtKDNR.Text:=inttostr(CustomerList[lvCustomer.Selected.Index].KDNR);
    frmCustomer.edtName.Text:=CustomerList[lvCustomer.Selected.Index].Name;
    frmCustomer.edtVorname.Text:=CustomerList[lvCustomer.Selected.Index].Vorname;
    //...
    if FRMCustomer.ShowModal=mrOK then
    begin
      //Object erzeugen nicht nötig, da es bereits besteht. Zugriff also möglich
      //für die Übertragung der Daten aus dem Formular
      CustomerList[lvCustomer.Selected.Index].KDNR:=strtoint(frmCustomer.edtKDNR.Text);
      CustomerList[lvCustomer.Selected.Index].Name:=frmCustomer.edtName.Text;
    //...
Das wäre mir alles viel zu lang zum lesen, da würde ich mit Hilfsvariablen arbeiten und dem frmCustomer ein paar Propertys spendieren, die das füllen der ganzen TEdits intern erledigen:

Delphi-Quellcode:
var index:integer;
    customer:TCustomer;
begin
  if lvCustomer.Selected<>nil then
    begin
    index:=lvCustomer.Selected.Index;
    customer:=CustomerList[index];
    frmCustomer.KDNR:=customer.KDNR;
    frmCustomer.Nachname:=Customer.Name;
    frmCustomer.Vorname:=Customer.Vorname;
    //...
    if FRMCustomer.ShowModal=mrOK then
    begin
      //Object erzeugen nicht nötig, da es bereits besteht. Zugriff also möglich
      //für die Übertragung der Daten aus dem Formular
      Customer.KDNR:=frmCustomer.KDNR;
      Customer.Name:=frmCustomer.Nachname;
    //...
Läßt sich viel schöner lesen, denke ich. Alternativ könnte man dem frmCustomer auch einfach einen kompletten TCustomer übergeben und der regelt dann alles intern selbst, dann säh das nur noch so aus (man müsste dann aber das frmCustomer aufwendiger gestalten:

Delphi-Quellcode:
var index:integer;
begin
  if lvCustomer.Selected<>nil then
    begin
    index:=lvCustomer.Selected.Index;
    frmCustomer.customer:=CustomerList[index];
    if FRMCustomer.ShowModal=mrOK then
      FuelleListView;
    end;
end;
Ralph
  Mit Zitat antworten Zitat