AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Kleine Adress-Datenbank
Thema durchsuchen
Ansicht
Themen-Optionen

Kleine Adress-Datenbank

Ein Thema von Luckie · begonnen am 20. Feb 2009 · letzter Beitrag vom 22. Feb 2009
Antwort Antwort
Seite 3 von 5     123 45      
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Re: Kleine Adress-Datenbank

  Alt 20. Feb 2009, 15:03
Ächtz, wenn man Code blind ohne zu testen an eine andere Stelle kopiert. Sollte gefixt sein. Aktuelle Version im ersten Posting.

Die "Speichern"-Schaltfläche habe ich entfernt, weil sie irgendwie überflüssig geworden ist.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

Re: Kleine Adress-Datenbank

  Alt 20. Feb 2009, 15:14
Mal nur so nebenbei ...

wäre es nicht besser, das Modified und NewContact in dem Object TContact zu verwalten?

Delphi-Quellcode:
type
  TMeinObject = class
  private
    FModified : Boolean;
    FIsNew : Boolean;
    FInfo : string;
    procedure SetInfo(const Value : string);
  public
    property IsNew : Boolean read FIsNew;
    property Modified : Boolean read FModified;
    property Info : string read FInfo write SetInfo;
    procedure Load;
    constructor Create;
  end;

implementation

procedure TMeinObject.SetInfo(const Value : string);
begin
  if FInfo <> Value then FModified := True;
  FInfo := Value;
end;

procedure TMeinObject.Load;
begin
  FInfo := 'Daten';
  FIsNew := False;
  FModified := False;
end;

procedure TMeinObject.Create;
begin
  inherited;
  FInfo := '';
  FIsNew := True;
  FModified := False;
end;
das macht die Sache doch irgendwie runder ...

cu

Oliver
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

Re: Kleine Adress-Datenbank

  Alt 20. Feb 2009, 15:17
Zitat von Luckie:
Ächtz, wenn man Code blind ohne zu testen an eine andere Stelle kopiert. Sollte gefixt sein. Aktuelle Version im ersten Posting.
Nö ... irgendwie nicht ...

aber der source ist verschwunden ... wieso
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Kleine Adress-Datenbank

  Alt 20. Feb 2009, 15:23
So jetzt sollte es aber funktionieren. Ichhabe es noch mal neu kompiliert und getestet. Der Source ist jetzt auch wieder dabei. Aktuelle Version im ersten Posting.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

Re: Kleine Adress-Datenbank

  Alt 20. Feb 2009, 18:33
Zitat von Luckie:
So jetzt sollte es aber funktionieren. Ichhabe es noch mal neu kompiliert und getestet. Der Source ist jetzt auch wieder dabei. Aktuelle Version im ersten Posting.
Die Neuanlage tut es aber nicht ...
Delphi-Quellcode:
procedure TfrmAdressen.NewContact;
...
    Details.ShowModal;
    if Details.ModalResult = mrOk then // Du hast kein ModalResult mehr!!!
... aber bearbeiten geht ...
Delphi-Quellcode:
procedure TfrmAdressen.ShowContactDetails;
...
      Details.ShowModal;
      //if Details.ModalResult = mrOK then
      if Details.Modified then // aha ... hier geändert
Wundert mich eh, dass du für die Übernahme der Daten aus dem Formular

a) dieses 2x programmiert hast (ist eine typische Fehlerquelle, wie man hier sieht)
b) diese Übergabe nicht im Form frmContacts machst

Ich hätte an das frmContacts einfach nur das Contact-Object übergeben und nachher zurückverlangt.
Dann bleibt der Code für das Anzeigen, bearbeiten und zurückschreiben auch dort wo es passiert, und im Hauptteil reagiere ich einfach nur noch auf das Flag Modified und New.

cu

Oliver
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Kleine Adress-Datenbank

  Alt 20. Feb 2009, 19:26
Zitat von Sir Rufo:
Die Neuanlage tut es aber nicht ...
Mist.

Zitat:
Ich hätte an das frmContacts einfach nur das Contact-Object übergeben und nachher zurückverlangt.
Das ist eine gute Idee, werde ich so umsetzen. Ich würde jetzt so spontan die Create-Methode von der Form überschreiben mit einem Kontakt-Objekt als Parameter. Nur, wie bekomme ich es wieder zurück?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

Re: Kleine Adress-Datenbank

  Alt 20. Feb 2009, 19:29
Zitat von Luckie:
Zitat von Sir Rufo:
Die Neuanlage tut es aber nicht ...
Mist.

Zitat:
Ich hätte an das frmContacts einfach nur das Contact-Object übergeben und nachher zurückverlangt.
Das ist eine gute Idee, werde ich so umsetzen. Ich würde jetzt so spontan die Create-Methode von der Form überschreiben mit einem Kontakt-Objekt als Parameter. Nur, wie bekomme ich es wieder zurück?
Du rufst das Fenster ja eh modal auf ... also Objekt übergeben ... wird im Form bearbeitet ... das Form geschlossen.

Die Referenz auf das Object hat sich ja nicht verändert, nur der Inhalt und darauf kannst du nach dem Schließen reagieren.

cu

Oliver
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Kleine Adress-Datenbank

  Alt 20. Feb 2009, 20:00
Also ich habe es jetzt so:
Delphi-Quellcode:
procedure TfrmAdressen.ShowContactDetails;
var
  Details : TDetails;
  Contact : TContact;
begin
  if (lbContacts.ItemIndex > -1) then
  begin
    Details := TDetails.Create(nil);
    try
      Details.Contact := TContact(lbContacts.Items.Objects[lbContacts.ItemIndex]);;
      Details.ShowModal;
      if Details.Modified then
      begin
        // hier fehlt was
        ContactCollection.HasBeenModified := True;
        FillListbox;
      end;
    finally
      Details.Release;
    end;
  end;
end;
Nur wie bekomme ich das geänderte Objekt in die ContactCollection? Bisher habe ich ja nur das Objekt geändert, was an der Listbox hängt. Ich müsste die ganze Collection leeren und mit den Objekten der Listbox wieder füllen. Oder gibt es da eine bessere Möglichkeit?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Kleine Adress-Datenbank

  Alt 20. Feb 2009, 20:13
Hat sich erledigt, war Blödsinn.

Anzeigen sieht jetzt so aus:
Delphi-Quellcode:
procedure TfrmAdressen.ShowContactDetails;
var
  Details : TDetails;
  Contact : TContact;
begin
  if (lbContacts.ItemIndex > -1) then
  begin
    Details := TDetails.Create(nil);
    try
      Details.Contact := TContact(lbContacts.Items.Objects[lbContacts.ItemIndex]);;
      Details.ShowModal;
      if Details.Modified then
      begin
        ContactCollection.HasBeenModified := True;
        FillListbox;
        UpdateStatusbar;
      end;
    finally
      Details.Release;
    end;
  end;
end;
Undneu sieht so aus:
Delphi-Quellcode:
procedure TfrmAdressen.NewContact;
var
  Details : TDetails;
  Contact : TContact;
begin
  Details := TDetails.Create(nil);
  try
    Details.IsNewContact := True;
    Details.Caption := 'Neuer Kontakt';
    Contact := TContact.Create;
    Details.Contact := Contact;
    Details.ShowModal;
    if Details.Modified then
    begin
      ContactCollection.Add(Contact);
      ContactCollection.HasBeenModified := True;
      FillListbox;
      UpdateStatusbar;
    end;
  finally
    Details.Release;
  end;
end;
Hast du dir das so gedacht?

Aktuelle Version (1.0.0.27 im ersten Posting.

PS: Jetzt sollte es aber klappen. Hmpf.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

Re: Kleine Adress-Datenbank

  Alt 20. Feb 2009, 20:37
Ja, jetzt tut es (have a close look at my signature)

Nur ist ein neuer Kontakt ein Sonderform vom Editieren (vieles gleich, weniges anders). Diese Funktion würde ich in einer abhandeln, oder Teile in einer eigenen procedure auslagern, dann ist auch bei einer Erweiterung immer gesichert, dass es funktioniert.

Aber eine fast ähnliche Abfolge mehr als einmal zu Schreiben finde ich immer lästig und pfui
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 5     123 45      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:24 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