Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi probleme mit Listbox, TList und Objekten (https://www.delphipraxis.net/79150-probleme-mit-listbox-tlist-und-objekten.html)

magic87 17. Okt 2006 10:38


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:
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;
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.

Wäre sehr froh, wenn es jemanden gibt, der mir da ein bisschen auf die Sprünge hilft.
Liebe Grüße

Dennis

Der_Unwissende 17. Okt 2006 10:43

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:

Zitat von magic87
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.

Du hast doch 8 Lampen, wenn du also hinzufügen drückst, soll dann eine neunte Weitere erstellt werden? Oder ist eine der 8 Lampen ausgewählt und soll verschoben werden?
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

chrisw 17. Okt 2006 10:56

Re: probleme mit Listbox, TList und Objekten
 
Schau mal in den Anhang :

magic87 17. Okt 2006 10:59

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

magic87 17. Okt 2006 11:03

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.

chrisw 17. Okt 2006 11:04

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;

uwewo 17. Okt 2006 11:09

Re: probleme mit Listbox, TList und Objekten
 
Da wirst Du wohl mit einem Array arbeiten müssen.

Delphi-Quellcode:
Var Lampen : Array[1..8] of TLampe;
danach kannst Du dann mit z.B.

Delphi-Quellcode:
  Lampen[1].Bezeichnung := 'Lampe1';
die Werte zuweisen.

magic87 17. Okt 2006 11:20

Re: probleme mit Listbox, TList und Objekten
 
wofür soll das self stehen?? Versteh ich nich ganz?

chrisw 17. Okt 2006 11:25

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 !

chrisw 17. Okt 2006 11:51

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