[delphi] Venster in een hoek van het scherm verplaatsen

Pagina: 1
Acties:

  • bgever
  • Registratie: April 2002
  • Laatst online: 28-05-2021
Ik wil graag een venster (redelijk klein ~400×100) in een hoek van het scherm plaatsen. Nu is dat op zich niet moeilijk, de schermgroottes ophalen, klein rekensommetje en hij staat in een hoek.

Nu zit ik alleen met het volgende probleem: Het venster moet boven de taakbalk uitkomen. Nu is die bij sommige mensen anders qua hoogte en plaats, dus je kunt geen exacte positie waardes opgeven om het venster te plaatsen.
Nu heb ik wel een manier gevonden, maar die vind ik eigenlijk niet zo netjes, en is niet zo vlot.
Ik doe het venster met de align optie uitlijnen. Daarna maak ik er alCustom van, en moet de breedte aanpassen. Dan staat het venster (bij uitlijnen met alBottom) links onder in de hoek. Als ik hem nu rechts wil uitlijnen, dan moet ik dus exacte waardes (in px) gaan opgeven. Maar wat doe je nu als daar een sidebar staat. (of een venster als trillian of zo) Dan komt hij er weer overheen. Beetje vervelend dus.

Mijn vraag: Hoe kun je een venster in een hoek van scherm uitlijnen met rekening te houden met de taakbalk en eventuele sidebars.

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 22:26

Tomatoman

Fulltime prutser

'Snap' functie: TForm.ScreenSnap

'The size of the window not obscured by the tray is available by calling the SystemParametersInfo function with the SPI_GETWORKAREA value.'

Een goede grap mag vrienden kosten.


  • bgever
  • Registratie: April 2002
  • Laatst online: 28-05-2021
Ik heb n.a.v. de post van Tomatoman zitten te zoeken, en toen heb ik iets anders gevonden:
Delphi:
1
2
3
4
Uses
   Forms;

Screen.WorkAreaWidth;

Maar de gegevens van de workarea kun je dus ook vinden met TScreen.

Ik ben er dus uit. Thnx Tomatoman voor de aanleiding ;)

[ Voor 41% gewijzigd door bgever op 06-03-2003 23:32 ]


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 22:26

Tomatoman

Fulltime prutser

Rara, wat doet Screen.WorkAreaWidth?
Delphi:
6157
6158
6159
6160
6161
6162
6163
6164
6165
6166
6167
6168
6169
6170
6171
function TScreen.GetWorkAreaRect: TRect;
begin
  SystemParametersInfo(SPI_GETWORKAREA, 0, @Result, 0);
end;

function TScreen.GetWorkAreaTop: Integer;
begin
  Result := WorkAreaRect.Top;
end;

function TScreen.GetWorkAreaWidth: Integer;
begin
  with WorkAreaRect do
    Result := Right - Left;
end;
Geen echte verrassing :)

Een goede grap mag vrienden kosten.