
06.09.2011, 17:31
|
Прохожий
|
|
Регистрация: 05.09.2011
Сообщения: 6
Репутация: 10
|
|
Нестандартное окно: как это реализовать?
ОКНО БЕЗ ЗАГОЛОВКА
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
BorderStyle := bsSizeable; //alNone; - растягиваемое / нерастягиваемое окно;
SetWindowLong(Handle, GWL_STYLE, GetWindowLong(Handle, GWL_STYLE) and
not WS_CAPTION or WS_BORDER);
Height := Height - GetSystemMetrics(SM_CYCAPTION);
Refresh;
end;
ТАСКАЕМ ОКНО ЗА LABEL
Код:
procedure TForm1.Label1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
const sc_dragmove = $f012;
begin
releasecapture;
Form1.Perform(wm_syscommand, sc_dragmove, 0);
end;
РАЗВОРАЧИВАЕМ И ВОССТАНАВЛИВАЕМ ОКНО БЕЗ ЗАГОЛОВКА
Код:
public
{ Public declarations }
WinPrp: array [1..4] of Integer;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
If Form1.Align <> alClient
Then begin
WinPrp[1] := Form1.Left;
WinPrp[2] := Form1.Top;
WinPrp[3] := Form1.Width;
WinPrp[4] := Form1.Height;
Form1.Align := alClient;
end
Else begin
Form1.Align := alNone;
Form1.Left := WinPrp[1];
Form1.Top := WinPrp[2];
Form1.Width := WinPrp[3];
Form1.Height := WinPrp[4];
end;
end;
СВЕРНУТЬ В ТАСКБАР ОКНО БЕЗ КНОПКИ
Код:
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
ShowWindow(Application.Handle, SW_SHOW); // показываем форму окна;
Application.MainForm.Show; // забираем фокус в окно;
ShowWindow(Application.Handle, WM_SETFOCUS); // забираем фокус на таскбар;
ShowWindow(Application.Handle, BM_SETSTATE); // кликаем;
ShowWindow(Application.Handle, WM_KILLFOCUS); // отдаём фокус системе;
end;
СНОСИМ КНОПКУ В ТАСКБАРЕ ПО НЕЧЁТНЫМ КЛИКАМ И СВАРАЧИВАЕМ В ТРЕЙ ПО ЧЁТНЫМ
Код:
Application.MainFormOnTaskbar := False; //в проекты :: посмотреть исходник;
procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
If Tag <> 1
Then begin
ShowWindow(Application.Handle, SW_HIDE);
Tag := 1;
end
Else begin
TrayIcon1.Visible := True;
Application.MainForm.Hide;
Tag := 0;
end;
end;
ВЫНИМАЕМ ОКНО ИЗ ТРЕЯ ПО ДАБЛКЛИКУ И ПОКАЗЫВАЕМ ЕГО КНОПКУ В ТАСКБАРЕ
Код:
Application.MainFormOnTaskbar := False; //в проекты :: посмотреть исходник;
procedure TForm1.TrayIcon1DblClick(Sender: TObject);
begin
TrayIcon1.Visible := False; //True;
Application.MainForm.Show;
ShowWindow(Application.Handle, SW_SHOW); //кнопка в таскбаре;
end;
ОКНО ПОВЕРХ ВСЕХ ОКНОН С НИЗКИМ ПРИОРИТЕТОМ
Код:
procedure TForm1.SpeedButton4Click(Sender: TObject);
begin
If FormStyle <> fsStayOnTop
Then begin
FormStyle := fsStayOnTop;
end
Else begin
FormStyle := fsNormal;
end;
end;
|