Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Calcular posicion de formulario basada en control de otro ???? (https://www.clubdelphi.com/foros/showthread.php?t=57687)

david_uh 25-06-2008 01:10:23

Calcular posicion de formulario basada en control de otro ????
 
hola foro
Esto puede parecer de ripley pero es cierto, pasa que estoy haciendo un programa para una pequeña empresa que solo tiene una computadora a dispocision y el monitor de esta es un SAMTRON cuya máxima resolucion es de 600 X 400 y tengo el siguiete problema.
Tengo un formulario para registrar compras y otro para ir agregando los items de la compra que es invocado desde el form de compras, este se ubica delante de form de compras y agrega los items a un listview que esta en el form de compra principal todo esta bien pero deseo que el form de agregar items no tape el listview de manera que el usuario vea los items que se estan agregando.

ya que una imagen vale mas de mil palabras les muestro lo que de3searia aqui para que puedan verlo mas claro , es decir que se distribuyan de esta forma pero automaticamente, que el form este encima del listview este ultimo form de agregar items es mostrado en forma modal

Agradecere cualquier aporte

Saludos

roman 25-06-2008 02:44:44

A ver así:

Código Delphi [-]
var
  P: TPoint;

begin
  P := Self.ClientToScreen(ListView1.BoundsRect.TopLeft);

  Form2.Left := P.X + (ListView1.Width - Form2.Width) div 2;
  Form2.Top := P.Y - Form2.Height;

  if Form2.Top < 0 then
    Form2.Top := 0;

  Form2.Show;
end;

// Saludos

xEsk 25-06-2008 02:46:07

Hola, te he escrito este ejemplo que puedes adaptar a tus necesidades.

En mi ejemplo uso un TButton, y al clicar encima de este TButton se muestra una ventana justo por encima del TButton, sin dejar que se oculte este.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  NewForm: TForm;

begin
  NewForm:=TForm.Create(self);
  try
    // le decimos que queremos nuestra propia posicion
    NewForm.Position:=poDesigned;
    // movemos el nuevo Form por encima del TButton (para que no lo oculte)
    NewForm.Top:=Top + Button1.Top - NewForm.ClientHeight - 5;
    // centramos la ventanta respecto al TButton
    NewForm.Left:=Left + Button1.Left - (NewForm.Width div 2 - Button1.Width div 2);
    // mostramos la ventana
    NewForm.ShowModal;
  finally
    NewForm.Free;
  end;
end;

Este ejemplo, es más que nada para que veas la idea del asunto... :)

Saludos.

Edito: Vaya, veo que Roman se me ha adelantado por segundos xD


La franja horaria es GMT +2. Ahora son las 22:11:27.

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