Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi VirtualTreeView - Bei Klick nichts selektieren (https://www.delphipraxis.net/113323-virtualtreeview-bei-klick-nichts-selektieren.html)

siles 6. Mai 2008 06:26


VirtualTreeView - Bei Klick nichts selektieren
 
Hallo
Ich nutze eine Dynamic TreeView die auf dem VirtualTreeView basiert.
Darin werden verschiedene Nodes aus der Datenbank angezeigt / bzw können modifiziert werden.

Das Problem ist, ich kann nur Nodes anklicken. Wenn ich neben einen Node klicke, also in den leeren Bereich, möchte ich auf der Rootebene landen, um dort neue Nodes zu erzeugen.

Gibt es dafür eine Eigenschaft oder muss ich das über ein Ereigniss machen?

toms_ 6. Mai 2008 06:33

Re: VirtualTreeView - Bei Klick nichts selektieren
 
Hallo, rufe GetHitTestInfoAt auf und werte THitInfo.HintPositions aus.

Delphi-Quellcode:
 // These flags are returned by the hit test method.
  THitPosition = (
    hiAbove,         // above the client area (if relative) or the absolute tree area
    hiBelow,         // below the client area (if relative) or the absolute tree area
    hiNowhere,       // no node is involved (possible only if the tree is not as tall as the client area)
    hiOnItem,        // on the bitmaps/buttons or label associated with an item
    hiOnItemButton,  // on the button associated with an item
    hiOnItemCheckbox, // on the checkbox if enabled
    hiOnItemIndent,  // in the indentation area in front of a node
    hiOnItemLabel,   // on the normal text area associated with an item
    hiOnItemLeft,    // in the area to the left of a node's text area (e.g. when right aligned or centered)
    hiOnItemRight,   // in the area to the right of a node's text area (e.g. if left aligned or centered)
    hiOnNormalIcon,  // on the "normal" image
    hiOnStateIcon,   // on the state image
    hiToLeft,        // to the left of the client area (if relative) or the absolute tree area
    hiToRight        // to the right of the client area (if relative) or the absolute tree area
  );

siles 6. Mai 2008 07:01

Re: VirtualTreeView - Bei Klick nichts selektieren
 
Hi Toms.
Danke schonmal für deine Antwort.

Delphi-Quellcode:
procedure TfrmMain.treeCategoriesClick(Sender: TObject);
var
HitInfo :THitInfo;
iMousePosX, iMousePosY: Integer;
begin
iMousePosX := Mouse.CursorPos.X;
iMousePosY := Mouse.CursorPos.Y;
treeCategories.GetHitTestInfoAt(iMousePosX,iMousePosY, false, HitInfo);

if HitInfo.HitPositions = [hiOnItem] then begin
  ShowMessage('!!!');
end;
end;
Erkennst du gerade auf Anhieb was ich falsch mache?

Nuclear-Ping 6. Mai 2008 07:17

Re: VirtualTreeView - Bei Klick nichts selektieren
 
Ist das ein Ratespiel? "Rate mal was ich falsch mache"? Warum sagst du nicht, was für ein Fehler kommt?

Aber ich rate mal ...
Delphi-Quellcode:
if hiOnItem in HitInfo.HitPositions then begin
... so vielleicht?

siles 6. Mai 2008 07:22

Re: VirtualTreeView - Bei Klick nichts selektieren
 
Zitat:

Zitat von Nuclear-Ping
Ist das ein Ratespiel? "Rate mal was ich falsch mache"? Warum sagst du nicht, was für ein Fehler kommt?

Aber ich rate mal ...
Delphi-Quellcode:
if hiOnItem in HitInfo.HitPositions then begin
... so vielleicht?

Hi.
Sorry, es passierte gar nichts.

Es lag aber daran, dass ich das Ereignis "onmousedown" mit den Koordinaten die da übergeben werden benutzen muss.
Bei OnClick geht das irgendwie nicht.

Danke euch.

toms 6. Mai 2008 11:20

Re: VirtualTreeView - Bei Klick nichts selektieren
 
Zitat:

Zitat von siles
Bei OnClick geht das irgendwie nicht.

Danke euch.

Im OnClick:

Delphi-Quellcode:
GetHitTestInfoAt(iMousePosX,iMousePosY, ***TRUE***, HitInfo);


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:02 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