Einzelnen Beitrag anzeigen

Popov
(Gast)

n/a Beiträge
 
#6

Re: Andocken wie z.B. bei Miranda/ICQ

  Alt 22. Nov 2007, 21:55
Zitat von Legnad:
Aber mich würde trotzdem interessieren, wie man den Arbeitsbereich einschränken könnte (Ansatzweise). Ich werd aus der Unit (appbar.pas) nicht sonderlich schlau. Ich meine, es könnte bestimmt auch andere interessieren.
Hier ein Beispiel aus meinem Beispiele-Ordner. Nur komm nicht gleich mit Detailfragen. Das Beispiel habe ich so 2002 geschrieben.

Natürlich kann das Beispiel nicht das was die Komponente kann, aber es zeigt den wichtigsten Punkt.

Delphi-Quellcode:
function TForm1.TaskHoehe: Integer;
var
  hWnd: Longint; rRect: TRect;
begin
  {berechnen der Taskleistenhöhe}
  hWnd := FindWindow(PCHAR('Shell_TrayWnd'),PCHAR(''));
  if hWnd <> 0 then begin
    GetWindowRect( hWnd, rRect );
    TaskHoehe := rRect.Bottom - rRect.Top;
  end else TaskHoehe := 0; {keine Taskleiste gefunden (Oder alternativ 28 Pixel/ Win98)}
end;

procedure TForm1.SetNewScreenArea(OnOff: Boolean);
var
  rTemp, rDef: TRect;
begin
  if OnOff then begin
    SystemParametersInfo(SPI_GetWorkArea, 0, Pointer(@rDef), 0);
    Top := 0;
    Left := 0;
    Height := Screen.Height - TaskHoehe + 3;

    rTemp := rDef;
    rTemp.Left := Width + 3;
    SystemParametersInfo(SPI_SetWorkArea, 0, Pointer(@rTemp), 0);
  end else begin
    //{als Rettungsanker:} rDef := Rect(0, 0, Screen.Width, Screen.Height);
    SystemParametersInfo(SPI_SetWorkArea, 0, Pointer(@rDef), 0);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  SetNewScreenArea(True);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  SetNewScreenArea(False);
end;
  Mit Zitat antworten Zitat