Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

DeleteMenu [D6, WinXP]


psa247 ©   (2005-09-03 15:22:00) 

Подскажите, как запретить не удаляя - кнопку "Минимизировать"?


psa247   (2005-09-10 17:36:00) [1]

> Турист
И то правда...
Спасибо еще раз


Турист   (2005-09-10 17:28:00) [2]

>psa247 ©   (10.09.05 17:26) [15]
Может приложению лучше сообщение послать пусть само себя активизирует


psa247   (2005-09-10 17:26:00) [3]

Активизирую предыдущий запуск

  index:= FindWindow(nil,'Заголовок Главной Формы');
  if index<>0 then begin
    if IsIconic(index)then OpenIcon(index);
    if not(IsWindowEnabled(index))then EnableWindow(index, True);
    if not(IsWindowVisible(index))then ShowWindow(index, SW_SHOWNORMAL);
    SetForegroundWindow(index);
    Application.Terminate;


Турист   (2005-09-10 16:58:00) [4]

>psa247 ©   (10.09.05 14:34) [13]


Форма - главная форма проекта ?

 if IsIconic(Application.Handle)then
   Application.Restore
 else begin
   ...
 end


psa247   (2005-09-10 14:34:00) [5]

В чем здесь дело?

  if IsIconic(index)then OpenIcon(index);
  if not(IsWindowEnabled(index))then EnableWindow(index, True);
  if not(IsWindowVisible(index))then ShowWindow(index, SW_SHOWNORMAL);
  SetForegroundWindow(index);

После этого кнопка минимизации не работает !!!


begin...end   (2005-09-03 19:51:00) [6]

> Турист   (03.09.05 17:16) [8]
> К сожалению, и этот вариант не решает проблему psa247 ©

Я знаю, что не решает. Я просто привёл более короткий код, аналогичный Вашему.


Турист   (2005-09-03 18:17:00) [7]

>psa247 ©   (03.09.05 17:57) [10]
Наверно, для возможности установки стиля WS_EX_CONTEXTHELP, который, судя по описанию, не может быть установлен вместе с WS_MINIMIZEBOX или WS_MAXIMIZEBOX


psa247   (2005-09-03 17:57:00) [8]


> Турист   (03.09.05 17:16) [8]
> >begin...end ©   (03.09.05 17:07) [7]
> К сожалению, и этот вариант не решает проблему psa247 ©
>
> >psa247 ©
> Это критично ? Если да, то есть компонент TJvCaptionButton
> в Jedi VCL

Не критично, но не благообразно. А почему так?
Спасибо.


Турист   (2005-09-03 17:23:00) [9]

>Турист   (03.09.05 17:16) [8]

:-)


procedure TForm1.Button5Click(Sender: TObject);
begin
 JvCaptionButton1.Enabled := not JvCaptionButton1.Enabled
end;


Турист   (2005-09-03 17:16:00) [10]

>begin...end ©   (03.09.05 17:07) [7]
К сожалению, и этот вариант не решает проблему psa247 ©

>psa247 ©
Это критично ? Если да, то есть компонент TJvCaptionButton в Jedi VCL


begin...end   (2005-09-03 17:07:00) [11]

> Турист   (03.09.05 16:45) [5]

> procedure TForm1.Button4Click(Sender: TObject);
> var
>  dwStyle: DWord;
> begin
>  dwStyle := GetWindowLong(Handle, GWL_STYLE);
>  if (dwStyle and WS_MINIMIZEBOX) = 0 then
>    SetWindowLong(Handle, GWL_STYLE, dwStyle or WS_MINIMIZEBOX)
>  else
>    SetWindowLong(Handle, GWL_STYLE, dwStyle and not WS_MINIMIZEBOX);
>  SetWindowPos(Handle, 0, 0, 0, 0, 0, SWP_NOZORDER or SWP_NOMOVE or
>               SWP_NOSIZE or SWP_NOACTIVATE or SWP_FRAMECHANGED)
> end;

procedure TForm1.Button4Click(Sender: TObject);
begin
 SetWindowLong(Handle, GWL_STYLE, GetWindowLong(Handle, GWL_STYLE) xor WS_MINIMIZEBOX);
 DrawMenuBar(Handle)
end


psa247   (2005-09-03 16:51:00) [12]


> Турист   (03.09.05 16:45) [5]

Так она становится невидимой. Извиняюсь, забыл сказать, что biMaximized - False.


Турист   (2005-09-03 16:45:00) [13]


procedure TForm1.Button3Click(Sender: TObject);
begin
 if biMinimize in BorderIcons then
   BorderIcons := BorderIcons - [biMinimize]
 else
   BorderIcons := BorderIcons + [biMinimize]
end;

{ Вариант begin...end ©   (03.09.05 16:21) [3] }

procedure TForm1.Button4Click(Sender: TObject);
var
 dwStyle: DWord;
begin
 dwStyle := GetWindowLong(Handle, GWL_STYLE);
 if (dwStyle and WS_MINIMIZEBOX) = 0 then
   SetWindowLong(Handle, GWL_STYLE, dwStyle or WS_MINIMIZEBOX)
 else
   SetWindowLong(Handle, GWL_STYLE, dwStyle and not WS_MINIMIZEBOX);
 SetWindowPos(Handle, 0, 0, 0, 0, 0, SWP_NOZORDER or SWP_NOMOVE or
              SWP_NOSIZE or SWP_NOACTIVATE or SWP_FRAMECHANGED)
end;


psa247   (2005-09-03 16:31:00) [14]


> TForm.BorderIcons.biMinimize=False ?

Enable:= False, но чтобы оставалась видимой. Потом опять разрешить


begin...end   (2005-09-03 16:21:00) [15]

Стиль WS_MINIMIZEBOX сбросить?


Poirot   (2005-09-03 16:15:00) [16]

запретить обработку WM_SIZE с wParam = SIZE_MINIMIZED...
Или просто задизейблить пункт меню


Турист   (2005-09-03 16:14:00) [17]

TForm.BorderIcons.biMinimize=False ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо