|
Вопрос # 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): я полностью удовлетворен предложенным решением
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|