![]() |
TShellTreeView: auf Enter-Taste reagieren...
Hallo zusammen,
ich habe einiges probiert, aber mir will es nicht gelingen... Ich möchte im ShellTreeView beim Betätigen der Entertaste etwas auslösen. Den ShellTreeView erzeuge ich zur Laufzeit auf einem Panel. Nur wie kann ich sowas wie ein OnKeyDown implementieren? So habe ich ShellTreeView eingebunden:
Delphi-Quellcode:
...
private { Private-Deklarationen } My_ShellTreeViewData: TShellTreeView; ... procedure TForm1.FormCreate(Sender: TObject); begin My_ShellTreeViewData := TShellTreeView.Create(Self); with My_ShellTreeViewData do begin Parent := panelShellTreeViewData; Align := alClient end; end; procedure TForm1.????? begin if (Key = $0D) then //oder VK_Return begin ShowMessage('Enter-Taste erfolgreich'); end; Vielen Dank schon mal vorab! |
Re: TShellTreeView: auf Enter-Taste reagieren...
Delphi-Quellcode:
...
private { Private-Deklarationen } My_ShellTreeViewData: TShellTreeView; procedure ShellKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); // <------------------ ... procedure TForm1.FormCreate(Sender: TObject); begin My_ShellTreeViewData := TShellTreeView.Create(Self); My_shellTreeviewdata.OnKeyDown := ShellKeyDown; // <------------------ with My_ShellTreeViewData do begin Parent := panelShellTreeViewData; Align := alClient end; end; procedure TForm1.ShellKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Key = $0D) then ... Ich hoffe das hilft dir. |
Re: TShellTreeView: auf Enter-Taste reagieren...
Hallo J3rk,
danke für deine Mühe. Leider hilft das auch nicht, genauso hatte ich es auch schon probiert (allzumal es die Eigenschaft My_ShellTreeViewData.OnKeyDown auch gibt) :gruebel: . Es scheint aber so, dass die ShellTreeView eine eigene Tastatur-Behandlung hat? Egal welche Taste ich verwende, man hört dann jeweils den Windows "Standard Warnsignal" -Ton. Die Showmessage wird aber nie aufgerufen... Das Ganze scheint dann doch nicht ganz so einfach zu sein. |
Re: TShellTreeView: auf Enter-Taste reagieren...
Ich habe jetzt gerade weder D2007 noch die ShellTreeview zur Verfügung, aber ein KeyDown-Event könnte man doch nachrüsten z.B. über einen class helper, oder irre ich mich?
|
Re: TShellTreeView: auf Enter-Taste reagieren...
Hab grad mal mit D2006 getestet da läuft J3rk´s Code
Delphi-Quellcode:
unit Unit7;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, ShellCtrls, ExtCtrls; type TForm7 = class(TForm) panelShellTreeViewData: TPanel; procedure FormCreate(Sender: TObject); procedure ShellTreeViewKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form7: TForm7; My_ShellTreeViewData: TShellTreeView; implementation {$R *.dfm} procedure TForm7.FormCreate(Sender: TObject); begin My_ShellTreeViewData := TShellTreeView.Create(Self); My_shellTreeviewdata.OnKeyDown := ShellTreeViewKeyDown; with My_ShellTreeViewData do begin Parent := panelShellTreeViewData; Align := alClient end; end; procedure TForm7.ShellTreeViewKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Key = $0D) then ShowMessage('Enter-Taste erfolgreich'); end; end. |
Re: TShellTreeView: auf Enter-Taste reagieren...
Hallo,
Delphi-Quellcode:
Das funktioniert bei mir, allerdings wird ShellTreeView1KeyUp nie angezeigt.
procedure TForm1.ShellTreeView1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin ShowMessage('ShellTreeView1KeyDown' + #13 + IntToStr(Key)); end; procedure TForm1.ShellTreeView1KeyPress(Sender: TObject; var Key: Char); begin ShowMessage('ShellTreeView1KeyPress' + #13 + '>' + Key + '<'); end; procedure TForm1.ShellTreeView1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin ShowMessage('ShellTreeView1KeyUp' + #13 + IntToStr(Key)); end; procedure TForm1.FormCreate(Sender: TObject); begin My_ShellTreeViewData := TShellTreeView.Create(Self); with My_ShellTreeViewData do begin Parent := panelShellTreeViewData; Align := alClient; end; My_ShellTreeViewData.OnKeyDown := ShellTreeView1KeyDown; My_ShellTreeViewData.OnKeyPress := ShellTreeView1KeyPress; My_ShellTreeViewData.OnKeyUp := ShellTreeView1KeyUp; end; Delphi 7 Prof. unter XP-Prof. |
Re: TShellTreeView: auf Enter-Taste reagieren...
Moin, Moin.
Seltsam - wir reden doch hier hoffentlich von der gleichen Komponente. Habe das nachgestellt, es funktioniert sowohl direkt auf dem Form als auch auf einem Panel ohne Probleme. Zeige doch mal deinen Code... // edit: Na, noch einer (hab's mit D7 getestet) |
Re: TShellTreeView: auf Enter-Taste reagieren...
Gerade unter Delphi 5 bei einer Treeview nachgesehen: dort gibt es ein OnKeyDown-Event. Ist das bei der Shelltreeview wirklich verborgen?
|
Re: TShellTreeView: auf Enter-Taste reagieren...
Hallo,
Zitat:
KeyPreview des Formulars steht bei mir auf False, allerdings führt die Änderung auf True zu keinem anderen Verhalten. |
Re: TShellTreeView: auf Enter-Taste reagieren...
Hallo zusammen,
die ShellTreeView ist in meinem D2007 im Standard nicht als VCL vorhanden. Daher hatte ich diese Komponeten wie im 1. Thread dargestellt, aufgerufen. Inzwischen habe ich mir die ShellTreeView als VCL eingebunden. Diese Komponente auf ein Panel gelegt und .... taräääääh.... es funktioniert! :gruebel: Vielen Dank für Eure Mühen! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:54 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