Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Höhe der Taskleiste?


soisseteben - So 01.10.06 11:46
Titel: Höhe der Taskleiste?
Gibt es eine Möglichkeit, mir die Höhe der Taskleiste in Pixeln ausgeben zu lassen oder mein Formular gleich genau darauf aufzusetzten?

Dankeschön


Reinhard Kern - So 01.10.06 12:17
Titel: Re: Höhe der Taskleiste?
user profile iconsoisseteben hat folgendes geschrieben:
Gibt es eine Möglichkeit, mir die Höhe der Taskleiste in Pixeln ausgeben zu lassen oder mein Formular gleich genau darauf aufzusetzten?

Dankeschön


Hallo,

die Höhe der TaskBar kann man beim Entwurf setzen und lesen und später auch, die Eigenschaft heisst Height (ist schon schwer, drauf zu kommen, aber in der Hilfe findet man so etwas...).

Was du mit "Formular drauf aufsetzen" meinst, ist mir nicht verständlich - jedenfalls gehört die Tskbar zum Client-Bereich des Formulars, man muss sie also dort abziehen, wenn man den verfügbaren Platz bestimmen will.

Gruss Reinhard


elundril - So 01.10.06 12:21

ich glaub er meint unten die Startleiste und mit draufsetzen meint er sowas wie beim WMP wenn man ihn minimiert!

wenn nicht dann meint er mit draufsetzen vl das man zu den minimieren, maximieren und schließen button noch einen (oder auch was anderes) hinzufügen kann!

mfg el


DarkLord05 - So 01.10.06 12:42

Er will sein Programm auf die taskleiste setzten. Ich denke er will sich die höhe des Bildes holen und dann die höhe der Taskleiste abziehen um sein Programm da aufzusetzten.
Kenn die lösung selbst nicht (würd mich aber auch interessieren), wollt nur erklären was er meint^^


soisseteben - So 01.10.06 13:23

Ziel war es, ein Formular so zu maximieren, das es nicht mehr hinter der Taskleiste liegt, sondern direkt darauf. Mit Taskleiste mein ich die Leiste am Bilschirm mit Start usw... . Da müsste es doch eine Win-Funktion geben, die mir deren Höhe zurückliefert, sodass ich dann die Größe meines Formulars darauf abstimmen kann. Kann mir schlecht vorstelen das ich das mit "Height" (einfach so) im Entwurf einstellen kann. Lass mich aber gern eines besseren belehren.

Ich hoffe es war jetzt verständlich.

/EDIT: Also eigentlich genau wie DarkLord meinte.


cuejo - So 01.10.06 13:28

Also spontan fällt mir dazu nur folgendes ein:

Delphi-Quelltext
1:
TaskleistenHoehe:=Screen.Height-Screen.WorkAreaHeight;                    


DarkLord05 - So 01.10.06 13:30

Öhm, kann mich auch irren, aber wenn du ein Formular maximierst, dann legt sich das doch automatisch auf die Taskleiste. Oder soll das unabhängig vom "maximieren" sein?


Blackheart666 - So 01.10.06 13:31


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
function GetTaskbarHeight: integer;
var
  SysTray: Windows.HWND;
  Rect: TRect;
begin
  Result := -1;
  SysTray := FindWindow('Shell_TrayWnd'nil);
  If SysTray <> INVALID_HANDLE_VALUE then begin
    If GetWindowRect(SysTray, Rect) then begin
      Result := Screen.Height - Rect.Top;
    end;
  end;
end;


Martin1966 - So 01.10.06 13:32

Vielleicht hilft dir die Funktion Suche im MSDN SYSTEMPARAMETERSINFO mit dem Parameter Suche im MSDN SPI_GETWORKAREA weiter:


Delphi-Quelltext
1:
2:
3:
4:
var
  r: TRect;
begin
  SystemParametersInfo(SPI_GETWORKAREA, 0, @r, 0);


Andreas L. - So 01.10.06 13:35

Mit screen.WorkAreaHeight bekommst du die Höhe des Desktops abzüglich sämtlicher Leisten und DeskBands. Also


Delphi-Quelltext
1:
form1.top := screen.WorkAreaHeight - form1.height;                    


cuejo - So 01.10.06 13:43

user profile iconAndreas L. hat folgendes geschrieben:

Delphi-Quelltext
1:
form1.top := screen.WorkAreaHeight - form1.height;                    

Dadurch wird Form1.Top negativ! Ich plädiere immer noch für meinen Vorschlag :mrgreen:


cuejo - So 01.10.06 13:46

Sorry, hab mich verguckt! :oops: Das ist vollkommen richtig.


soisseteben - So 01.10.06 14:12

Jo...ich schau mir das alles mal an. Danke schonmal für euer Engagement :D.


soisseteben - So 01.10.06 18:42

Da ich nur Maximieren wollte hab ichs jetzt so gemacht:


Delphi-Quelltext
1:
2:
3:
4:
Top := 0;
Left := 0;
Height := Screen.WorkAreaHeight;
Width := Screen.WorkAreaWidth;


Danke nochmal! :D


Blackheart666 - So 01.10.06 19:01

Warum stellst Du dann nicht gleich WindowState auf wsMaximized.


Andreas L. - So 01.10.06 19:51

user profile iconBlackheart666 hat folgendes geschrieben:
Warum stellst Du dann nicht gleich WindowState auf wsMaximized.


Weil wsMaximized keine Taskleisten und Deskbands beachtet wenn diese auf nicht fixiert gestellt wurden (nur XP). Zumindest bin ich auf dieses Problem gestoßen als ich mir ne GUI gebaut habe.


jakobwenzel - So 01.10.06 19:56

das aber nur, wenn borderStyle auf bsNone ist.


soisseteben - Mo 02.10.06 18:19

nicht in D7.