![]() |
probleme mit Listbox, TList und Objekten
Hallo liebe Delphianer! Habe folgendes Problem. Ich hab ein Programm, das beim Programmstart in einer TList 8Lampen erstellt! Diese 8 Lampen werden in der Listbox angezeigt. Jetzt möchte ich das wenn man in ein Edit schreibt und auf den Button "Hinzufügen" klickt. Die Position der Lampe den Wert von dem Edit bekommt. Aber ich weiß nicht so recht wie ich das schreiben soll. Mein Quelltext an der relevanten Stelle sieht bisher so aus:
Delphi-Quellcode:
Habe 2 Klassen erstellt. Einmal Lampe und einmal Röhre. Wobei Lampe 2 Instanzen von Röhre hat und Röhre die Eigenschaft Watt(integer) hat.
procedure TForm1.btHinzu1Click(Sender: TObject);
var x : integer; begin Lampe.Roehre1.Watt := strToInt(edWatt1.text); end; procedure TForm1.lstLampenClick(Sender: TObject); begin edWatt1.text := IntToStr(Lampe.Roehre1.Watt); end; Wäre sehr froh, wenn es jemanden gibt, der mir da ein bisschen auf die Sprünge hilft. Liebe Grüße Dennis |
Re: probleme mit Listbox, TList und Objekten
Hi,
könntest du etwas genauer erklären was du erreichen möchtest? Was meinst du denn mit Zitat:
Und was meinst du mit der Position? Die Position der Lampe in der Listbox? Was ist dann hier wenn der Index ungültig ist? Wie sieht es aus, wenn du noch keine Lampe hast und eine an Position 8 einfügen willst? Du siehst jede Menge Fragen, deshalb versuch bitte einfach nochmal etwas genauer zu sagen, was du machen möchtest. Gruß Der Unwissende |
Re: probleme mit Listbox, TList und Objekten
Schau mal in den Anhang :
|
Re: probleme mit Listbox, TList und Objekten
nein.. keine neuen Lampen erstellen! Die beispielsweise 8 Lampen werden bei mir beim Programmstart erzeugt. In etwa so:
Lampe1 Lampe2 Lampe3 . . . Lampe8 -->Jetzt soll man eine von den Lampen anklicken - z.B Lampe3. -->Dann in ein Edit eine beliebige Zahl schreiben -->Dann auf ein Button drücken und dieser weist die Zahl der Lampe zu. so das sie unter Lampe3 gespeichert ist praktisch --> Das soll man mit jeder Lampe machen können. --> Wenn man dann später wieder auf Lampe3 klickt, soll die entsprechende Zahl, die wir hierfür ins edit eingetragen haben, dort auch wieder erscheinen. Ich hoffe ich konnte es diesmal ein bisschen verständlicher erklären. Liebe Grüße magic87 |
Re: probleme mit Listbox, TList und Objekten
danke christian! Ist sehr nett, wie du das gemacht hast! Aber leider darf ich noch keine Properties benutzen! :oops:
Wäre ja schon glücklich, wenn ich einfach nur wissen würde, wie die Lampen in der Listbox den hinzugefügten wert speichern und diesen dann auch wieder ausgeben wenn man auf die entsprechende Lampe klickt. |
Re: probleme mit Listbox, TList und Objekten
OK, dann mach doch die privaten Variablen (die mit F beginnen) public und lösche die properties,
dann hast Du doch genau das was Du willst !
Delphi-Quellcode:
type TRoehre = class(TObject)
public Watt : Integer; IsOn: Boolean; constructor create (Watt: Integer; IsOn : Boolean) ; destructor destroy; override; end; type TLampe = class(TObject) public Nr : integer; Bezeichnung : string; Roehre1 : TRoehre; Roehre2 : TRoehre; constructor create (Nr : Integer; Bezeichnung : String); destructor destroy; override; end; ............. constructor TLampe.create (Nr : Integer; Bezeichnung : String); begin self.Nr := Nr; self.Bezeichnung := Bezeichnung; self.Roehre1 := TRoehre.create(30,False); self.Roehre2 := TRoehre.create(40,False); inherited create; end; constructor TRoehre.create(Watt : Integer; IsOn : Boolean); begin inherited create; self.Watt := Watt; self.IsOn := IsOn; end; |
Re: probleme mit Listbox, TList und Objekten
Da wirst Du wohl mit einem Array arbeiten müssen.
Delphi-Quellcode:
danach kannst Du dann mit z.B.
Var Lampen : Array[1..8] of TLampe;
Delphi-Quellcode:
die Werte zuweisen.
Lampen[1].Bezeichnung := 'Lampe1';
|
Re: probleme mit Listbox, TList und Objekten
wofür soll das self stehen?? Versteh ich nich ganz?
|
Re: probleme mit Listbox, TList und Objekten
Damit nicht die lokale Variable (aus dem Deklarationsteil) genommen wird, sondern die aus dem Objekt,
da die (zufällig) die gleiche Bezeichnung haben . Bsp.: .... public hallo : String; ...... constructor Create (hallo : String); begin self.hallo := hallo; end; Du kannst sie aber auch anders nennen, dann kannst Du das "self" weglassen ! |
Re: probleme mit Listbox, TList und Objekten
Liste der Anhänge anzeigen (Anzahl: 1)
Hab mal neu gespeichert, kannst ja mal gucken !
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz