» Материалы за 15.12.2018

 

Расположение и размер TaskBar. Количество и разрешение мониторов

Автор: reader hlp от 15-12-2018, 13:37, посмотрело: 55

uses
  ... ShellApi ...

var
  ....
  Monitors : word;
  Monit_X, Monit_Y : array [1..2] of word;

  DataBar: TAppBarData;
  TaskBar_H : Integer;
  TaskBar_W : Integer;
  TaskBar_L : Integer;
  TaskBar_T : Integer;
  pos_bar : Char;
  ...

procedure Tfm_main.FormCreate(Sender: TObject);
begin
...
// Определяемся с мониторами
Monitors := Screen.MonitorCount;
for i := 1 to Monitors do
  begin
  Monit_X[i] := Screen.Monitors[i - 1].Width;
  Monit_Y[i] := Screen.Monitors[i - 1].Height;
  end;
// определяемся с TaskBar
DataBar.hWnd := FindWindow('Shell_TrayWnd', nil);
DataBar.cbSize := SizeOf(TAppBarData);
if DataBar.hWnd <> 0 then
  if SHAppBarMessage(ABM_GETTASKBARPOS, DataBar) = 1 then
    begin
    TaskBar_H := DataBar.rc.Bottom - DataBar.rc.Top;
    TaskBar_W := DataBar.rc.Right - DataBar.rc.Left;
    TaskBar_L := DataBar.rc.Left;
    TaskBar_T := DataBar.rc.Top;
    end;
  if (TaskBar_H = Monit_Y[1])and(TaskBar_L < 10) then Pos_bar := 'L';
  if (TaskBar_H = Monit_Y[1])and(TaskBar_L > 10) then Pos_bar := 'R';
  if (TaskBar_W = Monit_X[1])and(TaskBar_T < 10) then Pos_bar := 'T';
  if (TaskBar_W = Monit_X[1])and(TaskBar_T > 10) then Pos_bar := 'B';
...
end;

Категория: Pascal Delphi

 

Системные кнопки формы. Перехват

Автор: reader hlp от 15-12-2018, 12:47, посмотрело: 57

Type TMain = class(TForm)
....
  public
    { Public declarations }
    procedure WMSize(var Message: TWMSize); message WM_SIZE;

.....

procedure Tform1.WMSize(var Message: TWMSize);
begin
inherited;
if WindowState = wsMaximized then
  begin
  ....
  end;
if WindowState = wsMinimized then
  begin
  ....
  end;
if WindowState = wsNormal then
  begin
  ....
  end;

end;

Категория: Pascal Delphi

 

Определить форма активна или нет (получила или потеряла фокус)

Автор: reader hlp от 15-12-2018, 10:21, посмотрело: 69

type
//...
private
{ Private declarations }
procedure WMNCACTIVATE(var M: TWMNCACTIVATE); message WM_NCACTIVATE;
end;

implementation

//...

procedure TForm1.WMNCACTIVATE(var M: TWMNCACTIVATE);
begin
inherited;
if M.Active then caption:='Form active'
                    else caption:='Form not active' ;
end;

Категория: Pascal Delphi