![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как вызвать и обработать стандартный диалог открытия файлов? [D7, WinXP]
kalexi © (2008-08-02 22:47:00)Сабж. Понял, что необходимо использовать функцию GetOpenFileName, но как не понял.
Мне нужно обьявить эту функцию, вызвать и вернуть путь к файлу. А также понять что за структура OPENFILENAME.
Нашел следующий код (правилен ли он я не знаю так как не сумел проверить из за неизвестного типа OPENFILENAME):
var
ofn : OPENFILENAME;
begin
ZeroMemory(@ofn, sizeof(OPENFILENAME));
with ofn do
begin
lStructSize:=sizeof(OPENFILENAME);
lpstrInitialDir:='c:\windows';
lpstrTitle:='Choose Any File';
nMaxFile:=255;
lpstrFile:=VirtualAlloc(0, 255, MEM_COMMIT, PAGE_READWRITE);
lpstrFilter:='Win32 Executables'+#0+'*.exe'+#0+'All file types'#0+'*.*'+#0#0;
Flags:=OFN_FILEMUSTEXIST + OFN_HIDEREADONLY + OFN_PATHMUSTEXIST;
end;
if GetOpenFileName(ofn) then
MessageBox(0, ofn.lpstrFile, nil, MB_OK);
VirtualFree(ofn.lpstrFile, 0, MEM_RELEASE);
Объявлять кажется так:
function GetOpenFileName(lpofn: pointer): integer; stdcall; external 'comdlg32.dll' name 'GetOpenFileNameA';
Правильно ли и как обьявить структуру OPENFILENAME?
ЧИкАго (2008-11-24 17:27:00) [1]Удалено модератором
ЧИкАго (2008-11-24 17:20:00) [2]Удалено модератором
Leonid Troyanovsky (2008-11-24 09:12:00) [3]Удалено модератором
ЧИкАго (2008-11-23 14:26:00) [4]Удалено модератором
Leonid Troyanovsky (2008-11-22 11:06:00) [5]Удалено модератором
ЧИкАго (2008-11-22 02:23:00) [6]Благодарю! Код работает нормально использовал в своей программе. Пишу "Помошник БУГАЛТЕРА". Счастливо...
kalexi (2008-08-02 23:38:00) [7]Блин, дурак, сори...
Сергей М. (2008-08-02 23:11:00) [8]
> из за неизвестного типа OPENFILENAME
Подключи в uses юнит CommDlg и удивись - все гениальное изобретено до нас