Entwickler-Ecke
Sonstiges (Delphi) - Caption in Listbox übergeben
Vaio - Sa 18.02.06 17:02
Titel: Caption in Listbox übergeben
Für mein Informatikunterricht programmiere ich das Programm "Notizzettel". Ich habe im ersten Fenster eine Listbox und drei Buttons: Neuer Notizzettel, Zettel löschen und Programmende.
Wenn ich auf Notizzettel klicke öffnet sich eine Aboutbox, dort kann ich den Namen für den neuen Notizzettel in ein Editfeld eingeben. Wenn ich dann auf OK klicke öffnet sich ein Form3-Fenster und der Edit.Text wird an die Caption übergeben.
In dem neuen Form3 Fenster gibt es ein Memofeld wo man die Notiz hinterlassen kannst. Wenn man jetzt auf OK in Form3 klickt, sollte die Caption in die Listbox übergeben und das Fenster sich schließen. Und wenn man jetzt in der Listbox, den Notizzettel auswählt sollte sich dieser wieder öffnen.
Wenn ich jedoch auf OK drücke kommt ein Fehler:
Im Project Project1.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 00454720 in Modul Project1.exe. Lesen von Adresse 00000000'.
Form1:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) btnn: TButton; btzl: TButton; btp: TButton; Listbox: TListBox; procedure btnnClick(Sender: TObject); private public end;
var Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.btnnClick(Sender: TObject); begin AboutBox.show; end;
end. |
Unit2:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44:
| unit Unit2;
interface
uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls, Buttons, ExtCtrls;
type TAboutBox = class(TForm) edn: TEdit; Label1: TLabel; btok: TButton; btab: TButton; procedure btabClick(Sender: TObject); procedure btokClick(Sender: TObject); private public end;
var AboutBox: TAboutBox; Listbox: TListbox;
implementation
uses Unit3;
{$R *.dfm}
procedure TAboutBox.btabClick(Sender: TObject); begin AboutBox.Close; end;
procedure TAboutBox.btokClick(Sender: TObject); begin Form3.show; Form3.caption:=edn.text; Aboutbox.Close; end;
end. |
Unit3:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32:
| unit Unit3;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Unit1, Unit2;
type TForm3 = class(TForm) MemZettel: TMemo; Button1: TButton; procedure Button1Click(Sender: TObject); private public end;
var Form3: TForm3;
implementation
{$R *.dfm}
procedure TForm3.Button1Click(Sender: TObject); begin ListBox.Items[ListBox.ItemIndex]:=Form3.caption; end;
end. |
digi_c - Sa 18.02.06 18:17
Setze doch mal einen Breakpoint(links neben die Codezeile im Editor klicken), wenn das bei dir richtig bezeichnet ist dann in
btokClick. Dann startest du das Programm und führst das aus was du machen willst. Dann hält der Debugger am Breakpoint und du kannst dich mit F8 an die Stelle herantasten bis es knackt.
Instinktiv würde ich aufgrund der
sagen das du vergessen hast was zu initialisieren. In Unit3 wird z.B. einem Item ein Text zugewiesen aber in deinen ganzen Quellcode wird nirgendwo L
istbox.items.add() aufgerufen.
Vaio - Sa 18.02.06 18:27
An btokclick liegt das nicht, der ganze Fehler taucht bei der Unit3 auf bei Button1click.
Ich weiß jetzt nicht wo ich jetzt dieses Listbox.items.add() initialisieren könnte.
Wenn ich:
Listbox.items.add(Form3.caption)
eingebe, kommt der selbe Fehler.
Marc. - Sa 18.02.06 18:40
mh.. schreib mal form1.listbox1. denn er weiß ja nicht, dass du die listbox aus unit1 meinst ;)
dann muss natürlich noch uses unit1 in unit 3 rein
Vaio - Sa 18.02.06 18:54
Jetzt taucht der Fehler nicht mehr auf, aber es wird nichts in die Listbox eingetragen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| var Form3: TForm3; edn: TEdit;
implementation
uses Unit1, Unit2;
{$R *.dfm}
procedure TForm3.Button1Click(Sender: TObject); begin Form1.ListBox.Items[Form1.ListBox.ItemIndex]:=Form3.caption; end;
end. |
Marc. - Sa 18.02.06 19:00
komisch, bei mir klappts :roll:
digi_c - So 19.02.06 10:54
Aber das Item existiert doch noch garnicht, oder?
Delphi-Quelltext
1:
| Form1.ListBox.Items.Add(Form3.caption); |
Vaio - So 19.02.06 15:18
Muss es denn existieren? Dann muss man es vorher deklarieren, oder was?
EDIT: Das Problem hat sich behoben!
digi_c - So 19.02.06 21:48
Und wie?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!