![]() |
DplKLick auf TShellListView nur intern verarbeiten
hi,
habe auf meinem Formular ein TShellListView. Habe dort ein on DplClick ereignis erstellt, indem die Datei die doppelt angeglickt wurde im Programm geöffnet wird... (funzt auch alles prima) nur mein problem ist, dass die datei zusätzlich von dem zugehörigen Windows-Standardprogramm noch geöffnet wird....wie kann ich das verhindern? also bei doppelklick soll windows nicht reagieren? das windows-explorer-popupmenu beim rechtsklick sollte wenn möglich aber bestehen bleiben... kennt da jemand ne lösung? schonmal Danke MfG |
Re: DplKLick auf TShellListView nur intern verarbeiten
Du kannst die ShellControls in die Tonne kloppen, die sind orginal (= nicht abgeleitet) unbrauchbar.
Lösung:
Delphi-Quellcode:
KeepColumnSize hat aber noch keine Funktion, und in der DblClick-Methode kannst du dich nicht auf die Property AutoNavigate verlassen ;)
unit ShellListView1;
interface uses SysUtils, Classes, Controls, ComCtrls, ShellCtrls, ShellAPI; type TShellListView1 = class(TShellListView) private FAutoExecuteFiles: Boolean; FKeepColumnSize: Boolean; protected procedure DblClick; override; public constructor Create(AOwner: TComponent); override; published property AutoExecuteFiles: Boolean read FAutoExecuteFiles write FAutoExecuteFiles; property KeepColumnSize: Boolean read FKeepColumnSize write FKeepColumnSize; end; procedure Register; implementation procedure Register; begin RegisterComponents('Eigene Komponenten', [TShellListView1]); end; { TShellListView1 } constructor TShellListView1.Create(AOwner: TComponent); begin inherited; FAutoExecuteFiles := True; FKeepColumnSize := False; end; procedure TShellListView1.DblClick; var OldAutoNavigate: Boolean; begin OldAutoNavigate := AutoNavigate; if Selected <> nil then AutoNavigate := AutoNavigate and (Folders[Selected.Index].IsFolder or FAutoExecuteFiles); inherited; AutoNavigate := OldAutoNavigate; end; end. |
Re: DplKLick auf TShellListView nur intern verarbeiten
okay danke. werde das mal probieren
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03: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