AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Virtualtreeview Node.index und Scrollbarproblem
Thema durchsuchen
Ansicht
Themen-Optionen

Virtualtreeview Node.index und Scrollbarproblem

Ein Thema von naridian · begonnen am 19. Mai 2007 · letzter Beitrag vom 19. Mai 2007
Antwort Antwort
naridian

Registriert seit: 12. Jan 2007
56 Beiträge
 
Delphi 2007 Professional
 
#1

Virtualtreeview Node.index und Scrollbarproblem

  Alt 19. Mai 2007, 02:12
Sorry für den zweiten Virtualstringtree Thread von mir innerhalb von 2 Tagen

Ich möchte wenn ein Node angeklickt wird irgendwas machen und dazu wissen welcher Node selected ist. Also habe ich

procedure TMainform.VSTChange(Sender: TBaseVirtualTree; Node: PVirtualNode);
begin
aktiverKnoten := Node.Index;
end;

verwendet. Beim ersten mal Anklicken eines beliebigen Knotens bekomme ich den korrekten Index so wie es gedacht ist. Beim Anklicken eines anderen Knotens danach kommt eine Zugriffsverletzung an genau dieser Stelle. Wenn ich es mir mit dem Debugger anschaue haben dann alle Eigenschaften von Node "Wert nicht verfügbar". Was mach ich da falsch? Multiselect ist aus. Wenn ich den Index nicht abfrage kann ich natürlich rumklicken wie ich will ohne Fehler.

Und noch ne Kleinigkeit: Ich mache mit OnMeasureItem verschiedene Knotenhöhen. Das klappt auch wunderbar, nur der horizontale Scrollbar ist nicht lang genug. Ich kann also nicht zu den unteren Items scrollen. Wenn ich ganz nach unten scrolle macht er den Scrollbar auf einmal ein bisschen länger so dass ich mich nach und nach bis nach unten vorarbeiten kann. Die Knoten sind also alle da, er berechnet nur die Scrollbarlänge nicht richtig. Muss ich das selber machen? Wenn ja was ist die richtige Eigenschaft?

Vielen Dank!

Moritz
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Virtualtreeview Node.index und Scrollbarproblem

  Alt 19. Mai 2007, 08:00
Hai naridian,

verwende doch das Ereigniss OnFocusChanged. Dort wird Dir der Node übergeben der selektiert ist.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Virtualtreeview Node.index und Scrollbarproblem

  Alt 19. Mai 2007, 10:20
Hallo Moritz,

das Ereignis OnChange des VST wird auch ausgelöst, wenn ein Knoten den Fokus verliert; in diesem Fall hat der Übergabeparameter Node den Wert NIL. Bei einem Fokuswechsel erfolgen somit zwei Aufrufe: der erste mit Node=NIL, der zweite mit Node=neuer Knoten.

Wenn du den fokussierten Knoten des VST auslesen möchtest, so geht das über VST.FocusedNode. Den ersten selektierten Knoten erhältst du über VST.GetFirstSelected, die Anzahl selektierter Knoten über VST.SelectedCount.

Voraussetzung für die korrekte Berechnung der Scrollbar-Höhe ist das Setzen von toVariableNodeHeight in VST.TreeOptions.MiscOptions. Aber auch dann wird das Ereignis OnMeasureItem nur für die sichtbaren Knoten ausgelöst. Abhilfe schafft der Aufruf

VST.InvalidateChildren (nil, True) z.B. in der Behandlungsroutine für das Ereignis OnShow des Formulars.

Gruß Hawkeye
  Mit Zitat antworten Zitat
naridian

Registriert seit: 12. Jan 2007
56 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Virtualtreeview Node.index und Scrollbarproblem

  Alt 19. Mai 2007, 15:31
danke ihr seid echt genial!
  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 19:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz