Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.09.16;
Скачать: CL | DM;

Вниз

Как при открытии TOpenDialog задать формат отображения файлов?   Найти похожие ветки 

 
Tack ©   (2007-07-05 15:40) [0]

Т.е. нужно при показе диалога открытия файла сразу переключать его в вид "Эскизы страниц" или "Список" или "Таблица". Есть возможность это сделать в программном коде?


 
clickmaker ©   (2007-07-06 17:18) [1]

procedure TForm1.OpenDialog1FolderChange(Sender: TObject);
var
 Wnd: HWND;
 AStyle: DWORD;
begin
 Wnd := GetParent(OpenDialog1.Handle);
 Wnd := FindWindowEx(Wnd, 0, "SHELLDLL_DefView", nil);
 if Wnd <> 0 then begin
   Wnd := FindWindowEx(Wnd, 0, "SysListView32", nil);
   AStyle := GetWindowLong(Wnd, GWL_STYLE);
   if (AStyle and LVS_REPORT) = 0 then
     AStyle := AStyle or LVS_REPORT;
   SetWindowLong(Wnd, GWL_STYLE, AStyle);
   // force items recreation, didn"t find more beautiful way...
   PostMessage(Wnd, WM_CONTEXTMENU, 0, 0);
   PostMessage(Wnd, WM_KEYDOWN, VK_ESCAPE, 0);
 end;
end;


начиная с ХР можно использовать LVM_SETVIEW


 
Tack ©   (2007-07-07 12:01) [2]

Никогда бы такое не пришло в голову, и в MSDN про это ни строчки.
Спасибо огромное!


 
Rouse_ ©   (2007-07-10 11:40) [3]

Я немного по другому делал (через перегрытие DLGPROC), но как вариант:

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   Button2: TButton;
   Button3: TButton;
   Button4: TButton;
   Button5: TButton;
   OpenDialog1: TOpenDialog;
   procedure Button1Click(Sender: TObject);
   procedure OpenDialog1Show(Sender: TObject);
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

var
 DLGStyle: Integer;

const
   ODM_VIEW_ICONS  = $7029;
   ODM_VIEW_LIST   = $702b;
   ODM_VIEW_DETAIL = $702c;
   ODM_VIEW_THUMBS = $702d;
   ODM_VIEW_TILES  = $702e;

 DlgStyles: array [0..4] of Integer =
   (ODM_VIEW_ICONS,
   ODM_VIEW_LIST,
   ODM_VIEW_DETAIL,
   ODM_VIEW_THUMBS,
   ODM_VIEW_TILES);

function NewOpenDlgProc(Wnd: HWND; uMsg: DWORD;
 WParam, LParam:integer): Integer; stdcall;
var
 ShellHandle: THandle;
begin
 if uMsg = WM_SHOWWINDOW then
 begin
   ShellHandle := FindWindowEx(Wnd, 0, "SHELLDLL_DefView", nil);
   SendMessage(ShellHandle, WM_COMMAND, DLGStyle, 0);
 end;
 Result := CallWindowProc(Pointer(GetWindowLong(Wnd, GWL_USERDATA)), Wnd, uMsg, WParam, LParam);
end;

procedure TForm1.OpenDialog1Show(Sender: TObject);
begin
SetWindowLong(GetParent(OpenDialog1.Handle), GWL_USERDATA,
  SetWindowLong(GetParent(OpenDialog1.Handle), DWL_DLGPROC, DWORD(@NewOpenDlgProc)));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 DLGStyle := DLGStyles[TComponent(Sender).Tag];
 OpenDialog1.Execute;
end;

end.



Страницы: 1 вся ветка

Текущий архив: 2007.09.16;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.057 c
15-1187362611
oldman
2007-08-17 18:56
2007.09.16
Гороскопы...


15-1187675559
tipman
2007-08-21 09:52
2007.09.16
Delphi .NET в какой версии достойный?


15-1187089130
просто так
2007-08-14 14:58
2007.09.16
как запретить несанкционированное скачивание?


8-1165861296
DriveR_F
2006-12-11 21:21
2007.09.16
Работа с TImage и GIF


1-1184003393
fd00ch
2007-07-09 21:49
2007.09.16
Эмуляция стандартного меню





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский