AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi VirtualStringTree (VST): bei Bildklick Text fokussieren
Thema durchsuchen
Ansicht
Themen-Optionen

VirtualStringTree (VST): bei Bildklick Text fokussieren

Ein Thema von larsk81 · begonnen am 9. Jun 2009 · letzter Beitrag vom 8. Jul 2009
Antwort Antwort
larsk81

Registriert seit: 2. Jun 2009
15 Beiträge
 
Delphi 2009 Professional
 
#1

VirtualStringTree (VST): bei Bildklick Text fokussieren

  Alt 9. Jun 2009, 11:59
Ich nutze einen VST als Listview zur Anzeige diverser Daten.

Ich erkenne per OnClick wenn jemand auf den Text eines Nodes in irgeneiner Spalte klickt.

Der jeweilige Text wird ja durch den Klick fokussiert, sodass ich

Delphi-Quellcode:
Node:=VST.FocusedNode;
Column:=VST.FocusedColumn;
nutzen kann, um herauszufinden wo genau der User geklickt hat.

Mein Problem: Die Nodes enthalten Icons, die links neben dem jeweiligen Text stehen. Wenn jemand statt auf den Text auf das Icon klickt wird zwar der OnClick abgefeuert, jedoch wird in diesem Fall der Eintrag nicht fokussiert, sodass meine Methode nicht geht.

Weiß jemand eine Möglichkeit bei Klick auf ein Icon den Text daneben zu fokussieren, oder eine andere Lösung? Danke
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#2

Re: VirtualStringTree (VST): bei Bildklick Text fokussieren

  Alt 9. Jun 2009, 12:16
Überschreibe OnMouseDown, mach dann einen HitTest. Wenn der HitTest zurückgibt, dass aufs Icon geklickt wurde, dann wird das Node dazu markiert. So habe ich das seinerzeit gemacht.
Quelltext gibt's nicht, weil ich noch nicht zuhause bin, aber sollte recht einfach sein.
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#3

Re: VirtualStringTree (VST): bei Bildklick Text fokussieren

  Alt 9. Jun 2009, 12:16
hmmm ... also mein VST selected auch wenn ich auf das Bild klicke.
Entweder du hast ein alte Version oder eine Option gesetzt, die das verhindert.
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#4

Re: VirtualStringTree (VST): bei Bildklick Text fokussieren

  Alt 9. Jun 2009, 12:23
chaosben, wann setzt du das Bild? Ich vermute fast, dass larks81 (so wie ich) die StateImages benutzt und du die richtigen Images. Eine Option habe ich nicht gefunden, das Problem stellte sich mir nämlich gestern auch... die "normalen" Images werden bei mir nicht angezeigt, aber habe auch nicht wirklich groß rumprobiert..
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
larsk81

Registriert seit: 2. Jun 2009
15 Beiträge
 
Delphi 2009 Professional
 
#5

Re: VirtualStringTree (VST): bei Bildklick Text fokussieren

  Alt 9. Jun 2009, 12:46
Zitat von wicht:
dass larks81 (so wie ich) die StateImages benutzt und du die richtigen Images.
Ich nutze nicht die StateImages - nutze die "richtigen" Images.
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#6

Re: VirtualStringTree (VST): bei Bildklick Text fokussieren

  Alt 9. Jun 2009, 20:03
Ich setze die Images-Eigenschaft und bediene das OnGetImageIndex-Event.
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#7

Re: VirtualStringTree (VST): bei Bildklick Text fokussieren

  Alt 9. Jun 2009, 20:55
Passt. Images-Eigenschaft setzen, dann das Event nutzen.

Delphi-Quellcode:
constructor TMFileView.Create(AOwner: TComponent);
begin
  inherited;
  Images := AppGlobals.IconManager.Images;

  Header.Options := [hoColumnResize, hoDrag, hoShowSortGlyphs, hoVisible];
  TreeOptions.SelectionOptions := [toMultiSelect, toRightClickSelect];
  TreeOptions.AutoOptions := [toAutoScrollOnExpand];
  TreeOptions.PaintOptions := [toThemeAware, toUseExplorerTheme];
end;

function TMFileView.DoGetImageIndex(Node: PVirtualNode; Kind: TVTImageKind;
  Column: TColumnIndex; var Ghosted: Boolean;
  var Index: Integer): TCustomImageList;
var
  NodeData: PFileNodeData;
begin
  inherited;
  Result := inherited;
  if (Kind = ikNormal) and (Column = 0) then
  begin
    NodeData := GetNodeData(Node);
    Index := AppGlobals.IconManager.Icon[ExtractFileExt(NodeData.FileObject.Filename)];
    Result := AppGlobals.IconManager.Images;
  end;
end;
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
larsk81

Registriert seit: 2. Jun 2009
15 Beiträge
 
Delphi 2009 Professional
 
#8

Re: VirtualStringTree (VST): bei Bildklick Text fokussieren

  Alt 9. Jun 2009, 21:24
Zitat von wicht:
TreeOptions.SelectionOptions := [toMultiSelect, toRightClickSelect];
also wenn ich das nachmache

vst.TreeOptions.SelectionOptions := [toMultiSelect, toRightClickSelect]; kann ich nicht mal mehr einen Eintrag außerhalb column 0 selektieren (er selektiert dann, egal ob man auf Icon oder Text klickt, den Text aus Column 0).

Habt Ihr überhaupt mehr als eine Spalte? Oder geht es bei euch auch bei Klick auf ein Image z.B. in Column 1?
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#9

Re: VirtualStringTree (VST): bei Bildklick Text fokussieren

  Alt 9. Jun 2009, 22:30
Ich habe immer mindestens eine Spalte. Jedenfalls da, wo das Beispiel her kommt.
Wenn ich von TVirtualStringTree ableite, eine Spalte habe (sorry) und den Rest so mache wie im Beispiel funzt es hier (mit der neusten Version).
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
larsk81

Registriert seit: 2. Jun 2009
15 Beiträge
 
Delphi 2009 Professional
 
#10

Re: VirtualStringTree (VST): bei Bildklick Text fokussieren

  Alt 8. Jul 2009, 14:19
Falls es jemanden interessiert...

habs so gelöst:

ursprünglich wollte ich ja per

Column:=VST.FocusedColumn; an den Index der jeweiligen Spalte kommen, was nur geht wenn der Text des Nodes fokussiert ist.
Jetzt komme ich so an den Index:

Delphi-Quellcode:
procedure TForm1.VSTClick(Sender: TObject);
var
HitInfo :THitInfo;
Pt: TPoint;

begin
Pt := VST.ScreenToClient(Mouse.CursorPos);
VST.GetHitTestInfoAt(Pt.X, Pt.Y, true, HitInfo);
Column := HitInfo.HitColumn;
Danke für die Hilfe!
  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 22:47 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