|
Registriert seit: 27. Apr 2011 40 Beiträge Delphi 2009 Professional |
#1
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:
und Adresse/Nebenformular
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.
Delphi-Quellcode:
und einmal noch eine Unit
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.
Delphi-Quellcode:
Ich weiß das jetzt erstmal ganz schön viel
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. ![]() 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 15:54 Uhr) |
![]() |
Ansicht |
![]() |
![]() |
![]() |
ForumregelnEs 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
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
![]() |
![]() |