Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.47 MB
Время: 0.007 c
1-85499
Vladislav
2002-09-16 12:46
2002.09.26
TMemoryStream


1-85445
Юрий Федоров
2002-09-13 11:45
2002.09.26
Assembler


1-85606
greenrul
2002-09-15 13:53
2002.09.26
Непрямоугольная форма и Регионы


1-85519
Шурик Ш
2002-09-17 11:55
2002.09.26
Как подойти к созданию компонента?


4-85751
stainer
2002-08-10 02:07
2002.09.26
как отследить создание диалога или wm_initdialog





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