Форум: "Основная";
Текущий архив: 2002.09.26;
Скачать: [xml.tar.bz2];
Внизкак в делфи вызвать Найти похожие ветки
← →
volph2 (2002-09-16 13:37) [0]как в делфи вызвать "новое" окно (диалог) открытия файла, как в XP,2000 что-бы слева панель была - Хистори, Мои документы и т.п.?
← →
AFrolov (2002-09-16 13:39) [1]TOpenDialog.Execute() -???
← →
volph2 (2002-09-16 13:41) [2]Но он старого образца :((((((((
← →
Separator (2002-09-16 13:49) [3]Пиши Сам, таких компонентов нет
← →
Странный Прохожий (2002-09-16 13:55) [4]Есть такой компонент! -- TCzDialogs.
Поищите через поисковик.
← →
alena.svt (2002-09-16 15:14) [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.
← →
alena.svt (2002-09-16 15:28) [6]Да если у тебя W98 то там оно будет старое.
← →
Kibitzer (2002-09-16 20:13) [7]У Delphi6 диалоги типа TOpenDialog/TSaveDialog по умолчанию уже с "панелью слева". Чтобы диалоги были "старого образца" - "задумано" свойство OptionsEx.
Интересно, что старые программы, написанные задолго до Win2000 (например WinAmp1.45 06.09.1997) диалоги в Win2000 тоже показывают с "панелью", а программы написанные на D5 (используя, естественно, стандартные диалоги) НИКОГДА не будут показывать "панель слева". Почему???
← →
alena.svt (2002-09-17 04:05) [8]2Kibitzer (16.09.02 20:13)
Winamp писали на VC++ незнаю только с MFC42.dll или нет
Но в том или ином случае уж поверь VC++ что на MFC что Win32 показывает точно такие же старые ст. диалоги. Видимо разработчики Winamp"a телепаты.
← →
alena.svt (2002-09-17 04:30) [9]Большое сорри!
В приведенном коде >>>>TMySaveDialog = class(TOpenDialog) исправьте на TMySaveDialog = class(T SaveDialog)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.09.26;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c