| 
| 
 | Вопрос # 4 859/ вопрос закрыт / | 
 |  Приветствую, уважаемые эксперты!Помогите с выполнением Лабы! По заданию нужно создать форму, у которой только кнопка "свернуть". Настраиваю для формы
 biSystemMenu=false;
 biMinimize=true;
 biMaximize=false;
 biHelp=false
 Запускаю форму - нет ни одной кнопки. Что делать?
 
|  |   Вопрос задал: KwaK (статус: Посетитель)Вопрос отправлен: 25 декабря 2010, 09:31
 Состояние вопроса: закрыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: min@y™ Здравствуйте, KwaK!Если условия позволяют не удалить, а отключить ненужные кнопки, то сделай BorderIcons = [biSystemMenu,biMinimize,biMaximize], а потом в OnCreate:
 
 procedure TForm1.FormCreate(Sender: TObject);
var
  hMenuHandle: HMENU;
begin
  inherited;
  // Отключение кнопки "закрыть" и "развернуть"
  hMenuHandle := GetSystemMenu(Handle, false);
  if hMenuHandle <> 0
    then begin
           DeleteMenu(hMenuHandle, SC_CLOSE, MF_BYCOMMAND);
           DeleteMenu(hMenuHandle, SC_MAXIMIZE, MF_BYCOMMAND);
         end;
end;
|  | Ответ отправил: min@y™ (статус: Доктор наук)Время отправки: 25 декабря 2010, 10:37
 Оценка за ответ: 5
 |  
 Мини-форум вопросаВсего сообщений: 10; последнее сообщение — 25 декабря 2010, 11:21; участников в обсуждении: 2. 25 декабря 2010, 09:39: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Лабораторный практикум » Delphi модератором min@y™ 
|   | min@y™ (статус: Доктор наук), 25 декабря 2010, 09:56 [#1]:Если условия позволяют не удалить, а отключить ненужные кнопки, то сделай BorderIcons = [biSystemMenu,biMinimize,biMaximize], а потом в OnCreate: 
 procedure TForm1.FormCreate(Sender: TObject);
var
  hMenuHandle: HMENU;
begin
  inherited;
  // Отключение кнопки "закрыть" и "развернуть"
  hMenuHandle := GetSystemMenu(Handle, false);
  if hMenuHandle <> 0
    then begin
           DeleteMenu(hMenuHandle, SC_CLOSE, MF_BYCOMMAND);
           DeleteMenu(hMenuHandle, SC_MAXIMIZE, MF_BYCOMMAND);
         end;
end;Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | KwaK (статус: Посетитель), 25 декабря 2010, 10:08 [#2]:Прежде всего спасибо! А проще нельзя? Меня сразу срежут на защите, для нас это слишком умно. Вообще решение простыми средствами возможно? (типа еще какое-то свойство поставить в True/false)?
 |  
|   | min@y™ (статус: Доктор наук), 25 декабря 2010, 10:18 [#3]: Цитата (KwaK): А проще нельзя? Нет, нельзя. Кнопка "Закрыть" отключается только так.
 
 Цитата (KwaK): Меня сразу срежут на защите, для нас это слишком умно. Это почему же? Скажешь, что нашёл решение в интернете.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | KwaK (статус: Посетитель), 25 декабря 2010, 10:27 [#4]:сделал BorderIcons = [biSystemMenu,biMinimize,biMaximize], вставил Ваш код (с учетом, что моя форма fmLab1 т.е.procedure TfmLab1.FormCreate(Sender: TObject)  кнопка biMaximize все равно работает.
 Сделал BorderIcons = [biSystemMenu,biMinimize] - теперь все отлично.
 Вообще - это решение поставленной задачи, почему вы не написали в ответы?
 |  
|   | min@y™ (статус: Доктор наук), 25 декабря 2010, 10:37 [#5]: Цитата (KwaK): кнопка biMaximize все равно работает.  Странно, у меня эта кнопка не работает.
 
 Цитата (KwaK): Вообще - это решение поставленной задачи, почему вы не написали в ответы?  Потому что это было предварительно, а также потому, что у меня есть возможность преобразовать сообщение в ответ, что я сейчас и сделаю.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | KwaK (статус: Посетитель), 25 декабря 2010, 10:51 [#6]:все проверил -кнопка "развернуть" работает. Как переслать мой код? |  
|   | min@y™ (статус: Доктор наук), 25 декабря 2010, 10:55 [#7]: Цитата (KwaK): Как переслать мой код?  Пересылать не надо, можешь тут выложить.
 
 Цитата (KwaK): кнопка "развернуть" работае Она действительно разворачивает окно или просто активна, но ничего не делает?
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | KwaK (статус: Посетитель), 25 декабря 2010, 11:01 [#8]:Кнопка действительно разворачивает окно. Из трех кнопок "закрыть"-недоступна и нажатие на нее ничего не дает. Кнопки "минимизировать" и "развернуть" работают как положено. Вот полный код модуля unit Switch;
 
 interface
 
 uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, jpeg, ExtCtrls, StdCtrls, Buttons;
 
 type
 TfmLab1 = class(TForm)
 Foto1: TImage;
 Foto2: TImage;
 btExit: TBitBtn;
 laName: TLabel;
 laBDay: TLabel;
 laAdress: TLabel;
 laStudent: TLabel;
 btNoFotos: TButton;
 btSwitch: TButton;
 procedure btExitClick(Sender: TObject);
 procedure btNoFotosClick(Sender: TObject);
 procedure btSwitchClick(Sender: TObject);
 procedure FormCreate(Sender: TObject);
 private
 { Private declarations }
 public
 { Public declarations }
 end;
 
 var
 fmLab1: TfmLab1;
 blnFoto: boolean;
 implementation
 
 {$R *.dfm}
 
 procedure TfmLab1.btExitClick(Sender: TObject);
 begin
 close
 end;
 
 procedure TfmLab1.btNoFotosClick(Sender: TObject);
 begin
 foto1.Visible:=false;
 foto2.Visible:=false;
 end;
 
 procedure TfmLab1.btSwitchClick(Sender: TObject);
 begin
 blnFoto:=not blnFoto;
 if blnfoto then
 begin
 foto1.Visible:=true;
 foto2.Visible:=false;
 end
 else
 begin
 foto2.Visible:=true;
 foto1.Visible:=false;
 end
 end;
 
 procedure TfmLab1.FormCreate(Sender: TObject);
 var
 hMenuHandle: HMENU;
 begin
 inherited;
 // Отключение кнопки "закрыть" и "развернуть"
 hMenuHandle := GetSystemMenu(Handle, false);
 if hMenuHandle <> 0
 then begin
 DeleteMenu(hMenuHandle, SC_CLOSE, MF_BYCOMMAND);
 DeleteMenu(hMenuHandle, SC_MAXIMIZE, MF_BYCOMMAND);
 end;
 end;
 end.
 |  
|   | min@y™ (статус: Доктор наук), 25 декабря 2010, 11:13 [#9]:У меня ОС Windows7, кнопка "развернуть" доступна, но не работает. Код не смотрел, глаза режет.
 И вообще, зачем нужно такое ограничение?
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | KwaK (статус: Посетитель), 25 декабря 2010, 11:21 [#10]:Все вопрос закрыт. Я ставлю BorderIcons = [biSystemMenu,biMinimize] и все работает как надо, просто хотел до конца разобраться с кодом. У меня Windows XP. Еще раз спасибо |  25 декабря 2010, 11:24: Вопрос закрыт (решение принял автор вопроса — KwaK): я полностью удовлетворен предложенным решением Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |