Autor Beitrag
cyberbug
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 53

WIN XP

BeitragVerfasst: 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 user profile iconGausi: Topic aus VCL (Visual Component Library) verschoben am Fr 15.08.2008 um 08:10
turboPASCAL
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 193
Erhaltene Danke: 1

Win XP / Vischda
D6 PE / D2005 PE
BeitragVerfasst: 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... :P
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 53

WIN XP

BeitragVerfasst: 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):
ausblenden 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):
ausblenden 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
//functionen/prozeduren...
    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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: 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:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
// einmalig irgendwo, z.B. im Create der Form
MeineListe := TObjectList.Create(True); // Parameter in der Hilfe nachlesen ;-)

// Objekte erzeugen und in die Liste einfügen:
MeinObjekt := TMyObject.Create;
MeinObjekt.Irgendwas := '42';
MeineListe.Add(MeinObjekt);
// ...

//Einzelne Objekte anzeigen
for i := 0 to MeineListe.Count - 1 do
  if TMyObject(MeineListe[i]).Irgendwas = '42' then
    Memo1.Lines.Add(TMyObject(MeineListe[i]).Irgendwas); // oder halt in eine Listbox rein

// Bei Programmende:
MeineListe.Free;

_________________
We are, we were and will not be.
ThunderDragon
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26

Windows 7 Professional 32Bit
Delphi 2009 Enterprise
BeitragVerfasst: Fr 15.08.08 14:54 
user profile iconcyberbug 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 user profile iconGausi: 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:

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 53

WIN XP

BeitragVerfasst: Fr 15.08.08 15:01 
Vielen dank, ihr habt mein Problem gelöst :)