AGB  ·  Datenschutz  ·  Impressum  







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

Treeview onclick

Ein Thema von Chrissi91 · begonnen am 1. Dez 2005 · letzter Beitrag vom 1. Dez 2005
 
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.361 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Treeview onclick

  Alt 1. Dez 2005, 15:02
ich hab ein kleines Beispiel mal angehangen, hoffe, es funktioniert....
dennoch der Sourcecode:
Delphi-Quellcode:
unit FRM_Main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, ActnList;

type
  TForm1 = class(TForm)
    tvNav: TTreeView;
    ActionList1: TActionList;
    ActHilfe: TAction;
    procedure FormCreate(Sender: TObject);
    procedure ActHilfeExecute(Sender: TObject);
    procedure tvNavMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    FTreeViewLocked: Boolean;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
Var
  ANode : TTreeNode;
begin
  ANode := tvNav.Items.AddChild(nil, 'Erster');
  tvNav.Items.AddChild(ANode, 'Erster U1');
  tvNav.Items.AddChild(ANode, 'Erster U2');
  tvNav.Items.AddChild(ANode, 'Erster U3');
  tvNav.Items.AddChild(nil, 'Zweiter');
  with tvNav.Items.AddChild(nil, 'Hilfe...') do
    Data := ActHilfe;
end;

procedure TForm1.ActHilfeExecute(Sender: TObject);
begin
  ShowMessage('Hilfe');
end;

procedure TForm1.tvNavMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
Var
  ANode: TTreeNode;
  R: TRect;
begin
  // Navigator mit Click
  // Doppelte Ausführung verhindern...
  // FTreeViewLocked is Private Field der Unit!
  if FTreeViewLocked then
    Exit;
  FTreeViewLocked := True;
  try
    with TTreeView(Sender) do
    begin
      ANode := GetNodeAt(x, y);
      if Assigned(ANode) and ANode.Selected and Assigned(ANode.Data) then
      begin
        R := ANode.DisplayRect(True);
        // den Klick links oder rechts neben den Text verhindern
        if (x >= R.Left - 16) and (x <= r.Right) then
          if TObject(ANode.Data) is TAction then
            TAction(ANode.Data).Execute;
      end;
    end;
  finally
    Application.ProcessMessages;
    FTreeViewLocked := False;
  end;
end;

end.
Cu, Frank
Angehängte Dateien
Dateityp: zip tv_876.zip (2,1 KB, 18x aufgerufen)
Frank Reim
  Mit Zitat antworten Zitat
 


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 10:22 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