![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как в делфи вызвать
volph2 © (2002-09-16 13:37:00)как в делфи вызвать "новое" окно (диалог) открытия файла, как в XP,2000 что-бы слева панель была - Хистори, Мои документы и т.п.?
alena.svt (2002-09-17 04:30:00) [1]Большое сорри!
В приведенном коде >>>>TMySaveDialog = class(TOpenDialog) исправьте на TMySaveDialog = class(T SaveDialog)
alena.svt (2002-09-17 04:05:00) [2]2Kibitzer (16.09.02 20:13)
Winamp писали на VC++ незнаю только с MFC42.dll или нет
Но в том или ином случае уж поверь VC++ что на MFC что Win32 показывает точно такие же старые ст. диалоги. Видимо разработчики Winamp"a телепаты.
Kibitzer (2002-09-16 20:13:00) [3]У Delphi6 диалоги типа TOpenDialog/TSaveDialog по умолчанию уже с "панелью слева". Чтобы диалоги были "старого образца" - "задумано" свойство OptionsEx.
Интересно, что старые программы, написанные задолго до Win2000 (например WinAmp1.45 06.09.1997) диалоги в Win2000 тоже показывают с "панелью", а программы написанные на D5 (используя, естественно, стандартные диалоги) НИКОГДАне будут показывать "панель слева". Почему???
alena.svt (2002-09-16 15:28:00) [4]Да если у тебя W98 то там оно будет старое.
alena.svt (2002-09-16 15:14:00) [5]unit MyDialogs;
interface
uses
ShellAPI,Windows,Classes,Forms,SysUtils,Graphics, Dialogs,
Controls, ShlOBJ,
{$IFNDEF VER140} DsgnIntf, {$ENDIF}//Тут лишние модули сам выкинешь
CPL, ActiveX, CommDlg;
type
TOpenFileNameEx = packed record
{здесь тоже лишнее}
lStructSize: DWORD;
hWndOwner: HWND;
hInstance: HINST;
lpstrFilter: PAnsiChar;
lpstrCustomFilter: PAnsiChar;
nMaxCustFilter: DWORD;
nFilterIndex: DWORD;
lpstrFile: PAnsiChar;
nMaxFile: DWORD;
lpstrFileTitle: PAnsiChar;
nMaxFileTitle: DWORD;
lpstrInitialDir: PansiChar;
lpstrTitle: PAnsiChar;
Flags: DWORD;
nFileOffset: Word;
nFileExtension: Word;
lpstrDefExt: PAnsiChar;
lCustData: LPARAM;
lpfnHook: function(Wnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): UINT stdcall;
lpTemplateName: PAnsiChar;
pvReserved: Pointer;
dwReserved: DWORD;
FlagsEx: DWORD;
end;
TMyOpenDialog = class(TOpenDialog)
public
function Execute: Boolean; override;
end;
TMySaveDialog = class(TOpenDialog)
public
function Execute: Boolean; override;
end;
function GetOpenFileNameEx(var SaveFile: TOpenFileNameEx): bool; stdcall;
function GetSaveFileNameEx(var SaveFile: TOpenFileNameEx): bool; stdcall;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents("Dialogs", [TMyOpenDialog]);
RegisterComponents("Dialogs", [TMySaveDialog]);
end;
function GetOpenFileNameEx; external "comdlg32.dll" name "GetOpenFileNameA";
function GetSaveFileNameEx; external "comdlg32.dll" name "GetSaveFileNameA";
function OpenInterceptor(var DialogData: TOpenFileName): Bool; stdcall;
var
DialogDataEx : TOpenFileNameEx;
begin
Move(DialogData, DialogDataEx, SizeOf(DialogData));
DialogDataEx.FlagsEx := 0;
DialogDataEx.lStructSize := SizeOf(TOpenFileNameEx);
Result := GetOpenFileNameEx(DialogDataEx);
end;
function SaveInterceptor(var DialogData: TOpenFileName):
Bool; stdcall;
var
DialogDataEx : TOpenFileNameEx;
begin
Move(DialogData, DialogDataEx, SizeOf(DialogData));
DialogDataEx.FlagsEx := 0;
DialogDataEx.lStructSize := SizeOf(TOpenFileNameEx);
Result := GetSaveFileNameEx(DialogDataEx);
end;
{ TMyOpenDialogs }
function TMyOpenDialog.Execute: Boolean;
begin
if (Win32MajorVersion >= 5) and (Win32Platform = VER_PLATFORM_WIN32_NT) then
begin
Result := DoExecute(@OpenInterceptor);
end
else
Result := inherited Execute;
end;
{ TMySaveDialog }
function TMySaveDialog.Execute: Boolean;
begin
if (Win32MajorVersion >= 5) and (Win32Platform = VER_PLATFORM_WIN32_NT) then
begin
Result := DoExecute(@SaveInterceptor);
end
else
Result := inherited Execute;
end;
end.
Странный Прохожий (2002-09-16 13:55:00) [6]Есть такой компонент! -- TCzDialogs.
Поищите через поисковик.
Separator (2002-09-16 13:49:00) [7]Пиши Сам, таких компонентов нет
volph2 (2002-09-16 13:41:00) [8]Но он старого образца :((((((((
AFrolov (2002-09-16 13:39:00) [9]TOpenDialog.Execute() -???