![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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 ?