![]() |
FileOpenDialog
Hallo,
habe hier schon gefunden, wie man den FileOpenDialog in der Detailansicht öffnet mit
Delphi-Quellcode:
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) ?
SendMessage(H, WM_COMMAND, $702C, 0);
Stefan |
Re: FileOpenDialog
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; |
Re: FileOpenDialog
Danke soweit,
jetzt erfolgt die Sortierung wie gewünscht absteigend, allerdings nach "Name" - welcher Parameter steuert die Sortierung nach "geändert am" ? Stefan |
Re: FileOpenDialog
Zitat:
Also musst du dir mit
Code:
int ListView_GetItemCount(
HWND hwnd ); ![]() 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... ![]() Edit: Versuch mal
Delphi-Quellcode:
;)
function SortFunc(Item4, Item1, Column: LPARAM):integer stdCall;
begin Result := 1; // -1 für absteigende Sortierung end; |
Re: FileOpenDialog
Zitat:
Auf ![]() |
Re: FileOpenDialog
Zitat:
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? |
Re: FileOpenDialog
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
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:50 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