![]() |
VirtualTreeView - Checkbox disablen
In der VirtualTreeView kann man sich doch solch nette CheckBoxen einblenden lassen, nun soll aber nicht immer der Wert (dat Häckchen) verändert werden können und dieses (die Nichtänderbarkeit) soll auch sichtbar sein.
Leider konnte ich aber keine Möglichkeit finden eine disablete Checkbox dort anzeigen zu lassen. Derzeit hab ich mir dafür den angeklicken Unchecked-State mißbraucht und das Ändern intern unterbunten, aber eine richtig disablete Box gefiehle mir dennoch besser. Falls da jemand zufällig 'nen Rat weiß .... biette melden. Es geht mir aktuell um die Dateiliste dieses Programms: ![]() |
Re: VirtualTreeView - Checkbox disablen
Hallo Frank,
ich kann es gerade nicht ausprobieren, aber genügt nicht schon das Hinzufügen von vsDisabled zur Eigenschaft States des Knoten? Grüße vom marabu |
Re: VirtualTreeView - Checkbox disablen
hmmm, ausprobiert hab ich das zwar noch nicht (werd's dann dennoch mal versuchen),
aber wenn das dann den gesamten Eintrag disabled, dann wäre es nicht so gut ... die Schrift sollte sich zumindestens nicht mit ändern und die Popups müssen auch noch anklickbar sein (darum hab ich ja bisher auch nur zur Checkbox was gesucht). |
DP-Maintenance
Dieses Thema wurde von "Phoenix" von "Programmieren allgemein" nach "VCL / WinForms / Controls" verschoben.
Geht um Komponenten |
Re: VirtualTreeView - Checkbox disablen
Liste der Anhänge anzeigen (Anzahl: 1)
So, wie ich nun bemerkte, hatte ich es doch schonmal mit Disabled versucht, allerdings lief dann garnichts mehr.
Sobald ich es versuche, kommt ein netter Fehler: :wall: Und daß da der Fehler bei mir liegen könnte kann ich auch behaupten. Hab ja nur eine ImageList angegeben und rücke über OnGetImageIndex den entsprechenden ImageIndex raus. |
Re: VirtualTreeView - Checkbox disablen
Delphi-Quellcode:
kann keine probleme feststellen.
var
node: PVirtualNode; begin node:=VirtualStringTree1.AddChild(nil); VirtualStringTree1.CheckType[node]:=ctCheckBox; VirtualStringTree1.IsDisabled[node]:=true; end; imho sollte man es vermeiden die states direkt zu verändern. aber besten immer über die passenden properties verändern. |
Re: VirtualTreeView - Checkbox disablen
Ich versuch's mal so.
Derzeit ändere ich ja erstmal alles direkt im Node und sage dann dem VST daß es Änderungen gab ... eigenlich sollte es so doch auch gehen :grübel: |
Re: VirtualTreeView - Checkbox disablen
Also, ich hab es jetut nochmal mit dem Disabled versucht, allerdings dabei mal keine Bilder eingeblendet, also onGetImageIndex unbearbeitet (ohne ImageIndex-Zuweisung) übergangen.
Und schon tritt der Fehler nicht mehr auf. Es demnach wohl liegt an den Bildern. :gruebel: Ich hab es auch schon mit verschiedenen vormaten versucht 4-Bit, 256-farbig und TrueColor ... keine Änderung. @generic: hattes du da auch Bilder mit drin? |
Re: VirtualTreeView - Checkbox disablen
Liste der Anhänge anzeigen (Anzahl: 3)
So, nichtmal in 'nem einfachen Test läuft es :cry:
(siehe Anhang) Inzwichen weiß ich, daß die Variable Images (siehe markierte Fehlerzeile im Bild) NIL ist und demnach auch nichts zugewiesen werden kann. Was nicht existiert, kann auch nicht genutzt werden ...
Delphi-Quellcode:
TBaseVirtualTree.PaintImage(var PaintInfo: TVTPaintInfo; ...
PaintInfo.ImageInfo[iiOverlay].Images = nil |
Re: VirtualTreeView - Checkbox disablen
*push* (und wehe einer meckert :stupid: )
Ich hab halt immernoch keine Lösung, also wenn wer was weiß.... |
AW: VirtualTreeView - Checkbox disablen
Hallo zusammen,
hat hier jemand schon eine Lösung gefunden. Ich würde die Checkboxen gerne nur als Status Information verwenden. Soll heißen, ich will wissen, ob weiter unten im Baum, schon eine Bearbeitung erfolgt ist. Daher soll über den Click auf die Checkbox keine Änderung erfolgen. Gruß Jens |
AW: VirtualTreeView - Checkbox disablen
In diesem Fall würde ich einfach das OnChecking Event implementieren und den Parameter
Delphi-Quellcode:
(immer) auf
Allowed
Delphi-Quellcode:
stellen.
false
Delphi-Quellcode:
procedure TfrmMain.vstChecking(Sender: TBaseVirtualTree; Node: PVirtualNode; var NewState: TCheckState;
var Allowed: Boolean); begin Allowed := False; end; |
AW: VirtualTreeView - Checkbox disablen
Das ist richtig, aber dann kann ich den Checkstate auch nicht mehr setzen... Ich will ja nur das OnClick verhindern.
|
AW: VirtualTreeView - Checkbox disablen
Brauchst du den CheckState für die Anzeige oder nur als internen Status?
|
AW: VirtualTreeView - Checkbox disablen
Zitat:
Delphi-Quellcode:
setzt? Das habe ich leider im Moment nicht im Kopf. Wenn dem so wäre, dann könntest du natürlich über einen Zwischenweg arbeiten und dir eine Variable setzen die auf
vst.IsChecked[Node] := true;
Delphi-Quellcode:
steht wenn du aus dem Programm heraus den CheckState der Node verändern willst, aber auf
true
Delphi-Quellcode:
ist, wenn der Benutzer eine Aktion ausführt. Und die Variable wird dann im OnChecking Event geprüft.
false
|
AW: VirtualTreeView - Checkbox disablen
Eigendlich ganz einfach.
Am besten wäre hier vermutlich die TriStateCheckBox. Auf Node_Level 2 habe ich einen Eingabemaske hinterlegt. In dieser Oberfläche kann man ein Datum einstellen. Wenn das eingestellte Datum "älter" als 3 Monate ist, soll der CheckState = false sein. Wir die Bearbeitung dann durch geführt und das Datum aktualisiert, wird der CheckState wieder true. Somit möchte ich im obersten Node_Level die Erforderlichkeit der Bearbeitung anzeigen. Der CheckState darf sich aber nicht durch das Klicken auf die Checkbox verändern, sondern soll abhängig vom Datim sein. Ich habe einen Baum:
Code:
//Keine Bearbeitung erforderlich
[x] Node_0 [x] Node_1 [x] Node_2a [x] Node_2b [x] Node_2c
Code:
//Bearbeitung erforderlich
[#] Node_0 [#] Node_1 [ ] Node_2a [x] Node_2b [ ] Node_2c
Code:
//Bearbeitung erforderlich
[ ] Node_0 [ ] Node_1 [ ] Node_2a [ ] Node_2b [ ] Node_2c |
AW: VirtualTreeView - Checkbox disablen
Ahh alles klar. Das Problem hierbei ist allerdings, dass sobald die CheckBox als TriStateCheckBox gesetzt wird, sich der Tree selbst um den CheckState kümmert. Das kann man meines Wissens nach nicht umgehen und ich würde sagen, dass ich den Tree doch sehr gut kenne (aber ich lasse mich auch gern eines besseren belehren). In diesem Fall könntest du mit einfachen Images in Column 0 arbeiten. Da wäre es dann allerdings erforderlich, dass du in NodeLevel 0 und 1 entsprechend alle Children überprüfst. Und solltest du auf dieser Lösung dein Programm aufbauen, dann würde ich auch nicht mehr die Daten aus dem Tree sondern aus einer eigenen Klasse auslesen und dann entsprechend den State setzen.
|
AW: VirtualTreeView - Checkbox disablen
Die Daten sind in einem Objekt. Allerdings nutzen ich die Icons schon und es wäre daher schade, wenn ich diese anpassen bzw. ändern müsste...
Es kann ja auch eine Normale Checkbox sein. Dann würde das ganze ja so aus sehen...
Code:
//Keine Bearbeitung erforderlich
[x] Node_0 [x] Node_1 [x] Node_2a [x] Node_2b [x] Node_2c
Code:
//Bearbeitung erforderlich
[x] Node_0 [x] Node_1 [ ] Node_2a [x] Node_2b [ ] Node_2c
Code:
//Bearbeitung erforderlich
[ ] Node_0 [ ] Node_1 [ ] Node_2a [ ] Node_2b [ ] Node_2c |
AW: VirtualTreeView - Checkbox disablen
Liste der Anhänge anzeigen (Anzahl: 1)
Hallöle...:P
Was spricht gegen Icons statt der Checkboxen? Schöne Bildchen die den Status deines Objektes (am Node hängend) anzeigen...von mir aus in Ampelfarben. :thumb: Da hast du die Checkbox komplett aus dem Kreuz. |
AW: VirtualTreeView - Checkbox disablen
Zitat:
|
AW: VirtualTreeView - Checkbox disablen
Zitat:
|
AW: VirtualTreeView - Checkbox disablen
Ne, so is auch nicht. Ich könnte die Icons schon umbauen. Fand es mur mit den Checkboxen ganz amüsant. Ich werde mal ein wenig basteln.
Danke schon mal... Schönen Abend noch und Gruß Jens |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:23 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