Страница 15 из 17
Форма - Запрещение кнопки закрытия [X] формы
// Чтобы запретить кнопку закрытия формы, напишите следующий // код (Form1- ваша форма, Button1 - кнопка на ней): void __fastcall TForm1::Button1Click(TObject *Sender) { HMENU MenuHandle = GetSystemMenu(Handle, false); if(MenuHandle) DeleteMenu(MenuHandle, SC_CLOSE, MF_BYCOMMAND); }
- Запрещение кнопки максимизации [[]] формы
// Чтобы запретить кнопку максимизации формы, напишите // следующий код (Form1- ваша форма, Button1 - кнопка на ней): void __fastcall TForm1::Button1Click(TObject *Sender) { HMENU MenuHandle = GetSystemMenu(Handle, false); if(MenuHandle) DeleteMenu(MenuHandle, SC_MAXIMIZE, MF_BYCOMMAND); } // ПРИМЕЧАНИЕ: максимизация формы двойным щелчком мыши // по заголовку также будет невозможна
- Запрещение кнопки минимизации [_] формы
// Чтобы запретить кнопку минимизации формы, напишите // следующий код (Form1- ваша форма, Button1 - кнопка на ней): void __fastcall TForm1::Button1Click(TObject *Sender) { HMENU MenuHandle = GetSystemMenu(Handle, false); if(MenuHandle) DeleteMenu(MenuHandle, SC_MINIMIZE, MF_BYCOMMAND); }
- Отмена закрытия формы при нажатии Alt+F4
// Чтобы форма не закрывалась при нажатии комбинации клавиш // Alt+F4, разместите на форме компонент TActionList(ActionList1), // создайте новый TAction(Action1), и в свойстве ShortCut у Action1 // пропишите комбинацию клавиш Alt+F4, а обработчик события // OnExecute должен выглядеть следующим образом // (Form1- ваша форма): void __fastcall TForm1::Action1Execute(TObject *Sender) { // чтобы при сохранении C++Builder не уничтожил обработчик }
- Отмена закрытия формы при нажатии Alt+F4 (Вариант 2)
//В обpаботчике FormKeyDown пишешь: if (Shift.Contains(ssAlt)&&Key==VK_F4) Tag=1;
//В обpаботчике FormCloseQuery: if(Tag) { CanClose=false; Tag=0; }
- Перемещение формы мышью не за заголовок
// Напишите следующий обработчик события OnMouseDown формы void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { long SC_DRAGMOVE = 0xF012; if(Button == mbLeft) { ReleaseCapture(); SendMessage(Handle, WM_SYSCOMMAND, SC_DRAGMOVE, 0); } } - Изменение размеров формы (развернуть и т.д.)
// Напишите следующий код: Form1->WindowState = wsMaximized; // развернуть Form1->WindowState = wsMinimized; // минимизировать Form1->WindowState = wsNormal; // первоначальный размер
- Как сделать кусок окна прозрачным
// Для того чтобы сделать кусок формы прозрачным, // напишите следующий код:
//Прямоугольный кусок HRGN R1=CreateRectRgn(0, 0, Width, Height); HRGN R2=CreateRectRgn(4, 24, Width-4, Height-4); CombineRgn(R1, R1,R2, RGN_DIFF); SetWindowRgn(Handle, R1, TRUE);
//Кусок в виде элипса HRGN hRgn1 = CreateRectRgn(0, 0, Width, Height); HRGN hRgn2 = CreateEllipticRgn(0, 0, Width, Height); HRGN hRgn3 = CreateRectRgn(0, 0, Width, Height); CombineRgn(hRgn3, hRgn1, hRgn2, RGN_DIFF); SetWindowRgn(Handle, hRgn3, TRUE); //можно заменить hRgn3 на hRgn2
//Кусок в виде пятиугольника HRGN Reg1, Reg2; HRGN Region; POINT p[5]; p[0] = Point(100, 0); p[1] = Point(Width-100, 0); p[2] = Point(Width, Height/2); p[3] = Point(Width/2, Height); p[4] = Point(0, Height/2); Region = CreatePolygonRgn(p, 5, ALTERNATE); SetWindowRgn(Handle, Region, true);
|