Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Objekte in einer Reihenfolge verwalten (https://www.delphipraxis.net/202945-objekte-einer-reihenfolge-verwalten.html)

Klaus777 27. Dez 2019 19:54

Objekte in einer Reihenfolge verwalten
 
Hallo zusammen,

ich habe das Problem, das ich Objekte in ihrer Reihenfolge verwalten möchte.
d.h. Objekt anlegen und in einer Listbox anzeigen, klappt.

Als Grundlage habe ich das hier verwendet:
www.delphipraxis.net...ontainer-klasse.html

Jetzt möchte ich das Objekt in der Reihenfolge in der Listbox verschieben.

Das Verschieben der Einträge geht auch, nur die Zuordnung der Objekte passt dann nicht mehr.

Hat jemand so etwas schon mal gebaut?

Viele Grüße Klaus

Redeemer 27. Dez 2019 20:24

AW: Objekte in einer Reihenfolge verwalten
 
Link geht nicht.

Was heißt Objekte verschieben? Man kann in den Delphi-Referenz durchsuchenTStrings einer TListBox.Items auch jedem Eintrag neben einem String auch einen Pointer zuweisen (in Delphi ungenau Objekt genannt). Wenn man Einträge wie vorgesehen mit Delphi-Referenz durchsuchenTStrings.Move verschiebt, wandert der Pointer mit.

haentschman 28. Dez 2019 07:59

AW: Objekte in einer Reihenfolge verwalten
 
Moin...8-)
Zitat:

Objekt anlegen und in einer Listbox anzeigen
...ich tippe mal darauf, daß du ein "Trennung der Daten von der Visualisierung Problem hast". :stupid:
Lösung: Verwalte deine Objekte in z.B. Listen in einer anderen Unit = Logik (TObjectList<TBlubb> oder so...) Dann kannst du den Inhalt der Liste anzeigen = GUI.

Noch bessere Trennung über Events:
Die GUI sagt der Logik "Lade mir die Objekte"...die Logik lädt die Objekte und benachrichtigt die GUI über ein Event...z.B. OnLoadObjects(Liste)...Die GUI empfängt die Liste, und wertet sie aus = Anzeige.
:wink:

Klaus777 29. Dez 2019 20:37

AW: Objekte in einer Reihenfolge verwalten
 
Hallo ihr beiden,
danke schon mal, da habe ich eine Richtung in der ich probieren kann.
Da ich nach einer kurzen Pausen von 10 Jahren :oops: (Ich bitte um Gnade) mal wieder das Proggen anfange, kurze Frage gibt es einen Schnipsel dazu??

Der Link noch mal in voller Länge:
https://www.delphipraxis.net/88218-v...er-klasse.html

wie geht das mit den Pointern und der Stringlist? Da stehe ich im Moment voll auf dem Schlauch :roll:

ich danke euch für die Unterstützung.
Grüße Klaus.

scrat1979 30. Dez 2019 12:51

AW: Objekte in einer Reihenfolge verwalten
 
Wenn du ein aktuelleres Delphi mit Generics-Untersützung hast dann kannst du damit eine ObjectList mit
Delphi-Quellcode:
type TMyList = class(TObjectList<TMeinObjektTyp>)
end;
erstellen. Damit ersparst du dir das ständige „casten“. Die Suche nach „Delphi TObjectList Generics“ sollte dir einige Treffer zeigen. Das Einbinden der entsprechenden units (welche weiß ich auswendig gerade nicht) für die Generics-Unterstützung nicht vergessen.

Luckie 30. Dez 2019 14:39

AW: Objekte in einer Reihenfolge verwalten
 
Ich darf mal zusammenfassen. Die Objekte liegen in der Liste in einer Reihenfolge vor: A-B-C-... und werden so in der Listbox angezeigt. Jetzt verschiebst du in der Listbox Objekt B vor A. Also haben wir in der Listbox B-A-C-... Im Speicher haben wir aber noch A-B-C-.... Jetzt willst du, dass auch die Objekte im Speicher die selbe Reihenfolge wie in der Listbox haben, dass heißt das Objekt im Speicher muss analog "verschoben" werden. Habe ich das so richtig verstanden?

Klaus777 2. Jan 2020 15:59

AW: Objekte in einer Reihenfolge verwalten
 
Hallo zusammen,
danke für eure Denkanstöße.
Die Trennung der Daten und Anzeige hatte ich nicht auf dem Schirm und es hat etwas gebraucht das zu verstehen.

Ich werde das mit den Generics aufgreifen und mich in diese Richtung weiter belesen und damit weitermachen.
Danke der Einsicht von Embarcadero gibt es ja die Community-Edition. Aktuelles Delphi ist soweit vorhanden.

Den Wahnsinn, die Daten in der Anzeige mit denen im Speicher zu syncen.... Oh je...

Danke & viele Grüße Klaus

Redeemer 2. Jan 2020 18:00

AW: Objekte in einer Reihenfolge verwalten
 
Zitat:

Zitat von Klaus777 (Beitrag 1454322)
Den Wahnsinn, die Daten in der Anzeige mit denen im Speicher zu syncen.... Oh je...

Deshalb ja mein Vorschlag mit den Objekt-Features von TStrings. Dann liegt alles in derselben Liste, nämlich TListBox.Items, und es bleibt für immer zusammen, was zusammen gehört. Anzeige und Daten wären also nicht out-of-sync, außer man macht das gewaltig falsch. Problem: Den Pointer Objects[] muss man selber casten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz