![]() |
Datentyp von ListView Data prüfen
Hi,
ich befülle zur Laufzeit eine ListView mit Benutzern (TUser) und Gruppen (TGroup):
Delphi-Quellcode:
Wie kann ich jetzt feststellen, was für ein Datentyp hinter "Data" steckt?
...
for i := 0 to Core.Groups.Count - 1 do begin Item := ListView1.Items.Add; Item.Data := Core.Groups[i]; Item.Caption := Core.Groups[i].Name; Item.ImageIndex := 1; end; ... for i := 0 to Core.Users.Count - 1 do begin Item := ListView1.Items.Add; Item.Data := Core.Users[i]; Item.Caption := Core.Users[i].Name; Item.ImageIndex := 0; end; Ich würde gerne den Is-Operator dafür verwenden, allerdings schmeißt Delphi eine Fehlermeldung:
Code:
E2015 Operator ist auf diesen Operandentyp nicht anwendbar
Delphi-Quellcode:
Muss ich Data noch irgendwie Casten oder so? Ich habe mit Pointer-Arithmetik noch nicht so viel zutun gehabt...
if (Item.Data is TUser) then
... Oder muss ich wirklich den Umweg über einen "gemeinsamen" Record/Klasse gehen? in etwa so:
Delphi-Quellcode:
TItemTypen = (itUser, itGroup);
TItemTyp = record Data: Pointer; Typ: TItemTypen; end; |
AW: Datentyp von ListView Data prüfen
Die Data-Eigenschaft ist vom Typ TCustomData(=Pointer) und nicht vom Typ TObject. Somit kannst Du nicht mit is oder as prüfen/casten. Du könntest höchstens nach einem gemeinsamen Vorfahren casten (zur Not TObject) und dann is anwenden. Ausprobiert habe ich das allerdings nicht, einen Versuch ist es aber IMO wert.
|
AW: Datentyp von ListView Data prüfen
Zitat:
|
AW: Datentyp von ListView Data prüfen
Also mal wieder im Blindflug ins Schwarze getroffen :lol:
|
AW: Datentyp von ListView Data prüfen
Vielen Dank :) Genau das habe ich gesucht. Hätte ich auch selbst drauf kommen können... :roll:
|
AW: Datentyp von ListView Data prüfen
Fein!
//OT: Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:56 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