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
Seite 1 von 2  1 2      
TurboMagic

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

VirtualTreeview NodeText geht verloren

  Alt 30. Nov 2024, 21: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.708 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: VirtualTreeview NodeText geht verloren

  Alt 30. Nov 2024, 23: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.000 Beiträge
 
Delphi 12 Athens
 
#3

AW: VirtualTreeview NodeText geht verloren

  Alt 1. Dez 2024, 11: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.000 Beiträge
 
Delphi 12 Athens
 
#4

AW: VirtualTreeview NodeText geht verloren

  Alt 1. Dez 2024, 11: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
Online

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

AW: VirtualTreeview NodeText geht verloren

  Alt 1. Dez 2024, 12: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?
The angels have the phone box.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.708 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: VirtualTreeview NodeText geht verloren

  Alt 1. Dez 2024, 12: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.214 Beiträge
 
Delphi 12 Athens
 
#7

AW: VirtualTreeview NodeText geht verloren

  Alt 1. Dez 2024, 12: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.
$2B or not $2B
  Mit Zitat antworten Zitat
TurboMagic

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

AW: VirtualTreeview NodeText geht verloren

  Alt 1. Dez 2024, 16:49
Hallo,

Bug im VST scheidet für mich inzwischen auch eher aus.
Ich habe ein einfaches Testprogramm erstellt und versucht das nachzustellen.
In dem einfachen Testprogramm funktioniert es wie es soll, selbst wenn der VST
(was aber eigentlich keinen Unterschied machen sollte) auf einem modalen 2. Fenster
sitzt.

Einzige Unterschiede zwischen Testprogramm und meinem eigentlichen Programm:
  • Testprogramm nutzt noch keine Icons für den VST
  • Testprogramm hat nur eine Knotenebene, in meinem eigentlichen Programm ist der zum Testen benutzte Knoten einer der 2. Ebene

Was mache ich in dem anderen Programm falsch?
Ich habe dort auch mal den CellText des OnGetText Events geloggt und festgestellt,
dass mein modaler Aufruf im OnFocusCHanging das triggert, die geloggten Werte sind aber
alle richtig, auch der von dem bisher fokussierten Knoten der dann nicht mehr angezeigt wird.
Grüße
TurboMagic
  Mit Zitat antworten Zitat
TurboMagic

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

AW: VirtualTreeview NodeText geht verloren

  Alt 1. Dez 2024, 16:53
Interessante neue Erkenntnis:
Das Zeichenproblem tritt nicht auf, wenn ich einen anderen Stil als "Windows" (der ja quasi ein nicht Stil ist) benutze!
Grüße
TurboMagic
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.708 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: VirtualTreeview NodeText geht verloren

  Alt 1. Dez 2024, 17:16
1. Liefere in OnGetText einen festen Wert zurück --> ausschließen, dass es an den Daten liegt
2. Wenn es auch dann noch passiert, solltest du ja alle anderen Events der Reihe nach entfernen können.

Und entweder findest du dabei das Problem oder es bleibt ein so weit entkernter Rumpf übrig, dass du ihn hier posten kannst.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 11:03 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 by Thomas Breitkreuz