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 4 von 5   « Erste     234 5      
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, 21:43
Zitat von Sir Rufo:
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,
Kannst du mir da mal eine kurzes Beispiel machen? Mir fällt da jetzt nichts ein, wei man das zusammen abhandeln könnte.
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 21. Feb 2009, 11:11
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
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
 
#3

Re: Kleine Adress-Datenbank

  Alt 21. Feb 2009, 11:13
Also ich finde da meine Lösung aber etwas übersichtlicher.
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
 
#4

Re: Kleine Adress-Datenbank

  Alt 21. Feb 2009, 11:21
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;
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 RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#5

Re: Kleine Adress-Datenbank

  Alt 21. Feb 2009, 12:14
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.
Rolf Warnecke
App4Mission
  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 21. Feb 2009, 12:20
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?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#7

Re: Kleine Adress-Datenbank

  Alt 21. Feb 2009, 12:38
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 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 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 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 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.
Miniaturansicht angehängter Grafiken
zwischenablage01_178.jpg  
Rolf Warnecke
App4Mission
  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 21. Feb 2009, 12:43
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#9

Re: Kleine Adress-Datenbank

  Alt 21. Feb 2009, 18:34
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.

ImgList.Draw(Canvas, Rect.left + 4, Rect.Top + 4, 0, dsTransparent, itImage);
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Kleine Adress-Datenbank

  Alt 21. Feb 2009, 18:56
Mein Delphi 2006 kennt die Bezeichner dsTransparent und itImage nicht, obwohl die Unit Controls eingebunden ist. Und mit Main.frmAdressen.ImageList1.Draw(Canvas, ARect.left + 4, ARect.Top + 4, 6); sehe ich keinen großen Unterschied.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


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 02:57 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