![]() |
TListItem um Eigenschaften erweitern
Hallo,
ich habe ein ListView mit Einträgen zu erstellen, alles ja nicht so schwierig :) aber mein problem ist das jedes ListItem einen Eintrag in der Datenbank darstellt. Nun habe ich das immer bisher so gelöst das ich in der Data Eigenschaft einen Pointer auf einen RecordDatensatz im Speicher gesetzt habe in dem meine zusätzlichen Daten stehen. Nun habe ich manchmal aber das Problem das der Zeiger nicht mehr stimmt oder die Aktualisierung im Speicher fehlschlug. Mir kam die Idee das TListItem zu erweitern und meine Daten da mit abzuspeichern. Im simpelsten Beispiel wie folgt
Delphi-Quellcode:
aber wenn ich dann sage
type
TMyListItem = Class(TlistItem) Auftrag : Integer; end; Var myListItem := TMyListItem
Delphi-Quellcode:
sagt er mir das TListItem und TMyListItem unterschiedlich sind, was kann
myListItem := ListView1.Items.Add;
man denn da machen? Ist das ganze überhaupt möglich? Ich hoffe doch sehr da sich meine Probleme mit der Speichersynchronisation damit in Luft auflösen würden. danke schon im voraus, mika |
CommCtrls
Hallo, ich habe jetzt mal probiert meine eigenschaften die ich brauche
direkt in der Typdeklaration von TListItem in der Unit CommCtrls.pas einzutragen, aber ohne erfolg, wenn ich probiere die property aufzurufen sagt er mir die eigenschaft würde nicht existieren :( im Pivate Abschnitt FAuftrag : Integer im Public Abschnitt property Auftrag: Integer read FAuftrag write FAuftrag |
Re: CommCtrls
Zitat:
Hast Du die CommCtrls auch neu compiliert? |
Re: CommCtrls
Zitat:
Leite dir dein eigene Komponente von TListview ab und erweiter sie um dir gewünschten Eingenschaften, Methoden. |
Mika
Hi,
hab auch grad gemerkt das es nicht grad ne witzige idee ist die quellen zu verändern, jetzt speichert er zwar meine daten gewünscht ab, aber er meckert an der shellctrls rum :( wie leite ich denn meine klasse von Tlistview ab? ich will das ja in der form benutzen. ausserdem brauch ich ja daten pro eintrag, geht das wenn ich mir ne tlistview ableite? ich bin der meinung der beste weg wäre ne abgeleitete Klasse von TListItem, aber das will nicht gehen :evil: hat da nicht jemand ne idee wie ich mir mein eigenes listitem erstelle was ich in der listview anzeige? |
Mit der Komponentenentwicklung habe ich auch nicht sehr viel Erfahrung (, um genau zu sein gar keine, siehe meine Homepage :roll:). Ich würde an deiner Stelle einfach mal Im Forum suchen bzw. am all seits beliebten Volkssport "googlen" teilnehmen. :mrgreen:
|
Mika
HI Luckie,
ich hab auch nicht soviel ahnung davon, aber ich hab jetzt probiert eine struktur von listitem zu erstellen, die auf meine abgeleitete klasse aufbaut und die per sendmessage ins listview reinzupusten, aber dann gibts ne AV :evil: hat nicht vielleicht jemand hier schon mal sowas gemacht?? Sakura? Gegoogelt hab ich schon wie wild, und ich hab auch schon im forum (auch in anderen) gesucht, bevor ich diesen thread erstellt habe. Vielleicht bin ich ja einfach zu blöd die richtigen keywords rauszusuchen. Mika |
Moin Mika,
das Beispiel aus Deinem Eingangsposting kann nicht funktionieren, da Du versuchst einem Objekt vom Typ einer abgeleiteten Klasse ein Objekt der Basisklasse zuzuordnen. Da i.d.R. aber Basisklassen weniger enthalten, als die abgeleiteten wird diese Zuweisung verweigert (umgekehrt ginge es). Man könnte das wohl durch einen Typecast erzwingen, aber dadurch würde das Ergebnis immer noch nicht funktionieren, da ja das mit Add hinzugefügte ListViewItem ein Standard ListViewItem ist. Den TCustomListView zu diesen Zwecken abzuleiten und mit geänderten TListViewItems auszustatten kommt mir allerdings ausgesprochen aufwändig vor. Das das mit der Eigenschaft Data nicht 100%ig funktioniert kommt mir komisch vor. Da scheint irgendwo ein Fehler vorzuliegen, denn normaler Weise funktioniert das, so wie Du es beschrieben hast, problemlos. Es wäre wahrscheinlich einfacher hier anzusetzen, als eine neue Kompo zu bauen. |
Wieso soll/kann das mit einem Integer klappen? Warum kein String?
Grüsse, Daniel :hi: |
Mika
Hallo,
an sich ist mit der Eigenschaft Data eines TListItem nichts verkehrt, nur habe ich ab und an Probleme mit der Verwaltung von dynamischen Array's, wenn ich probiere den Zeiger meiner Variablen laut der Eigenschaft Data des ListItems neu zu setzen dann bekomme ich ab und an eine AV :( aber ich habe mir jetzt überlegt den Index des Elements in der Eigenschaft Tag zu speichern und dann einfach das Element so aufzurufen. Mal sehen wie das klappt :) mfg, mika |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:11 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-2025 by Thomas Breitkreuz