Einzelnen Beitrag anzeigen

Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 

Re: DplKLick auf TShellListView nur intern verarbeiten

  Alt 19. Aug 2005, 16:44
Du kannst die ShellControls in die Tonne kloppen, die sind orginal (= nicht abgeleitet) unbrauchbar.

Lösung:
Delphi-Quellcode:
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.
KeepColumnSize hat aber noch keine Funktion, und in der DblClick-Methode kannst du dich nicht auf die Property AutoNavigate verlassen
  Mit Zitat antworten Zitat