Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Situar form a la esquina de la pantalla (https://www.clubdelphi.com/foros/showthread.php?t=47979)

Khronos 12-09-2007 16:21:56

Situar form a la esquina de la pantalla
 
Pues me gustaria situar el forma en la esquina inferior derecha, pero dependiendo de la resolucion cambia.
Estuve mirando la funcion windows.getclientrect pero no se si es lo que busco.

Porfavor ayudarme, no se que hacer.

Foto:

jhonny 12-09-2007 16:39:18

Estoy seguro que deben haber mejores trucos para hacerlo y que ademas tenagn en cuenta la posición, altura y anchura de la barra de tareas, pero por lo pronto se me ocurre esta:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  Left := Screen.Width-Width;
  Top  := Screen.Height-Height;
end;

martinzcr 12-09-2007 16:43:15

Hola:

Tambien puedes hacerlo así

Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
     Left := 0;
     Top  := 0;
end;

Saludos!

jhonny 12-09-2007 17:04:27

Cita:

Empezado por martinzcr (Mensaje 230402)
Hola:

Tambien puedes hacerlo así

Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
     Left := 0;
     Top  := 0;
end;

Saludos!

Bueno, pero creo que eso la situaria en la equina superior izquierda y no en la inferiro derecha ;).

Khronos 12-09-2007 19:00:14

Muchas gracias por las respuestas pero ya encontre la solucion con 2 sencillas funciones que hice:

Código Delphi [-]
function ScreenHeigth(y : integer): integer;
const
BarraTareas=29;
var
Altura: integer;
begin
Altura:= screen.Height - BarraTareas;
result:= Altura - y;

end;

function ScreenWidth(x : integer): integer;
var
Ancho: integer;
begin
Ancho:= screen.Width +2; // 2 es el borderwith del form
result:= Ancho - x;
end;



var
Rectangulo :TRect;
begin
with Rectangulo do
   begin
     Left:=0;
     Top:=0;
     Right:=Fmini.Width;
     Bottom:=FMini.Height;
   end;
mediaplayer1.Display:=FMIni.PVideo;
   MediaPlayer1.DisplayRect:=Rectangulo;
FMini.timer2.enabled:=true;
   FMini.PControles.Top:=104;
   FMini.Top:=ScreenHeigth(FMini.Height);
   FMini.Left:=ScreenWidth(FMini.Width);
   Fmini.showmodal;

Como sospechareis es para hacer una mini ventanita en la esquina de la pantalla como hace el reproductor de windows, por fin lo consegui :D :D

Que bien se ven los videos!!

Salu2

dec 12-09-2007 19:24:44

Hola,

A ver qué te parece así.

Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
var
  r: TRect;
begin
  if SystemParametersInfo(SPI_GETWORKAREA,0,@r,0) then
  begin
    self.Left := r.Right-self.Width;
    self.Top := r.Bottom-self.Height;
  end;
end;

Lo que hacemos es conseguir el rectángulo del área de trabajo, y eso excluye no sólo la barra de tareas de Windows, sino cualquier otra que existiera y tengan el tamaño que tengan. Arriba sitúo el formulario en la esquina inferior derecha, pero, no te será complicado situarlo donde mejor te parezca.

dec 12-09-2007 19:36:27

Hola,

Güeno.

Código Delphi [-]

uses
  Windows;

type
  TCorner = (cLeftTop, cLeftButton, cRightTop, cRightButton);

function CornerForm(form: TCustomForm; corner: TCorner): boolean;
var
  r: TRect;
begin
  result := false;
  if SystemParametersInfo(
   SPI_GETWORKAREA,0,@r,0) then
  begin
    case corner of
      cLeftTop: begin
        form.Top := r.Top;
        form.Left := r.Left;
      end;
      cLeftButton: begin
        form.Left := r.Left;
        form.Top := r.Bottom-form.Height;
      end;
      cRightTop: begin
        form.Top := r.Top;
        form.Left := r.Right-form.Width;
      end;
      cRightButton: begin
        form.Top := r.Bottom-form.Height;
        form.Left := r.Right-form.Width;
      end;
    end;
    result := true;
  end else
    RaiseLastOSError();
end;

Khronos 12-09-2007 21:18:46

Cita:

Empezado por dec (Mensaje 230511)
Hola,

A ver qué te parece así.


Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
var
r: TRect;
begin
if SystemParametersInfo(SPI_GETWORKAREA,0,@r,0) then
begin
self.Left := r.Right-self.Width;
self.Top := r.Bottom-self.Height;
end;
end;





Lo que hacemos es conseguir el rectángulo del área de trabajo, y eso excluye no sólo la barra de tareas de Windows, sino cualquier otra que existiera y tengan el tamaño que tengan. Arriba sitúo el formulario en la esquina inferior derecha, pero, no te será complicado situarlo donde mejor te parezca.

Mucho mejor que mi code dec, gracias :D

Me lie demasiado aunque consegui el mismo resultado pero es mas codigo :D

PD: Hay alguna forma de que un form este siempre delante de todo, por ahora lo abro con showmodal pero no funciona como la mascara mini del windows media player 10.

Salu2

dec 12-09-2007 21:40:18

Hola,

Puedes probar con la propiedad "FormStyle" del formulario dándole el valor "fsStayOnTop". O puedes, si lo haces en tiempo de ejecución, utilizar la función "SetWindowPos()":

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  SetWindowPos(Handle,HWND_TOPMOST,Left,
   Top,Width,Height,SWP_SHOWWINDOW);
end;

Khronos 13-09-2007 15:11:07

Muchas gracias, ya lo solucione :D

Salu2


La franja horaria es GMT +2. Ahora son las 07:55:49.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi