Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 06.02.2009, 17:45
Аватар для qwak
qwak qwak вне форума
Прохожий
 
Регистрация: 09.10.2008
Сообщения: 31
Репутация: 10
Вопрос Запрет отмены в диалоге открытия

Привет всем!
Возник скорее всего элементарный для вас вопрос,но сложный для меня.
Как запретить кнопку "отмена" и крестик закрытия в диалоге открытия файла? (честно искал, но не нашёл) Заоранее спасибо за помощь.
Ответить с цитированием
  #2  
Старый 26.03.2009, 18:26
Аватар для qwak
qwak qwak вне форума
Прохожий
 
Регистрация: 09.10.2008
Сообщения: 31
Репутация: 10
По умолчанию

Что никто не знает?
Ответить с цитированием
  #3  
Старый 26.03.2009, 19:15
lepota lepota вне форума
Прохожий
 
Регистрация: 26.03.2009
Сообщения: 1
Репутация: 10
Смех

Цитата:
Сообщение от qwak
Привет всем!
Возник скорее всего элементарный для вас вопрос,но сложный для меня.
Как запретить кнопку "отмена" и крестик закрытия в диалоге открытия файла? (честно искал, но не нашёл) Заоранее спасибо за помощь.
ну если совсем по тупому.. то читай код с которым пользователь закрыл диалог и пока код не (Execute или там mrOk) снова и снова открывай диалог на открытие файла
Ответить с цитированием
  #4  
Старый 26.03.2009, 20:20
Аватар для Karsh
Karsh Karsh вне форума
Активный
 
Регистрация: 22.09.2007
Адрес: SPb
Сообщения: 228
Версия Delphi: 7, 2009, XE2
Репутация: 70
По умолчанию

можно самому, используя 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 метра.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 04:14.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter