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;