Текущий архив: 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