AGB  ·  Datenschutz  ·  Impressum  







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

FileOpenDialog

Ein Thema von stefanmichel · begonnen am 9. Dez 2008 · letzter Beitrag vom 15. Dez 2008
Antwort Antwort
stefanmichel

Registriert seit: 18. Jun 2008
10 Beiträge
 
#1

FileOpenDialog

  Alt 9. Dez 2008, 17:22
Hallo,

habe hier schon gefunden, wie man den FileOpenDialog in der Detailansicht öffnet mit

 SendMessage(H, WM_COMMAND, $702C, 0); Was muß ich noch angeben, damit in dem Dialogfeld die Dateien nach Änderungsdatum sortiert und mit der letzten Änderung ganz oben angezeigt werden (also dieselbe Wirkung, wie mit zweimal auf "geändert am" klicken) ?

Stefan
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: FileOpenDialog

  Alt 14. Dez 2008, 19:21
Hallo

Sortieren kannst du mit ListView_SortItems().

Bei mir geht's so (Win XP):

Delphi-Quellcode:
uses
  CommCtrl;

function SortFunc(Item1, Item2, Column: LPARAM):integer stdCall;
begin
  Result := 1; // -1 für absteigende Sortierung
end;

procedure TForm1.OpenDialog1FolderChange(Sender: TObject);
const
  FCIDM_SHVIEW_LARGEICON = $7029;
  FCIDM_SHVIEW_SMALLICON = $702A;
  FCIDM_SHVIEW_LIST = $702B;
  FCIDM_SHVIEW_REPORT = $702C;
  FCIDM_SHVIEW_THUMBNAIL = $702D;
  FCIDM_SHVIEW_TILE = $702E;
var
  NewStyle: DWORD;
  hCommonDialog, hParentWindow, hFileListView : HWND;
begin
  newStyle := FCIDM_SHVIEW_REPORT;

  hCommonDialog := (Sender as TCommonDialog).Handle;
  hParentWindow := FindWindowEx(GetParent(hCommonDialog),0, 'SHELLDLL_DefView',nil);
  if hParentWindow <> 0 then
  begin
    hFileListView := FindWindowEx(hParentWindow, 0, 'SysListView32', nil);
    if hFileListView <> 0 then
    begin
      SendMessage(hParentWindow, WM_COMMAND, NewStyle, 0);
      ListView_SortItems(hFileListView, SortFunc, 0);
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  OpenDialog1.Execute;
end;
Thomas
  Mit Zitat antworten Zitat
stefanmichel

Registriert seit: 18. Jun 2008
10 Beiträge
 
#3

Re: FileOpenDialog

  Alt 15. Dez 2008, 10:22
Danke soweit,

jetzt erfolgt die Sortierung wie gewünscht absteigend, allerdings nach "Name" - welcher Parameter steuert die Sortierung nach "geändert am" ?

Stefan
  Mit Zitat antworten Zitat
ryLIX

Registriert seit: 16. Nov 2008
Ort: Westoverledingen
264 Beiträge
 
RAD-Studio 2009 Pro
 
#4

Re: FileOpenDialog

  Alt 15. Dez 2008, 11:26
Zitat von stefanmichel:
Danke soweit,

jetzt erfolgt die Sortierung wie gewünscht absteigend, allerdings nach "Name" - welcher Parameter steuert die Sortierung nach "geändert am" ?

Stefan
Dafür musst du wissen welche ItemID Änderungsdatum hat.
Also musst du dir mit
Code:
    int ListView_GetItemCount(

        HWND hwnd
    );
ListView_GetItemCount

Die Anzahl der Items holen.

Dann musst du halt in einer Schleife den jeweilligen Text des Items holen und checken ob es Änderungsdatum bzw Datum ist.

Wenn du Datum gefunden hast hast du auch die ItemID.

Diese musst du dann an SortFunc() übergeben als Item1.

So habe ich das ganze nun vertanden...

Macros von ListView falls du noch mehr Eigentschaften verändern möchtest.

Edit:
Versuch mal
Delphi-Quellcode:
function SortFunc(Item4, Item1, Column: LPARAM):integer stdCall;
begin
  Result := 1; // -1 für absteigende Sortierung
end;
Markus
Hamburflys, Scrubble-Fubble-Puff-Shake, Muffin-Purper-Gurk?
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#5

Re: FileOpenDialog

  Alt 15. Dez 2008, 17:06
Zitat von stefanmichel:
jetzt erfolgt die Sortierung wie gewünscht absteigend, allerdings nach "Name" - welcher Parameter steuert die Sortierung nach "geändert am" ?

Auf dieser Seite, ganz unten, findest du weitere Informationen (in C)
Thomas
  Mit Zitat antworten Zitat
ryLIX

Registriert seit: 16. Nov 2008
Ort: Westoverledingen
264 Beiträge
 
RAD-Studio 2009 Pro
 
#6

Re: FileOpenDialog

  Alt 15. Dez 2008, 17:22
Zitat von toms:
Zitat von stefanmichel:
jetzt erfolgt die Sortierung wie gewünscht absteigend, allerdings nach "Name" - welcher Parameter steuert die Sortierung nach "geändert am" ?

Auf dieser Seite, ganz unten, findest du weitere Informationen (in C)
Astrein da is die Funktion mal sauber Dokumentiert.
Warum findet man sowas nicht bei MS?
Oder such ich bei sowas an der falschen Stelle?

Eine Frage hätte ich noch dazu.
Item1 ist also das primäre Sortierungsargument Bsp: Änderungsdatum
Item2 ist dann das sekundäre Argument welches zum greift wenn es von Item1 mehrere mit dem gleichen Wert gibt.

Hab ich das so richtig Verstanden?
Markus
Hamburflys, Scrubble-Fubble-Puff-Shake, Muffin-Purper-Gurk?
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#7

Re: FileOpenDialog

  Alt 15. Dez 2008, 17:32
Item1, Item2 sind nur die zu vergleichenden Items, welche der Callback Funktion übergeben werden.
Auf die Subitems der einzelnen Items muss du dann wie im verlinkten Beispiel zugreifen.

Code:
lvitem1.iSubItem=1; // 0=filename 1=size 2=typename 3=datetime
Thomas
  Mit Zitat antworten Zitat
Antwort Antwort


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 19:15 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