| Autor |
Beitrag |
cyberbug
      
Beiträge: 53
WIN XP
|
Verfasst: Fr 15.08.08 04:27
Guten abend,
ich stehe vor einem großen problem! Ich bin momentan dabei ein Art kleines datenbankprogramm zu programmieren, und dabei nutze ich ein selbst erstelltes Objekt, dass in einer eigen Unit deklariert wurde(mit functionen, prozuduren, variablen usw.).Das Objekt besitzt auch mehrere Variablen.(z.B. "Betrag")
So, nachdem ich also die Objekte während der laufzeit per verschiedener buttons angelegt habe, möchte ich nun, dass mir alle objekte, deren Inhalt der vaiable(string) "Betrag" = 2 ist aufgelistet werden, Wie stelle ich dass an, oder gibt es alternativen?
Ich bin dankbar für jede antwort!
MFG cyberbug Moderiert von Gausi: Topic aus VCL (Visual Component Library) verschoben am Fr 15.08.2008 um 08:10
|
|
turboPASCAL
      
Beiträge: 193
Erhaltene Danke: 1
Win XP / Vischda
D6 PE / D2005 PE
|
Verfasst: Fr 15.08.08 06:31
Moin,
wir wissen leider nicht wie du dein Object definiert hast.
Ein Pfitzelchen Quelltext der Declaration ist da hilfreich.
Ist dein Objekt ein Record oder eine Klasse ... ?
_________________ Nein, ich bin nicht der turboPASCAL aus der DP, ich seh nur so aus...
|
|
Gausi
      
Beiträge: 8554
Erhaltene Danke: 481
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Fr 15.08.08 06:57
Ich gehe mal davon aus, dass du eine Klasse definiert hast. Dann organisierst du die einzelnen Objekte sicherlich in einer TObjectList, oder? Diese gehst du dann einfach durch, und merkst dir die passenden Objekte in einer neuen ObjectList, und die gibst du dann irgendwie aus.
_________________ We are, we were and will not be.
|
|
cyberbug 
      
Beiträge: 53
WIN XP
|
Verfasst: Fr 15.08.08 14:15
erstmal Danke für die Antworten.
Ja, ich habe das Objekt in einer Klasse definiert, und die Objekte werden einer listbox hinzugefügt.(AddObject). Es gibt auch editfelder in denen man die Eigenschaften eintragen kann, und per butten werde diese dann der listbox hinzugefügt(4 editfelder mit eigenschaften --> 1 Object).
Dekalration(ausschnitt):
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| interface
type TTestObjekt = class private Name: String; Art: Integer; Inhalt: String; Nummer: Integer; |
hinzufügeroutine(ausschnitt):
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TFMain.btnAddClick(Sender: TObject); var test: TTestObjekt; begin test := TTestObjekt.Create; with test do begin lstFeedback.Items.AddObject(ReadName, test) end; end; |
Ich hoffe ich habe alle erforderlich Daten geliefert(@ Gausi: dass habe ich noch nicht ganz verstanden. Könntest du oder jemand anderes das Eventuell mit Code verdeutlichen?
MFG cyberbug
Zuletzt bearbeitet von cyberbug am Fr 15.08.08 14:17, insgesamt 1-mal bearbeitet
|
|
Gausi
      
Beiträge: 8554
Erhaltene Danke: 481
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Fr 15.08.08 14:24
Die Daten in der Listbox zu speichern ist nicht so optimal. Besser wäre eine strikte Trennung von Daten und der Anzeige.
Ich würde daher die Daten in einer TObjectlist speichern. Das kann eine globale Variable sein, oder eine Property der Hauptform. Der Vorteil dabei ist dann, dass man nicht die Anzeige braucht, um auf die einzelnen Objekte zugreifen zu können, sondern man die Daten im Hintergrund hat, und dann ausgewählte Sachen anzeigen kann.
Also z.B. so was:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| MeineListe := TObjectList.Create(True); MeinObjekt := TMyObject.Create; MeinObjekt.Irgendwas := '42'; MeineListe.Add(MeinObjekt);
for i := 0 to MeineListe.Count - 1 do if TMyObject(MeineListe[i]).Irgendwas = '42' then Memo1.Lines.Add(TMyObject(MeineListe[i]).Irgendwas); MeineListe.Free; |
_________________ We are, we were and will not be.
|
|
ThunderDragon
      
Beiträge: 26
Windows 7 Professional 32Bit
Delphi 2009 Enterprise
|
Verfasst: Fr 15.08.08 14:54
cyberbug hat folgendes geschrieben: | Guten abend,
ich stehe vor einem großen problem! Ich bin momentan dabei ein Art kleines datenbankprogramm zu programmieren, und dabei nutze ich ein selbst erstelltes Objekt, dass in einer eigen Unit deklariert wurde(mit functionen, prozuduren, variablen usw.).Das Objekt besitzt auch mehrere Variablen.(z.B. "Betrag")
So, nachdem ich also die Objekte während der laufzeit per verschiedener buttons angelegt habe, möchte ich nun, dass mir alle objekte, deren Inhalt der vaiable(string) "Betrag" = 2 ist aufgelistet werden, Wie stelle ich dass an, oder gibt es alternativen?
Ich bin dankbar für jede antwort!
MFG cyberbug
Moderiert von Gausi: Topic aus VCL (Visual Component Library) verschoben am Fr 15.08.2008 um 08:10 |
Naja, abgesehen von den Vor - und Nachteilen:
Du musst einen Typecast vornehmen.
Das heisst, dass du das TObject, wass du von ListBox1.Items.Objects[x] zurückgegeben bekommst, in deinen Datentyp TTestObjekt umwandeln musst. Das machst du wie folgt:
Delphi-Quelltext 1: 2:
| for i := 0 to Listbox1.Count - 1 do showmessage(TTestObjekt(ListBox1.Items.Objects[i]).Bertag); |
Dies würde dir zum Beispiel die ganzen Beträge sämtlicher Objekte ausgeben. (Vorausgesetzt Betrag ist ein String ^^)
|
|
cyberbug 
      
Beiträge: 53
WIN XP
|
Verfasst: Fr 15.08.08 15:01
Vielen dank, ihr habt mein Problem gelöst 
|
|
|