Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Problem mit tListbox.AddObjekt
bms - Do 17.04.03 01:17
Titel: Problem mit tListbox.AddObjekt
ich lerne gerade delphi und bin bei objekten gelandet. in addobject kann ich doch ein objekt einbinden. wieso funktioniert das hier nicht.
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: 45: 46: 47: 48: 49:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) ListBox1: TListBox; Button1: TButton; procedure ListBox1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private public end;
TAbc = class Text: String; end;
var Form1: TForm1; Abc: TAbc;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject); begin Abc := TAbc.Create; Abc.Text := '123456'; ListBox1.Items.AddObject('Abc', TObject(Text)); Abc.Free; end;
procedure TForm1.ListBox1Click(Sender: TObject); begin Abc := TAbc.Create; Abc := TAbc(ListBox1.Items.Objects[ListBox1.ItemIndex]); ShowMessage( Abc.Text ); Abc.Free; end;
end. |
wenn ich auf listbox klicke sollte der text ausgegeben werden. es kommt aber nur ein fehler.
Moderiert von
Klabautermann: Titel geändert.
Moderiert von
Tino: Code- durch Delphi-Tags ersetzt.
Michael Stenzel - Do 17.04.03 02:40
Hallo!
Einmal mußt Du mit AddObject ein Object angeben, in deinem Beispiel
Delphi-Quelltext
1:
| ListBox1.Items.AddObject('Abc', TObject(Text)); |
muß Heißen
Delphi-Quelltext
1:
| ListBox1.Items.AddObject('Abc', TObject(Abc)); |
Dann darfst du die Objekte nicht freigeben, weil nur Zeiger(Referenzen) auf Ihnen gespeichert werden.
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: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) ListBox1: TListBox; Button1: TButton; procedure ListBox1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private public end;
TAbc = class Text: String; end;
var Form1: TForm1; Abc: TAbc;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject); begin Abc := TAbc.Create; Abc.Text := '123456'; ListBox1.Items.AddObject('Abc', TObject(Abc)); end;
procedure TForm1.ListBox1Click(Sender: TObject); begin Abc := TAbc(ListBox1.Items.Objects[ListBox1.ItemIndex]); ShowMessage( Abc.Text ); end;
procedure TForm1.FormDestroy(Sender: TObject); begin Abc.Free; end;
end. |
Ich hoffe das Du damit zurecht kommst.
Michael.
Moderiert von
Tino: Code- durch Delphi-Tags ersetzt.
Klabautermann - Do 17.04.03 10:58
Hallo und wilkommen im Delphi-Forum.
Vergebe bitte einen "vernünftigen" Titel für dieses Posting (und natürlich für zukünftige ;)). Damit ist einer gemeint, der darauf schließen lässt worum es hier geht.
Beachte hierzu bitte auch unsere Richtlinien:
| Delphi-Forum Richtlinien hat folgendes geschrieben: |
1.1 Beiträge
Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist. |
Um dieses Topic umzubenennen, musst du einfach beim ersten Beitrag auf Edit klicken. Dann kannst du den Titel ändern und drückst auf absenden.
Gruß
Klabautermann
bms - Do 17.04.03 20:09
@michael
danke. jetzt wo ich es sehe erscheint es logisch.
@ klabautermann
mir ist leider kein besserer titel eingefallen.
Klabautermann - Fr 18.04.03 11:17
Hallo,
| bms hat folgendes geschrieben: |
@ klabautermann
mir ist leider kein besserer titel eingefallen. |
das fand ich nicht so schwer. Es geht ja nur darum, das die besucher des Forums schon beim lesen des Titels eine vorstellung bekommen worum es geht. Bei "wieso funktioniert das nicht" ist das nicht gegeben.
Gruß
Klabautermann
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!