Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 06.09.2011, 17:31
x2088 x2088 вне форума
Прохожий
 
Регистрация: 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;

Последний раз редактировалось x2088, 06.09.2011 в 18:37.
Ответить с цитированием
  #2  
Старый 06.09.2011, 20:51
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

А в чём вопрос? Код весь есть.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #3  
Старый 06.09.2011, 21:28
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Bargest
А в чём вопрос? Код весь есть.
Это типа FAQ
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #4  
Старый 06.09.2011, 22:08
Аватар для AND_REY
AND_REY AND_REY вне форума
Активный
 
Регистрация: 31.03.2009
Адрес: Украина, г.Днепропетровск
Сообщения: 324
Версия Delphi: Delphi7
Репутация: 3877
По умолчанию

Вот ещё примерчик к этой теме, правда медленно работает:
Рисует форму по картинке в Image, прозрачным цветом считается цвет верхней левой точки.
Код:
procedure TForm1.FormCreate(Sender: TObject);
Var
 R, TR, x, y: Integer;
 C: TColor;
begin
 Image1.Left:= 0;
 Image1.Top:= 0;
 C:= Image1.Picture.Bitmap.Canvas.Pixels[0, 0];
 R:= CreateRectRgn(0, 0, Image1.Picture.Graphic.Width,
      Image1.Picture.Graphic.Height);
 For x:= 0 To Image1.Picture.Graphic.Width Do
  For y:= 0 To Image1.Picture.Graphic.Height Do
   if Image1.Picture.Bitmap.Canvas.Pixels[x-1, y-1] = C Then
    begin
     TR:= CreateRectRgn(x-1, y-1, x, y);
     CombineRgn(R, R, TR, RGN_DIFF);
     DeleteObject(TR);
    end;
   Form1.BorderStyle:= BsNone;
   SetWindowRgn(Form1.Handle, R, True);
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
 ReleaseCapture;
 Form1.Perform(WM_SYSCOMMAND, $F012, 0);
end;
__________________
If end Then begin;

Последний раз редактировалось AND_REY, 06.09.2011 в 22:11.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:45.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025