AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi DelphiProjekt - Erstellen eines Adressbuches
Thema durchsuchen
Ansicht
Themen-Optionen

DelphiProjekt - Erstellen eines Adressbuches

Ein Thema von Kleine · begonnen am 27. Apr 2011 · letzter Beitrag vom 28. Apr 2011
Antwort Antwort
Seite 1 von 3  1 23      
Kleine

Registriert seit: 27. Apr 2011
40 Beiträge
 
Delphi 2009 Professional
 
#1

DelphiProjekt - Erstellen eines Adressbuches

  Alt 27. Apr 2011, 14:52
Hallo,
ich bin gerade mit delphi angefangen und mache im Moment ein Projekt und bräuchte wohl Hilfe
Ich arbeite mit Delphi2009

Einmal die Main:
Delphi-Quellcode:
unit foMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, foAdresse, uTypen, StdCtrls, foSuche ;

type
  TForm2 = class(TForm)
    MainMenu1: TMainMenu;
    Neu1: TMenuItem;
    Aendern1: TMenuItem;
    Loeschen2: TMenuItem;
    btEnde: TButton;
    Suchen1: TMenuItem;
    AdresseListBox: TListBox;
    KontaktListBox: TListBox;
    procedure Neu1Click(Sender: TObject);
    procedure Aendern1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Loeschen2Click(Sender: TObject);
    procedure btEndeClick(Sender: TObject);
    procedure AdresseListBoxClick(Sender: TObject);
  private
    { Private-Deklarationen }
    fAdresse: tAdresse;
    procedure SetAdresse( const Value: tAdresse);
  public
    { Public-Deklarationen }
    //Adresse : tAdresse;
    Procedure RefreshList ;
    Property Adresse : tAdresse Read fAdresse Write SetAdresse;
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.RefreshList;
var
  i: Integer;
begin
  AdresseListBox.Items.BeginUpdate ;
  AdresseListBox.clear ;
  for i := 0 to Adresse.adressen.Count - 1 do
    Begin
      AdresseListBox.Items.AddObject ( tAdresse ( Adresse.Adressen[i] ).toString, Adresse.Adressen[i] ) ;
    End;
  AdresseListBox.Items.EndUpdate ;
end;

procedure TForm2.Aendern1Click(Sender: TObject);
var
   FormAdresse : TFormAdresse ;
begin
  formAdresse := TFormAdresse.Create( Self );

  formAdresse.adresse := Adresse;

  if formadresse.ShowModal = mrOK then
    ShowMessage ( 'Die neuen Werte wurden gespeichert' )
  else
    ShowMessage ( 'Die Aktion wurde abgebrochen') ;

  Adresse.AddAdresse ( formAdresse.edAnrede.Text, formAdresse.edName.Text, formAdresse.edVorname.Text, formAdresse.edStrasse.Text, formAdresse.edOrt.Text ) ;
  RefreshList ;

  formadresse.Release ;
end;

procedure TForm2.btEndeClick(Sender: TObject);
begin
     close;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
  Adresse := tAdresse.Create ;
end;

procedure TForm2.FormDestroy(Sender: TObject);
begin
  Adresse.Free ;
  RefreshList ;
end;

procedure TForm2.AdresseListBoxClick(Sender: TObject);
begin
  Adresse := tAdresse( AdresseListBox.Items.Objects[ Adresselistbox.ItemIndex ] ) ;
  //FormAdresse.edID.Text := Adresse.ID;
  FormAdresse.edanrede.Text := Adresse.Anrede;
  FormAdresse.edName.Text := Adresse.Nachname;
  FormAdresse.edVorname.Text := Adresse.Vorname;
  FormAdresse.edStrasse.Text := Adresse.Strasse;
  //FormAdresse.edPLZ.Text := Adresse.PLZ;
  FormAdresse.edOrt.Text := Adresse.Ort;
end;

procedure TForm2.Loeschen2Click(Sender: TObject);
begin
     Adresse.clear;
     AdresseListBox.Clear;
     ShowMessage ('Die Inhalte wurden gelöscht');
end;

procedure TForm2.Neu1Click(Sender: TObject);
var
  FormAdresse : TFormAdresse ;
begin
  formAdresse := TFormAdresse.Create( Self );
  Adresse.clear ;

  formAdresse.Adresse := Adresse ;

  if formadresse.ShowModal = mrOK then
  begin
    ShowMessage ( 'Die Werte wurden gespeichert' );
  end
  else
    ShowMessage ( 'Die Aktion wurde abgebrochen' ) ;

  Adresse.AddAdresse ( formAdresse.edAnrede.Text, formAdresse.edName.Text, formAdresse.edVorname.Text, formAdresse.edStrasse.Text, formAdresse.edOrt.Text ) ;
  RefreshList ;

  formadresse.Release ;

end;

procedure TForm2.SetAdresse(const Value: tAdresse);
begin
  fAdresse := Value;

  formAdresse.edAnrede.Text := adresse.anrede ;
  formAdresse.edID.Text := IntToStr(adresse.ID);
  formAdresse.edName.Text := adresse.Nachname;
  formAdresse.edVorname.Text := adresse.Vorname;
  formAdresse.edStrasse.Text := adresse.Strasse;
  formAdresse.edPLZ.Text := IntToStr(adresse.PLZ);
  formAdresse.edOrt.Text := adresse.Ort;


  RefreshList ;
end;

end.
und Adresse/Nebenformular
Delphi-Quellcode:
unit foAdresse;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, uTypen, foSuche ;

type
  TFormAdresse = class(TForm)
    Label1: TLabel;
    edanrede: TEdit;
    edVorname: TEdit;
    edName: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    btnOK: TButton;
    Button1: TButton;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    edID: TEdit;
    edStrasse: TEdit;
    edPLZ: TEdit;
    edOrt: TEdit;
    Button2: TButton;
    KontaktListBox: TListBox;
    cbArt: TComboBox;
    edNummer: TEdit;
    Label8: TLabel;
    Label9: TLabel;
    btnAendern: TButton;
    procedure FormCreate(Sender: TObject);
    procedure btnOKClick(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure KontaktListBoxClick(Sender: TObject);
    procedure btnAendernClick(Sender: TObject);

  private
    fAdresse: tAdresse;
    procedure SetAdresse(const Value: tAdresse);
    { Private-Deklarationen }
  public
    { Public-Deklarationen }

    Procedure RefreshList ;
    Procedure EintragAendern ;

    Property Adresse : tAdresse Read fAdresse Write SetAdresse ;

  end;

var
  FormAdresse: TFormAdresse;

implementation

{$R *.dfm}

procedure TFormAdresse.btnAendernClick(Sender: TObject);
begin
     Adresse.ModKontakt(cbArt.Text, edNummer.Text);
     RefreshList;
end;

procedure TFormAdresse.btnOKClick(Sender: TObject);
begin
  adresse.ID := StrToInt(edID.Text) ;
  adresse.Anrede := edanrede.Text ;
  adresse.Nachname := edName.Text ;
  adresse.Vorname := edVorname.Text ;
  adresse.Strasse := edStrasse.Text ;
  adresse.PLZ := StrToInt(edPLZ.Text) ;
  adresse.Ort := edOrt.Text ;

end;

procedure TFormAdresse.Button2Click(Sender: TObject);
begin
  Adresse.AddKontakt ( cbArt.text, edNummer.text ) ;
  RefreshList ;
end;

procedure TFormAdresse.FormCreate(Sender: TObject);

begin
         edAnrede.Text := '' ;
         edVorname.Text := '' ;
         edName.Text := '' ;
         edID.Text := '' ;
         edStrasse.Text := '' ;
         edPLZ.Text := '' ;
         edOrt.Text := '' ;
end;

procedure TFormAdresse.KontaktListBoxClick(Sender: TObject);
var
  kontaktdaten : tKontaktdaten ;
begin
  KontaktDaten := tKontaktdaten( KontaktListBox.Items.Objects[ Kontaktlistbox.ItemIndex ] ) ;
  cbArt.Itemindex := cbArt.Items.IndexOf( KontaktDaten.Art ) ;
  edNummer.text := KontaktDaten.Nummer ;
end;

procedure TFormAdresse.EintragAendern;
var
 i: Integer;
begin
     for i :=0 to KontaktListBox.Items.Count -1 do
       begin
            if KontaktListBox.Selected[i] then
            KontaktListBox.Items[i];
       end;

end;

procedure TFormAdresse.RefreshList;
var
  i: Integer;
begin
  KontaktListBox.Items.BeginUpdate ;
  KontaktListBox.clear ;
  for i := 0 to Adresse.kontakte.Count - 1 do
    Begin
      KontaktListBox.Items.AddObject ( tKontaktdaten ( Adresse.Kontakte[i] ).toString, Adresse.Kontakte[i] ) ;
    End;
  KontaktListBox.Items.EndUpdate ;
end;

procedure TFormAdresse.SetAdresse(const Value: tAdresse);
begin
  fAdresse := Value;

  edAnrede.Text := adresse.anrede ;
  edID.Text := IntToStr(adresse.ID);
  edName.Text := adresse.Nachname;
  edVorname.Text := adresse.Vorname;
  edStrasse.Text := adresse.Strasse;
  edPLZ.Text := IntToStr(adresse.PLZ);
  edOrt.Text := adresse.Ort;


  RefreshList ;
end;

end.
und einmal noch eine Unit
Delphi-Quellcode:
unit uTypen;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls ;

type
  TKontaktdaten = class;
  TAdresse = class
     ID : Integer;
     Anrede : string;
     Nachname : string;
     Vorname : string;
     Strasse : string;
     PLZ : Integer;
     Ort : string;
     Kontakte : tList ;
     Adressen : tList ;
     Function toString : String ;
     Procedure clear ;
     Constructor Create ;
     Destructor Destroy ; Override ;
     Procedure AddKontakt( Const cArt, cNummer : String ) ;
     Procedure ModKontakt( Const cArt, cNummer : String ) ;
     Procedure AddAdresse( Const cAnrede, cNachname, cVorname, cStrasse, cOrt: String);
  end;

  TKontaktdaten = class
      AdresseId : Integer ;
      ID : Integer;
      Art : string;
      Nummer : String;
      Function toString : String ;
  end;


implementation


{ TAdresse }

procedure TAdresse.ModKontakt(Const cArt, cNummer: String);
var
  Kontakt : tKontaktDaten ;
begin
  Kontakt := tKontaktDaten.Create ;
  Kontakt.AdresseId := id ;
// kontakt.id := ??? ;
  Kontakt.Art := cArt ;
  Kontakt.nummer := cNummer ;
  Kontakte.insert();
end;
procedure TAdresse.AddKontakt(Const cArt, cNummer: String);
var
  Kontakt : tKontaktDaten ;
begin
  Kontakt := tKontaktDaten.Create ;
  Kontakt.AdresseId := id ;
// kontakt.id := ??? ;
  Kontakt.Art := cArt ;
  kontakt.nummer := cNummer ;
  Kontakte.Add ( Kontakt ) ;
end;

procedure TAdresse.AddAdresse(Const cAnrede, cNachname, cVorname, cStrasse, cOrt: String);
var
  Adresse : tAdresse ;
begin
  Adresse := tAdresse.Create ;
  //Adresse.ID := cID;
  Adresse.Anrede := cAnrede;
  Adresse.Nachname := cNachname;
  Adresse.Vorname := cVorname;
  Adresse.Strasse := cStrasse;
  //Adresse.PLZ := IntToStr(cPLZ);
  Adresse.Ort := cOrt;
  Adressen.Add ( Adresse ) ;
end;

procedure TAdresse.clear;
begin
  anrede := '' ;
  ID := StrToInt('0');
  Nachname := '';
  Vorname := '';
  Strasse := '';
  PLZ := StrToInt('0');
  Ort := '';
end;

constructor TAdresse.Create;
begin
  inherited;
  Kontakte := tList.Create ;
  Adressen := tList.Create ;
end;

destructor TAdresse.Destroy;
begin
  Adressen.Free ;
  Kontakte.Free ;
  inherited;
end;

function TAdresse.toString: String;
begin
  Result := Anrede+' '+Nachname+ ' ' +Vorname+' '+Strasse+' '+Ort ;
end;

{ TKontaktdaten }

function TKontaktdaten.toString: String;
begin
  Result := Art+ ' ' +Nummer ;
end;

end.
Ich weiß das jetzt erstmal ganz schön viel
Doch meine Problem sind zu einem :
Wenn ich aus einer der beiden ListBoxen(Einmal in der Main und einmal in Adresse) ein Eintrag auswähle, möchte ich diesen gerne ändern und im gleichen Stack überspeichern. Und in der Main, speichert er es zwar doch löscht die Einträge, die vorher schon drin waren.
Zudem gibt er mir am Anfang eine Fehlermeldung aus und wenn ich in die ListBox in der Main klicke, ich weiß das es an Adresse := tAdresse.Create ; liegt.
Wäre echt nett wenn jemand mir schnell helfen könnte und es ausführlicherklärt, da ich da gerade erst mit angefangen bin.
Schonmal danke im voraus

Geändert von Kleine (27. Apr 2011 um 16:54 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

AW: Projekt mit Delphi

  Alt 27. Apr 2011, 15:08
Häng doch besser die *.pas, *.dfm und *.dpr des Projekts als Zip-Archiv an Deinen Beitrag an, dann kann man das Projekt einmal in Delphi öffnen und selbst im Debugger drüberschauen.

Achja, Willkommen in der DP
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Kleine

Registriert seit: 27. Apr 2011
40 Beiträge
 
Delphi 2009 Professional
 
#3

AW: Projekt mit Delphi

  Alt 27. Apr 2011, 15:14
So einmal alles als zip-Datei
Angehängte Dateien
Dateityp: zip VCL-1.zip (392,0 KB, 12x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli
Online

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Projekt mit Delphi

  Alt 27. Apr 2011, 15:26
Hi,

nur mal, was ich auf die Schnelle gesehen habe: In Deinem Constructor fehlt das override.

"tAdresse.Create" ist etwas unüblich. Ich würde hier ein großes "T" nutzen. Das geht leichter ins Auge

Herzlich willkommen auch von mir noch!
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Kleine

Registriert seit: 27. Apr 2011
40 Beiträge
 
Delphi 2009 Professional
 
#5

AW: Projekt mit Delphi

  Alt 27. Apr 2011, 15:29
in welchem Formular den? in der main oder in adressen.
oder sogar beide?
in der unit ist das schon drin
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#6

AW: Projekt mit Delphi

  Alt 27. Apr 2011, 15:30
Ich bin noch nicht durch das System durchgestiegen. Soll TAdresse nun eine einzelne Adresse sein oder eine Auflistung von Adressen? Außerdem wird FormAdresse dynamisch erstellt, aber teilweise darauf zugegriffen, bevor es überhaupt erzeugt wurde. Das muss ich mir heute Abend zu Hause mal in Ruhe anschauen, im Moment fehlt mir leider die Zeit dazu.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Kleine

Registriert seit: 27. Apr 2011
40 Beiträge
 
Delphi 2009 Professional
 
#7

AW: Projekt mit Delphi

  Alt 27. Apr 2011, 15:33
es sollen mehrere Adressen gespeichert werden, mit mehreren Kontakte, wobei Kontakte ja E-Mail, Telefon und sowas sind.
Das wäre wirklich freundlich
Danke schonmal
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: Projekt mit Delphi

  Alt 27. Apr 2011, 16:27
Bitte gib deinem Thema einen aussagekräftigen Namen. Das meiste hier dürften Projekte mit Delphi sein.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#9

AW: DelphiProjekt - Erstellen eines Adressbuches

  Alt 27. Apr 2011, 17:57
Das Löschen der Listbox-Einträge kommt daher, dass Du der Property Adresse etwas zuweist und im Setter von TAdresse RefreshList aufrufst, was zunächst alle Einträge löscht. Nun willst Du die aktuellen Einträge wieder einfügen, greifst dort aber nicht auf die "Unteradressen" der "Hauptadresse" zu, sondern auf die nicht vorhandenen Unteradressen der aktuellen Unteradresse. Du solltest das Konzept noch einmal überdenken.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Kleine

Registriert seit: 27. Apr 2011
40 Beiträge
 
Delphi 2009 Professional
 
#10

AW: DelphiProjekt - Erstellen eines Adressbuches

  Alt 27. Apr 2011, 22:00
Wie gesagt, ich bin blutiger Änfänger
Muss ich morgen mal schauen, ob ich das irgentwie alleine hinkriegen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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:05 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