|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Запрет отмены в диалоге открытия
Привет всем!
Возник скорее всего элементарный для вас вопрос,но сложный для меня. Как запретить кнопку "отмена" и крестик закрытия в диалоге открытия файла? (честно искал, но не нашёл) Заоранее спасибо за помощь. |
#2
|
||||
|
||||
Что никто не знает?
|
#3
|
|||
|
|||
Цитата:
|
#4
|
||||
|
||||
можно самому, используя WinAPI функции вызвать диалог и работать с его окном:
Код:
uses CommDlg; function DialogHook(Wnd: HWND; Mes: UINT; wParam: WPARAM; lParam: LPARAM): UINT; stdcall; var Style: Integer; Window: HWND; begin if Mes = WM_INITDIALOG then begin if (Win32MajorVersion >= 5) and (Win32Platform = VER_PLATFORM_WIN32_NT) or { Win2k } ((Win32Platform = VER_PLATFORM_WIN32_WINDOWS) and (Win32MajorVersion >= 4) and (Win32MinorVersion >= 90)) then { WinME } Window:= GetWindowLong(Wnd, GWL_HWNDPARENT) else Window:= Wnd; Style:= GetWindowLong(Window, GWL_STYLE); SetWindowLong(Window, GWL_STYLE, Style and not WS_SYSMENU); end; Result:= 0; end; function OpFile(Form: HWND; Filter, DefExt: string; var Str: string): boolean; var OpenFN: TOpenFilename; FileName: array[0..MAX_PATH-1] of Char; begin Result:= false; FileName:= ''; lstrcpy(FileName, pChar(Str)); FillChar(OpenFN, SizeOf(TOpenFileName), 0); with OpenFN do begin if (Win32MajorVersion >= 5) and (Win32Platform = VER_PLATFORM_WIN32_NT) or { Win2k } ((Win32Platform = VER_PLATFORM_WIN32_WINDOWS) and (Win32MajorVersion >= 4) and (Win32MinorVersion >= 90)) then { WinME } lStructSize:= SizeOf(TOpenFilename) else lStructSize:= SizeOf(TOpenFilename) - (SizeOf(DWORD) shl 1) - SizeOf(Pointer); { subtract size of added fields } hwndOwner:= Form; lpstrFilter:= pChar(Filter); lpstrFile:= FileName; nMaxFile:= SizeOf(FileName); lpstrDefExt:= pChar(DefExt); lpfnHook:= DialogHook; flags:= OFN_EXPLORER or OFN_FILEMUSTEXIST or OFN_NOREADONLYRETURN or OFN_HIDEREADONLY or OFN_OVERWRITEPROMPT or OFN_ENABLEHOOK; FlagsEx:= 0; end; if GetOpenFileName(OpenFN) then begin Str:= FileName; Result:= true; end; end; procedure TForm1.Button1Click(Sender: TObject); var s: string; begin if OpFile(Handle, 'exe files'#0'*.exe'#0'all files'#0'*.*'#0, '', s) then ShowMessage(s); end; Начинающий программист уверен, что в 1 килобайте 1000 байт.
Законченный программист уверен, что в 1 километре 1024 метра. |