AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

VirtualTreeview NodeText geht verloren

Ein Thema von TurboMagic · begonnen am 30. Nov 2024 · letzter Beitrag vom 1. Dez 2024
Antwort Antwort
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.038 Beiträge
 
Delphi 12 Athens
 
#1

VirtualTreeview NodeText geht verloren

  Alt 30. Nov 2024, 20:28
Hallo,

habe ein Problem mit Virtual Tree View:
In OnFocusChanging will ich mittels modalem Dialog, je nach Knoten,
ein Passwort abfragen, da manche Knoten nicht für alle Anwender zugänglich sein sollen.

Nur: sobald dieses modale Fenster aufgerufen wird, wird für den bisher dargestellten
Knoten der Text nicht mehr angezeigt. Ich weiß aber nicht warum

Versuche mit vst.Invalidate(vst.FocussedNode) und anschließendem vst.Refresh
haben nichts gebracht.

Der Knoten bleibt auch nach Schließen des modalen Dialogs ohne Text. Klicke ich ihn an
oder was anderes im baum wird alles richtig neu gezeichnet.

Woran liegt das alles und wie kann ich das beheben?
Grüße
TurboMagic
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.919 Beiträge
 
Delphi 12 Athens
 
#2

AW: VirtualTreeview NodeText geht verloren

  Alt 30. Nov 2024, 22:50
Was heißt denn "nicht zugänglich"? Der Knoten ist ja offensichtlich sichtbar, sonst könnte man ihn ja nicht anklicken. Geht es rein um das Fokussieren oder um das, was durch das Fokussieren ausgelöst wird, wenn du darauf reagierst?

Grundsätzlich ist es keine gute Idee in dem Event mehr zu machen, als den Wechsel zu erlauben oder nicht. Einen Wechsel des Eingabefokus in dem Event würde ich vermeiden.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.038 Beiträge
 
Delphi 12 Athens
 
#3

AW: VirtualTreeview NodeText geht verloren

  Alt 1. Dez 2024, 10:14
Hallo,

es geht darum, dass der Text des Knotens weg ist und das Auswahlrechteck,
welches dann angezeigt wird, ist auch wesentlich kürzer als der Text der vorher
dort stand.

Ich versuche jetzt mal was mit einem Timer und Status merken zu basteln,
mal schauen was rauskommt...
Grüße
TurboMagic
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.038 Beiträge
 
Delphi 12 Athens
 
#4

AW: VirtualTreeview NodeText geht verloren

  Alt 1. Dez 2024, 10:37
Hallo,

habe jetzt im OnFocusChanging das Allowed auf false gesetzt,
wenn es noch keinen gemerkten Wert von NewNode gibt.
Dann hab' ich mir NewNode gemerkt und einen Timer gestartet.

In den hab' ich diese Passwortabfrage verlagert und wenn das
richtige eingegeben wurde hab' ich das ausgeführt:

Delphi-Quellcode:
if CheckPassword(FNewFocussedNode) then
begin
  vst_Menu.FocusedNode := FNewFocussedNode;

  if Assigned(vst_Menu.FocusedNode) then
    vst_Menu.Selected[vst_Menu.FocusedNode] := true;
     
  FNewFocussedNode := nil;
end;
Das funktioniert allerdings wie bisher auch. Egal wie lange das
Timer Interval ist. Drehe ich es auf 1 Sek. hoch sehe ich auch deutlich,
dass das Verschwinden des Knoten Texts schon auftritt, noch bevor der
Passwort Dialog angezeigt wird!

Noch was ist mir aufgefallen: wird ein falsches Passwort eingegeben,
bleibt der Knoten Text auch nach Wegklicken aller Fehermeldungsdialoge
verschwunden, bis ich einen anderen Knoten anklicke.

Es hilft auch nicht den Knoten zu invalidieren und dann ein Refresh aufzurufen...

Die Grundsätzliche Frage für mich wäre hier, warum der Knotentext überhaupt verschwindet.
Hat da einer schon die "Fokussierter Knoten" Darstellung auf dem Bildschirm gelöscht,
aber noch nicht als normalen Knoten darstellen Funktion aufgerufen?

Ist das evtl. ein Bug im VST?
Bzw. wie bekomme ich den entsprechenden Knoten geziehlt neugezeichnet?
Grüße
TurboMagic
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
902 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: VirtualTreeview NodeText geht verloren

  Alt 1. Dez 2024, 11:09
Ich würde da nicht auf einen Bug im VST tippen, sondern dass dieses Event nicht dafür gedacht ist, was du da vor hast. Denn du möchtest während des Fokuswechsels den Fokus auf ein komplett anderes Control legen - das kann dann natürlich Nebeneffekte haben.

Kannst du das ggf. so umbauen, dass du die Passwort-Abfrage im OnFocusChanged durchführst? Also so, dass der "unerlaubte Knoten" zwar ausgewählt werden kann, aber nur dann sinnvolles Zeug anzeigt (inkl. ggf. Subknoten etc.), nachdem das korrekte Passwort eingegeben wurde?
Being smart will count for nothing if you don't make the world better. You have to use your smarts to count for something, to serve life, not death.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.919 Beiträge
 
Delphi 12 Athens
 
#6

AW: VirtualTreeview NodeText geht verloren

  Alt 1. Dez 2024, 11:13
Darauf zielte meine (unbeantwortete) Frage ab. Eine Möglichkeit wäre ja z.B. auch, einfach wieder den Fokus zurück zu wechseln, wenn das Passwort falsch eingegeben wurde.

Ist das evtl. ein Bug im VST?
Kannst du das in einem Testprogramm nachvollziehen? Ich nämlich nicht.

Statt eines Timers könntest du dir auch einfach mit PostMessage eine Nachricht schicken.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#7

AW: VirtualTreeview NodeText geht verloren

  Alt 1. Dez 2024, 11:37
Und es könnte z.B. auch mitten in einem PaintLock/BeginUpdate hängen, während man das Event dort mit ShowMessage blockiert.

PostMessage, TThread.ForceQueue oder ähnliches, anstatt einem Timer, für ein einmaliges Event.
Ein Therapeut entspricht 1024 Gigapeut.
  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 05:02 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