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 2 von 5     12 34     Letzte »    
Benutzerbild von Luckie
Luckie
Registriert seit: 29. Mai 2002
Ich hatte hier schon mal eine Adress-Datenbank vorgestellt. Dies ist nun die nachfolge Version der Adress-Datenbank. Ich hhabe mich dazu entschlossen sie von Grund auf neu zu programmieren, weil ich mittlerweile meine alten Code schrecklich fand und weil mir die Oberfläche zu groß war. Noch sind nicht alle Features der alten Version implementiert. So fehlt noch der Upload der XML-Datei mit den Kontakten und die Möglichkeit die Kontakte auszudrucken. Sprich es gehen nur die grundlegenden Funktionen einer Adress-Datenbank:
- Kontakt anlegen
- Kontakt löschen
- Kontakt editieren
- Kontakte filtern

Ich habe versucht die Oberfläche möglichst minimalistisch zu halten. Sie besteht nur aus einer Listbox und einer Toolbar mit den nötigen Schaltflächen. In der Listbox direkt werden der Name und die Telefonnumer angezeigt, weil ich denke, dass man die Telefonnumer am häufigsten braucht. Die Details zu einem Kontakt lassen sich entweder durch einen Doppelklick auf den Eintrag anzeigen oder durch betätigen der Return-Taste oder über das Kontexktmenü der Listbox. Über das Kontextmenü der Listbox lässt sich der Kontakt auch löschen, was man auch mit der entsprechenden Schaltfläche in der Toolbar machen kann oder über die Tastenkombination [Strg + Entf]. Das Kontextmenü bietet noch die Möglichkeit eine E-Mail an den Kontokt zu schreiben mit dem Standardemailprogramm, wenn mindestens eine E-Mail Adresse hinterlegt ist.

Die Kontakte lassen sich auch filtern, wobei der Filter nur stupide nach den eingegeben Buchstaben filtert. Wird also "he" eingegeben, werden alle Kontakte angezeigt, in denen die Buchstabenkombination "he" vorkommt.

Die Daten werden in einer XML-Datei im Programmverzeichnis gespeichert. Im Programmverzeichnis deshalb, weil das Programm für meinen USB-Stick gedacht ist. Bis auf das Feld Bemerkung werden alle Daten im Klartext gespeichert. Das Feld Bemerkung wird Base64 codiert, damit man auch Zeilenumbrüche mit speichern kann.

Im Anhang das Programm mit Quellcode und ein Screenshot.
Miniaturansicht angehängter Grafiken
adressdbxml_main_491.jpg   adressdbxml_details_148.jpg  
Angehängte Dateien
Dateityp: zip adressdbxml2_107.zip (483,3 KB, 133x aufgerufen)
Ein Teil meines Codes würde euch verunsichern.
 
mquadrat

 
Delphi XE2 Professional
 
#11
  Alt 20. Feb 2009, 14:00
Wenn du das + in der Telefonnummer nicht mal speicherst, woher weißt du dann das da eins hin muss?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

 
Delphi 10 Seattle Enterprise
 
#12
  Alt 20. Feb 2009, 14:03
Zitat von mquadrat:
Wenn du das + in der Telefonnummer nicht mal speicherst, woher weißt du dann das da eins hin muss?
Die Telefonnummern wird nicht geändert, sondern nur entsprechend formatiert angezeigt

@Luckie: Da wo ich eine Adresse bearbeiten kann, da sollte man mit ESC dieses Form wieder verlassen können (alternativ zu Klick auf Schließen)

cu

Oliver
  Mit Zitat antworten Zitat
mquadrat

 
Delphi XE2 Professional
 
#13
  Alt 20. Feb 2009, 14:05
Zitat von Sir Rufo:
Die Telefonnummern wird nicht geändert, sondern nur entsprechend formatiert angezeigt
Sicher?!

Zitat:
Ich wollte eine einheitliche Darstelliung, deswegen wird alles ausser den Klammern rausgelöscht bei der Anzeige und beim Abspeichern. Ist da snicht so gut?
Okok, ich geb's zu, ich hab das Programm noch gar nicht ausprobiert
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

 
Delphi 10 Seattle Enterprise
 
#14
  Alt 20. Feb 2009, 14:08
Zitat von Luckie:
Zitat:
2. Bei Eingabe einer Telefonnummer +49 (3333) 123434 wird in der Liste 49(3333)123434 angezeigt, das ist doof ...
Ich wollte eine einheitliche Darstelliung, deswegen wird alles ausser den Klammern rausgelöscht bei der Anzeige und beim Abspeichern. Ist da snicht so gut?
Besser wäre doch alles ausser +-()0123456789 rauszuwerfen und dann vor und nach den Klammern ein Leerzeichen einzufügen " (" und ") ".
Gerade für Durchwahlen wird ja das "-"-Zeichen benutzt, was ja auch die Lesbarkeit erhöht.

Die internationale Schreibweise für eine Telefonnummer ist ja "+<Ländercode> (<Ortsvorwahl>) <Hauptnummer>[-<Durchwahl>]"

cu

Oliver
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#15
  Alt 20. Feb 2009, 14:24
Zitat von Sir Rufo:
Besser wäre doch alles ausser +-()0123456789 rauszuwerfen und dann vor und nach den Klammern ein Leerzeichen einzufügen " (" und ") ".
OK, + und - wurden noch aufgenommen. Das mit dem Leerzeichen nach der Klammer ist nicht ganz so schenll zu lösen.
Michael
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

 
Delphi 10 Seattle Enterprise
 
#16
  Alt 20. Feb 2009, 14:29
Zitat von Luckie:
Zitat von Sir Rufo:
Besser wäre doch alles ausser +-()0123456789 rauszuwerfen und dann vor und nach den Klammern ein Leerzeichen einzufügen " (" und ") ".
OK, + und - wurden noch aufgenommen. Das mit dem Leerzeichen nach der Klammer ist nicht ganz so schenll zu lösen.
Nach deiner Formatierung nur noch ...
Delphi-Quellcode:
TelefonNr := StringReplace( TelefonNr, '(', ' (', [ rfReplaceAll ] );
TelefonNr := StringReplace( TelefonNr, ')', ') ', [ rfReplaceAll ] );
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#17
  Alt 20. Feb 2009, 14:30
Ja gut, auf die einfachsten Sachen kommt man nicht.
Michael
  Mit Zitat antworten Zitat
Pfoto

 
Turbo Delphi für Win32
 
#18
  Alt 20. Feb 2009, 14:47
Hallo Luckie,

ich finde die Eingabe der Daten nicht wirklich flüssig,
als 10-Finger-Schreiber muss ich immer absetzen und die
Pfeiltaste nach unten drücken, um zum nächsten Feld
zu gelangen.
Wenn z.B. nach einem Return der Cursor ins nächste
Eingabefeld der Tabelle springen würde, fände ich das besser.


Was noch ein tolles Feature wäre:
Der User kann sich einmalig eine eigene Struktur der gewünschten
Felder definieren. So könnte man das Teil wirklich ganz individuell
an sein Bedürfnisse anpassen.

Edit: Ich sehe gerade den Code -- die Struktur steckt ja quasi
fest in einer Klasse. Da wird eine automatische Anpassung wohl
so ziemlich unmöglich werden.

Gruß
Jürgen
Jürgen Höfs
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#19
  Alt 20. Feb 2009, 14:54
Neue Version hochgeladen mit den Änderungswünschen und Verbesserungsvorschlägen.

@Pfoto: Bei einem Stringgrid ist es Standard, dass man mit den Pfeiltasten in die nächste Zelle gelangt. Und da smit der eigenen Struktur: Das sollte eigentlich nur eine kleine Adressdatenbank für mich sein.
Michael
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

 
Delphi 10 Seattle Enterprise
 
#20
  Alt 20. Feb 2009, 14:57
Der Speicher-Button kommt nicht mehr ... und bei "Wollen Sie die Änderungen speichern?" -> Ja wird trotzdem nicht gespeichert

Delphi-Quellcode:
procedure TDetails.FormClose(Sender: TObject; var Action: TCloseAction);
var
  ret: DWORD;
begin
  if Modified then
  begin
    ret := MessageBox(Self.Handle, PChar(rsModifiedQuery), PChar(rsModifiedCaption), MB_ICONQUESTION or MB_YESNOCANCEL);
    case ret of
      ID_YES: Close;
      ID_NO:
      begin
        Modified := False;
        Close;
      end;
      ID_CANCEL: ; // nichts machen
    end;
  end;
end;
Ist irgendwie auch sinnentleert oder ... da passiert ja nix ...

ok, ausser bei ID_YES und ID_NO ein DoppelClose (es soll ja eh schon geschlossen werden)
bei ID_CANCEL wird nichts gemacht -> das Form wird geschlossen

Delphi-Quellcode:
type
  TDetails = class(TForm)
    Bevel1: TBevel;
    btnCancel: TButton; // aber wo ist denn btnSave?
    sgDetails: TStringGrid;
    StatusBar1: TStatusBar;
    memBem: TMemo;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormShow(Sender: TObject);
    procedure memBemChange(Sender: TObject);
    procedure sgDetailsSetEditText(Sender: TObject; ACol, ARow: Integer; const Value: string);
    procedure FormCreate(Sender: TObject);
    procedure btnCancelClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    IsNewContact: Boolean;
    Modified: Boolean; // nicht besser als Property? dann könnte man darüber btnSave.Enabled steuern (gut, den gibts ja nicht mehr)
  end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    


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 15:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz