AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Standard TListView eigenes TListItem zuweisen - wie?
Thema durchsuchen
Ansicht
Themen-Optionen

Standard TListView eigenes TListItem zuweisen - wie?

Ein Thema von s-off · begonnen am 12. Feb 2010 · letzter Beitrag vom 12. Feb 2010
Antwort Antwort
s-off

Registriert seit: 20. Jan 2010
89 Beiträge
 
Delphi 2010 Professional
 
#1

Standard TListView eigenes TListItem zuweisen - wie?

  Alt 12. Feb 2010, 14:29
Ich habe für Testzwecke die Klasse TMyListItem von TListItem abgeleitet.
Zur Laufzeit möchte ich nun eine Instanz von TListView erzeugen, die aber nicht auf TListItem zugreifen soll, sondern auf meine eigene TMyListItem-Klasse.
Wie stelle ich das am schlausten an?
Gruß
s-off
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Standard TListView eigenes TListItem zuweisen - wie?

  Alt 12. Feb 2010, 14:48
So geht das nicht. Du hast bei TListItem einen Pointer-Property zur Verfügung an das du alles mögliche hängen kannst.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
s-off

Registriert seit: 20. Jan 2010
89 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Standard TListView eigenes TListItem zuweisen - wie?

  Alt 12. Feb 2010, 15:38
Okay, das mit der ListView war nur ein Beispiel. Was mache ich bei Klassen, die nicht über so eine flexible Eigenschaft verfügen?
Aus Deiner Aussage 'So geht das nicht.' entnehme ich, dass ich sämtliche Interna der Klasse anpassen müsste.

Jemand eine andere Idee?
Gruß
s-off
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Standard TListView eigenes TListItem zuweisen - wie?

  Alt 12. Feb 2010, 17:15
Es gibt zwei einfache Möglichkeiten:
01: Du leitest von TListItems ab, wie jetzt auch. Allerdings musst du dann auch von TListView ableiten. Da sonst deine Klasse nicht genutzt werden kann bzw. wird. Z.B beim hinzufügen. Diese Methoden müsstest du überschreiben. Ebenfalls solltest du das Property Items überschreiben bzw. Anpassen

02: Viel leichter geht das über die Data Eigenschaft. Ich glaube bei der ListView war das ein Pointer. Es kann aber auch ein TObject sein. Dann kannst du einfach eine eigene Klasse erstellen und der Data Eigenschaft des ListItems hinzufügen.

Die Klasse muss das schon bereit stellen, sonst stehst du vor einem Problem. Es kommt immer auf dein Vorhaben an. Mit der WinApi lässt sich auch einiges erreichen. Z.B. kann man damit Komponenten zu einem OpenDialog hinzufügen. Meinst du sowas ?
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Standard TListView eigenes TListItem zuweisen - wie?

  Alt 12. Feb 2010, 17:35
Zitat von s-off:
Okay, das mit der ListView war nur ein Beispiel. Was mache ich bei Klassen, die nicht über so eine flexible Eigenschaft verfügen?
Normal einfach eine Ableitung machen. Aber TListView wird nicht mit deinem abgeleiteten TListItems arbeite so das hier nicht so einfach vorgegangen werden kann.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
s-off

Registriert seit: 20. Jan 2010
89 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Standard TListView eigenes TListItem zuweisen - wie?

  Alt 12. Feb 2010, 20:28
Okay, danke für Eure Antworten. Ich habe keinen konkreten Anwendungsfall dafür; wollte nur wissen, ob das generell möglich ist.
Gruß
s-off
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Standard TListView eigenes TListItem zuweisen - wie?

  Alt 12. Feb 2010, 21:24
Hallo,

bei der Komponente TListView gibt es das Ereignis OnCreateItemClass, über das eine eigene Klasse für Listenelemente bereitgestellt werden kann. Zumindest in Delphi 2006 liegt dieses Ereignis leider noch im protected-Bereich der Klasse, so dass ein Überschreiben der ListView-Klasse notwendig ist. Bei neueren Delphi-Version sollte das Ereignis im Objektinspektor sichtbar sein - zumindest ab Delphi 2009 gilt das.

Ach ja: beim TreeView heißt das Ereignis "OnCreateNodeClass".

Gruß Hawkeye
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:05 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