AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

In ShellListView Navigieren (Ordner öffnen)

Ein Thema von jfheins · begonnen am 9. Mai 2005 · letzter Beitrag vom 14. Jan 2011
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von jfheins
jfheins

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

In ShellListView Navigieren (Ordner öffnen)

  Alt 9. Mai 2005, 19:25
Ich habe mich jetzt schon durch diverse Suchmaschienen durchgewühlt, werde aber nicht fündig.

In der Standardeinstellung offnet die ShellListView Ordner und Dateien, wenn man doppelt draufklickt.

Ich möchte aber, dass nur Ordner geöffnet werden, bei Dateien möchte ich selber was machen ...

Wenn ich jetzt aber Autonavigate auf True stelle, dann öffnet der nach OnDblKlick halt auch Dateien.
Wenn ich's auf False stelle wird die Datei zwar nicht geöffnet, aber die Ordner auch nicht.
Bei den dateien will ich ja selber was machen, aber die ordner sollen normal geöffnet werden,

ich kann aber bei bestem Willen nicht herausfinden, wie man mit der ShellListView in einen bestimmten Ordner navigiert !!!

Den Ordnernamen kriegen .. kein Problem ... den ausgewählten Ordner ... geht auch ... aber Ordner öffnen

Es geht einfach nicht ...

P.S. Andere Kompovorschläge willkommen ...
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: In ShellListView Navigieren (Ordner öffnen)

  Alt 9. Mai 2005, 21:35
Moin Julius,

Zitat von jfheins:
Wenn ich jetzt aber Autonavigate auf True stelle, dann öffnet der nach OnDblKlick halt auch Dateien.


Bei mir nicht.

Ich habe D7 Pro gestartet, einen ShellListView auf das Formular gelegt, und das Programm gestartet.
Dateien werden auf Doppelclick nicht geöffnet.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

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

Re: In ShellListView Navigieren (Ordner öffnen)

  Alt 9. Mai 2005, 22:57
Naja, kommt auf die datei an.

Exedateien und Verknüpfungen werden ausgefürhrt,
Audio und Video wird abgspielt,
Zip-Archieve werden geöffnet ...

Naja, ist aber auch logisch ... Auszug aus TShellListView:
Delphi-Quellcode:
rocedure TCustomShellListView.DblClick;
begin
  if FAutoNavigate and (Selected <> nil) then
    with Folders[Selected.Index] do
      if IsFolder then
        SetPathFromID(AbsoluteID) // Das will ich, ist aber private .....
      else
        ShellExecute(Handle, nil, PChar(PathName), nil,
          PChar(ExtractFilePath(PathName)), 0); // Das will ich nicht .....
  inherited DblClick;
end;
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: In ShellListView Navigieren (Ordner öffnen)

  Alt 9. Mai 2005, 23:24
Moin Julius,

also bei mir steht das unter protected, nicht unter private.

Viel interessanter finde ich aber das Verhalten bei Doppelclick.
Der letzte Parameter ist 0, also SW_HIDE.

Es wird also das Programm gestartet, aber nicht angezeigt.
Ich hatte im Taskmanager jetzt eine ganze Reihe von Notepads, die ich dann aber real nicht sehen konnte

ggf. kannst Du Dir ja auch mal TurboPower ShellShock (sourceforge.net) anschauen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

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

Re: In ShellListView Navigieren (Ordner öffnen)

  Alt 10. Mai 2005, 07:18
Naja, dann halt unter protected.

Ich könnte mir zur Not ja auch eine neue Kompo von TCustomShellListView ableiten, und die OnDblClick-Funktion selber implementieren ... Ginge das
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: In ShellListView Navigieren (Ordner öffnen)

  Alt 10. Mai 2005, 10:01
Moin Julius,

dass sollte gehen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

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

Re: In ShellListView Navigieren (Ordner öffnen)

  Alt 11. Mai 2005, 16:56
Es ging ...

Anbei meine Weiterentwicklung von der TShellListView, die nun eine Eigenschaft AutoExecuteFiles hat,
mit der man steuern kann, ob Dateien geöffnet werden sollen, oder nicht.

Wenn AutoExecuteFiles = True, dann wird alles geöffnet, wie in der normalen ShellListView

Wenn AutoExecuteFiles = False, dann werden nur Ordner geöffnet, bei dateien passiert nichts.

Dieser Vorteil musste (dank Borland) allerdings erkauft werden:

In dem Event OnDblClick ist kein Verlass auf die Eigenschaft AutoNavigate der ShellListView1 !

Denn mit Autonavigate wird gesteuert, ob Dateien geöffnet werden.,
diese Eigenschaft wird einfach kurz auf False gestellt, wenn eine Datei angeklickt wurde,
sie aber nicht geöffnet werden soll.

Ansonsten: Viel Spaß damit

Falls unser [user=Robert_G]OOP-Nazi-Spezi[/user] oder jemand anderes eine bessere Lösung finden sollte, immer her damit ...
Angehängte Dateien
Dateityp: pas shelllistview1_155.pas (992 Bytes, 20x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

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

Re: In ShellListView Navigieren (Ordner öffnen)

  Alt 14. Jun 2005, 20:24
Ich sehe gerade, dass dort ein Bug ist. hier der richtige Quellcode:
Delphi-Quellcode:
unit ShellListView1;

interface

uses
  SysUtils, Classes, Controls, ComCtrls, ShellCtrls, ShellAPI;

type
  TShellListView1 = class(TShellListView)
  private
    FAutoExecuteFiles: Boolean;
  protected
    procedure DblClick; override;
  public
    constructor Create(AOwner: TComponent); override;
  published
    property AutoExecuteFiles: Boolean read FAutoExecuteFiles write FAutoExecuteFiles;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Eigene Komponenten', [TShellListView1]);
end;

{ TShellListView1 }

constructor TShellListView1.Create(AOwner: TComponent);
begin
  inherited;

  FAutoExecuteFiles := True;
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.
  Mit Zitat antworten Zitat
Newcomer91

Registriert seit: 9. Mär 2010
66 Beiträge
 
Delphi 2010 Professional
 
#9

AW: In ShellListView Navigieren (Ordner öffnen)

  Alt 14. Jan 2011, 11:17
Hey, ist dass noch aktuell? Habe das selbe problem dass die Prozesse alle Hide sind (0) wenn ich sie Doppelklicke.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

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

AW: In ShellListView Navigieren (Ordner öffnen)

  Alt 14. Jan 2011, 11:22
Die Lösung habe ich doch damals gepostet?

ShellListView ableiten, verändern, benutzen.

Mit der Orginal-Kompo ist es leider so, wie Borland es programmiert hat. Ich konnte damals keine Shell* Komponente benutzen ohne sie abzuleiten und das Verhalten anzupassen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 21:52 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