Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2007.09.16;
Скачать: [xml.tar.bz2];

Вниз

Как при открытии 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.054 c
1-1183640451
Seldoff
2007-07-05 17:00
2007.09.16
CompareStr vs StrComp


15-1187351797
Вася Правильный
2007-08-17 15:56
2007.09.16
украинский подсказчик слов SMS в телефоне nokia


15-1187577985
Slider007
2007-08-20 06:46
2007.09.16
С днем рождения ! 20 августа 2007 понедельник


11-1171022650
WiseImp
2007-02-09 15:04
2007.09.16
Turbo Delphi?


15-1187341097
ajlekceu
2007-08-17 12:58
2007.09.16
Как заставить DOS-приложение работать быстрее?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский