Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Erweiterung VirtualStringTree als Grid (https://www.delphipraxis.net/173127-erweiterung-virtualstringtree-als-grid.html)

Guentiganz 8. Feb 2013 08:02

Erweiterung VirtualStringTree als Grid
 
Hallo,

Ich habe eine eigene Komponenente abgleitet von einem TVirtualStringTree.
Diese soll als Grid dienen.
Ich habe sie um eine DataSet Property erweitert.
Aktuell werden die Spalten im Treeview automatisch anhand der Dataset.Fields gesetzt und auch der Displayname übernommen.

Habe ich die Möglichkeit, bei den Columns ein Feld zur Zuordnung des Felds zu haben, sprich eine neue Property in den TVirtualTreeColumns ohne, das ich die restliche Logik für die columns neu programmieren muss.

Der Hintergrund ist, dass ich einfach nicht alle Columns anzeigen möchte, momentan definiere ich das über die visible Eigenschaft der Columns im Dataset.

sh17 8. Feb 2013 08:32

AW: Erweiterung VirtualStringTree als Grid
 
Das Tag der Spalte?

Guentiganz 8. Feb 2013 08:45

AW: Erweiterung VirtualStringTree als Grid
 
Den Tag kann ich leider nicht nehmen, da ich dieses schon für unsere Rechteverwaltung als Zuordnung nehme, welches Recht für das Objekt benötigt wird

uligerhardt 8. Feb 2013 08:46

AW: Erweiterung VirtualStringTree als Grid
 
Es gibt in TBaseVirtualTree eine Methode
Delphi-Quellcode:
    function GetColumnClass: TVirtualTreeColumnClass; virtual;

Ich nehme an, die ist für solche Zwecke gedacht - hab's aber nie ausprobiert.

uligerhardt 8. Feb 2013 08:49

AW: Erweiterung VirtualStringTree als Grid
 
Zitat:

Zitat von Guentiganz (Beitrag 1202556)
Den Tag kann ich leider nicht nehmen, da ich dieses schon für unsere Rechteverwaltung als Zuordnung nehme, welches Recht für das Objekt benötigt wird

Du könntest im Tag einen Zeiger auf ein Record (oder eine Referenz auf eine Klasseinstanz) speichern und im Record alle benötigten Infos halten.

Guentiganz 8. Feb 2013 09:21

AW: Erweiterung VirtualStringTree als Grid
 
Zitat:

Zitat von uligerhardt (Beitrag 1202558)
Zitat:

Zitat von Guentiganz (Beitrag 1202556)
Den Tag kann ich leider nicht nehmen, da ich dieses schon für unsere Rechteverwaltung als Zuordnung nehme, welches Recht für das Objekt benötigt wird

Du könntest im Tag einen Zeiger auf ein Record (oder eine Referenz auf eine Klasseinstanz) speichern und im Record alle benötigten Infos halten.

Das wollte ich eigentlich vermeiden.
Da ich über den Objektinspector die Rechte definiere :)

ich schau mir mal GetColumnClass an

http://www.delphipraxis.net/87409-pr...einfuegen.html

Lemmy 8. Feb 2013 09:33

AW: Erweiterung VirtualStringTree als Grid
 
Zitat:

Zitat von uligerhardt (Beitrag 1202558)
Zitat:

Zitat von Guentiganz (Beitrag 1202556)
Den Tag kann ich leider nicht nehmen, da ich dieses schon für unsere Rechteverwaltung als Zuordnung nehme, welches Recht für das Objekt benötigt wird

Du könntest im Tag einen Zeiger auf ein Record (oder eine Referenz auf eine Klasseinstanz) speichern und im Record alle benötigten Infos halten.


besser nicht, da die Komponente damit automatisch nicht für 64bit verwendet werden kann.

Grüße

Guentiganz 8. Feb 2013 09:39

AW: Erweiterung VirtualStringTree als Grid
 
Zitat:

Zitat von Lemmy (Beitrag 1202567)
besser nicht, da die Komponente damit automatisch nicht für 64bit verwendet werden kann.
Grüße

Warum gibt es hier Probleme?
Bei den Trees nutze ich auch Zeiger, und halte die Daten in einem Record, funktioniert aber auf x64

Lemmy 8. Feb 2013 09:46

AW: Erweiterung VirtualStringTree als Grid
 
das TAG-Property speichert einen Interger, der ist auf x32 und x64 aber 32 Bit breit, d.h. da passt bei x64 halt kein Pointer rein...

sh17 8. Feb 2013 09:51

AW: Erweiterung VirtualStringTree als Grid
 
Zitat:

Zitat von Guentiganz (Beitrag 1202556)
Den Tag kann ich leider nicht nehmen, da ich dieses schon für unsere Rechteverwaltung als Zuordnung nehme, welches Recht für das Objekt benötigt wird

welches Objektes? des Fields? Dann verschiebe das Recht in das Field des Datasets

uligerhardt 8. Feb 2013 10:57

AW: Erweiterung VirtualStringTree als Grid
 
Zitat:

Zitat von Lemmy (Beitrag 1202571)
das TAG-Property speichert einen Interger, der ist auf x32 und x64 aber 32 Bit breit, d.h. da passt bei x64 halt kein Pointer rein...

In aktuellen (also 64bit-fähigen) VCL-Versionen ist AFAIK Tag ja ein NativeInt und dieses Problem damit nichtexistent. Ich hoffe, das ist bei aktuellen VT-Versionen nachgezogen. Wenn nicht, könnte man statt des Zeigers einen Index in ein Array o.ä. verwenden.

Lemmy 8. Feb 2013 11:04

AW: Erweiterung VirtualStringTree als Grid
 
Zitat:

Zitat von uligerhardt (Beitrag 1202581)
In aktuellen (also 64bit-fähigen) VCL-Versionen ist AFAIK Tag ja ein NativeInt und dieses Problem damit nichtexistent. Ich hoffe, das ist bei aktuellen VT-Versionen nachgezogen. Wenn nicht, könnte man statt des Zeigers einen Index in ein Array o.ä. verwenden.

wow bin begeistert.. das habe ich damals nicht weiter verfolgt - ist wirklich ein NativeInt. Mein Einwurf ist falsch und kann komplett ignoriert werden :-)

Grüße

Guentiganz 8. Feb 2013 12:04

AW: Erweiterung VirtualStringTree als Grid
 
ich bin grad dabei, das mit GetColumnClass zu probieren

ich möchte gerne die funktionalität die columns automatisch zu generieren behalten

im constructor setze ich den default wert für die Property AutoAddColumns
Nun möchte ich, wenn das Objekt erstellt wird diese Eigenschaft prüfen um dann die Columns automatisch zu generiern, wenn ein Dataset assigned ist.

Wie kann ich das machen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:39 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