Delphi-PRAXiS
Seite 4 von 5   « Erste     234 5      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Kleine Adress-Datenbank (https://www.delphipraxis.net/129517-kleine-adress-datenbank.html)

Luckie 20. Feb 2009 22:43

Re: Kleine Adress-Datenbank
 
Zitat:

Zitat von Sir Rufo
Ja, jetzt tut es :thumb: (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,

Kannst du mir da mal eine kurzes Beispiel machen? Mir fällt da jetzt nichts ein, wei man das zusammen abhandeln könnte.

Sir Rufo 21. Feb 2009 12:11

Re: Kleine Adress-Datenbank
 
OK, hier dein Code für einen neuen Kontakt:
Delphi-Quellcode:
procedure TfrmAdressen.NewContact;
var
  Details          : TDetails;
  Contact          : TContact;
begin
  Details := TDetails.Create(nil); // Edit, New
  try
    Details.IsNewContact := True; // New
    Details.Caption := 'Neuer Kontakt'; // New
    Contact := TContact.Create; // New
    Details.Contact := Contact; // New
    Details.ShowModal; // Edit, New
    if Contact.HasBeenModified then // Edit, New
    begin
      ContactCollection.Add(Contact); // New
      ContactCollection.HasBeenModified := True; // Edit, New
      FillListbox; // Edit, New
      UpdateStatusbar; // Edit, New
    end;
  finally
    Details.Release; // Edit, New
  end;
end;
und hier für das Bearbeiten:
Delphi-Quellcode:
procedure TfrmAdressen.ShowContactDetails;
var
  Details          : TDetails;
begin
  if (lbContacts.ItemIndex > -1) then // Edit
  begin
    Details := TDetails.Create(nil); // Edit, New
    try
      Details.Contact := TContact(lbContacts.Items.Objects[lbContacts.ItemIndex]); // Edit
      Details.ShowModal; // Edit, New
      if Details.Contact.HasBeenModified then // Edit, New
      begin
        ContactCollection.HasBeenModified := True; // Edit, New
        FillListbox; // Edit, New
        UpdateStatusbar; // Edit, New
      end;
    finally
      Details.Release; // Edit, New
    end;
  end;
end;
jetzt fassen wir das mal zusammen:
Delphi-Quellcode:
procedure TfrmAdressen.EditContactDetails(const IsNew : Boolean );
var
  Details          : TDetails;
  Contact          : TContact;
begin
  if
    IsNew or
    (lbContacts.ItemIndex > -1)
  then
    begin
      Details := TDetails.Create(nil);
      try
        if
          IsNew
        then
          begin
            Contact := TContact.Create;
            Details.Caption := 'Neuer Kontakt';
          end
        else
          Contact := TContact(lbContacts.Items.Objects[lbContacts.ItemIndex]);
 
        Details.IsNewContact := IsNew;
        Details.Contact := Contact;

        Details.ShowModal;
        if
     Details.Contact.HasBeenModified
   then
          begin
            if
              IsNew
            then
              ContactCollection.Add(Contact);
            ContactCollection.HasBeenModified := True;
            FillListbox;
            UpdateStatusbar;
          end;
      finally
        Details.Release;
      end;
  end;
end;
Nun ist es eine Funktion :)

cu

Oliver

Luckie 21. Feb 2009 12:13

Re: Kleine Adress-Datenbank
 
Also ich finde da meine Lösung aber etwas übersichtlicher.

Sir Rufo 21. Feb 2009 12:21

Re: Kleine Adress-Datenbank
 
Das kann man auch noch schicker gestalten, wenn man das IsNew-Flag an das Kontakt-Object hängt.

Nur ich betrachte 2 Fälle in einer proc, die sich aber sehr ähnlich sind.

btw, ich habe da ein kleines Speicherleck entdeckt ;) wenn ein neuer Kontakt nicht gespeichert wird.
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 Contact.HasBeenModified then
    begin
      ContactCollection.Add(Contact);
      ContactCollection.HasBeenModified := True;
      FillListbox;
      UpdateStatusbar;
    end
    else
      Contact.Free; // Wenn nichts eingegeben wurde, dann hängt das hier sonst in der Luft
  finally
    Details.Release;
  end;
end;

RWarnecke 21. Feb 2009 13:14

Re: Kleine Adress-Datenbank
 
Hallo Michael,

ich habe gerade mal Deine kleine Adressdatenbank getestet. Die Adressdatenbank ist klein und schnuckelig. Aber ein paar Kritik- und Verbesserungspunktee habe ich trotzdem :
  • Die Eingabe würde ich komplett Ändern, da ich das StringGrid dafür nicht sehr hilfreich finde. Oder Du überwachst die Tasten, wenn dann zum Beispiel Return oder Tab betätigt wird, springt es in die nächste Zeile.
  • Bei der Telefonnummer würde ich nur die Zeichen "+-/()" und die Zahlen zulassen.
  • Ich würde auch gleich die Konvention der Telefonnummer einheitlich machen wie es Sir Rufo in diesem Beitrag geschrieben hat, damit Detail und Übersichtsliste gleich aussehen
  • Bei der Postleitzahl würde ich nur Zahlen zulassen und auf maximal 5 Stellen begrenzen
  • Die Konvention der E-Mail Adresse überpüfen
  • Vielleicht die Anwendung noch als Tray-Icon setzen, für einen schnellen Zugriff.
So das, solls erstmal gewesen sein.

Luckie 21. Feb 2009 13:20

Re: Kleine Adress-Datenbank
 
Zitat:

Zitat von RWarnecke
Die Eingabe würde ich komplett Ändern, da ich das StringGrid dafür nicht sehr hilfreich finde. Oder Du überwachst die Tasten, wenn dann zum Beispiel Return oder Tab betätigt wird, springt es in die nächste Zeile.

Ich hatte erst Labels und Editfelder, das war mir einfach zu groß.

Zitat:

Bei der Telefonnummer würde ich nur die Zeichen "+-/()" und die Zahlen zulassen.
Müsste in der aktuellen Version schon geänder sein.

Zitat:

Bei der Postleitzahl würde ich nur Zahlen zulassen und auf maximal 5 Stellen begrenzen
Und wie gibst du dann eine englische Postleitzahl ein?

Zitat:

Die Konvention der E-Mail Adresse überpüfen
Ist das wirklich nötig?

Zitat:

Vielleicht die Anwendung noch als Tray-Icon setzen, für einen schnellen Zugriff.
Ich kann es eigentlich nicht abhaben, wenn so viele Icons in der TNA sind und ausser dem ist sie eiegntlich für den USB-Stick gedacht. Ist da ein TNA-Icon sinnvoll?

RWarnecke 21. Feb 2009 13:38

Re: Kleine Adress-Datenbank
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Luckie
Ich hatte erst Labels und Editfelder, das war mir einfach zu groß.

Dann würde ich aber die Return-Taste und TAB-Taste abfangen, so dass man damit in nächste Feld springen kann.

Zitat:

Zitat von Luckie
Zitat:

Bei der Telefonnummer würde ich nur die Zeichen "+-/()" und die Zahlen zulassen.
Müsste in der aktuellen Version schon geänder sein.

In der Version 1.0.0.27 funktioniert es nicht (siehe Anhang).

Zitat:

Zitat von Luckie
Zitat:

Bei der Postleitzahl würde ich nur Zahlen zulassen und auf maximal 5 Stellen begrenzen
Und wie gibst du dann eine englische Postleitzahl ein?

Ok, das ist ein Argument. Dann würde ich es vom Land abhängig machen und eine Combobox in die Zelle des StringGrids für das Land setzen, so dass man das Land auswählen kann.

Zitat:

Zitat von Luckie
Zitat:

Die Konvention der E-Mail Adresse überpüfen
Ist das wirklich nötig?

Habe ja nur daran gedacht, dass Du ja eine Funktion hast zum E-Mail schreiben.

Zitat:

Zitat von Luckie
Ich kann es eigentlich nicht abhaben, wenn so viele Icons in der TNA sind und ausser dem ist sie eiegntlich für den USB-Stick gedacht. Ist da ein TNA-Icon sinnvoll?

Über sinnvoll oder nicht, kann man ja streiten. Mache es doch konfigurierbar, so das jeder User selber entscheiden kann.

Edit : Anhang hinzugefügt.

Luckie 21. Feb 2009 13:43

Re: Kleine Adress-Datenbank
 
Ich lasse bisher nur die Anzeige der Telefonnummer in der Listbox formatieren. Gespeichert wird sie wie eingegeben.

Und das mit der TNA konfigurierbar machen, ist mir für die kleine Anwendung zu viel Arbeit.

Andreas L. 21. Feb 2009 19:34

Re: Kleine Adress-Datenbank
 
Die Symbole in der ListBox sehen sehr pixelig aus wenn ein Item markiert ist. Wenn du in der Methode DrawItems dein TIcon weglässt und direkt die Draw-Methode der ImageList verwendest siehts besser aus.

Delphi-Quellcode:
ImgList.Draw(Canvas, Rect.left + 4, Rect.Top + 4, 0, dsTransparent, itImage);

Luckie 21. Feb 2009 19:56

Re: Kleine Adress-Datenbank
 
Mein Delphi 2006 kennt die Bezeichner dsTransparent und itImage nicht, obwohl die Unit Controls eingebunden ist. Und mit
Delphi-Quellcode:
Main.frmAdressen.ImageList1.Draw(Canvas, ARect.left + 4, ARect.Top + 4, 6);
sehe ich keinen großen Unterschied.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:20 Uhr.
Seite 4 von 5   « Erste     234 5      

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