Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > Lazarus, FreePascal, Kylix, etc.
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-08-2020
Avatar de Caminante
Caminante Caminante is offline
Miembro
 
Registrado: oct 2010
Ubicación: Lima - Peru
Posts: 338
Poder: 14
Caminante Va camino a la fama
Posicionar ventana emergente segun posicion de otro control

Hola a todos, aqui de nuevo con una duda existencial . Espero hacerme entender.
Tengo una opcion para realizar busquedas en mi sistema, consiste en escribir en un edit y al hacer enter se muestra una ventana con los resultados de la busqueda. Ya esa parte esta implementada y se muestra asi:

Código Delphi [-]
TFrmBusqueda.Buscar(@VerResultados);

"@VerResultados" es un metodo que uso como callback para devolver los resultados de la busqueda ya que la ventana se muestra como no modal. Hasta ahi todo bien. Ahora mi duda.
En las pruebas todo ok ya lo tenia programado para que la ventana se muestre debajo del edit y si el edit esta en el lado de arriba a la izquierda. Mi duda viene porque en el sistema van a haber mas edits de busqueda como este y pueden estar en diferente posicion (A la derecha o en la parte inferior) y quiero que mi ventana se ubique de acuerdo a la posicion del edit. (Si esta abajo la ventana debe mostrarse arriba del edit, si esta a la derecha debe colocarse de manera que se pueda visualizar bien). Estaba pensando jugar con la propiedad boundsrect del edit, pero ahi empieza mi duda. Al ser una opcion que habra en varias ventanas y en algunas ventanas habra mas de un edit de busqueda seria escribir demasiado codigo. Asi que seria preferible que la ventana de busqueda base sea la que defina su posicion, entonces pense en enviarle el control edit en el parametro. Mi procedimiento para mostrar la ventana debajo del edit queda asi:

Código Delphi [-]
class procedure TFrmBusqueda.Buscar(AControl: Twincontrol; AResults: TGetResults );
var
  Frm:TFrmBusqueda;
  P:TPoint;
begin
  Frm:=TFrmBusqueda.Create(nil);
  frm.FProcRes:=AResults;
  P:=AControl.parent.ClientToScreen(point(AControl.Left,AControl.BoundsRect.Bottom));
  frm.Left:=p.X;
  frm.Top:=p.Y;
  frm.Show;
end;

Pero de ahi viendo como ver los demas casos estoy que le doy muchas vueltas en mi cabeza. No se si voy en buen camino o hay alguna sugerencia que puedan darme.
Uso Lazarus 2.0.1 con sus controles standar.

Gracias por su atencion
__________________
Caminante, son tus huellas el camino y nada más; Caminante, no hay camino, se hace camino al andar.
Antonio Machado
Responder Con Cita
  #2  
Antiguo 21-08-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Creo que está bien pasarle la posición del edit para que la ventana resultante de la búsqueda sepa dónde ubicarse.
Responder Con Cita
  #3  
Antiguo 21-08-2020
Avatar de Caminante
Caminante Caminante is offline
Miembro
 
Registrado: oct 2010
Ubicación: Lima - Peru
Posts: 338
Poder: 14
Caminante Va camino a la fama
Gracias Casimiro por tu observacion, entonces creo que voy en buen camino. Estuve probando algunas cosas y ya logre mostrar la ventana arriba si el edit esta en la parte inferior del form. Me quedo asi:

Código Delphi [-]
class procedure TFrmBusqueda.Buscar(AControl: Twincontrol; AResults: TGetResults
  );
var
  Frm:TFrmBusqueda;
  P:TPoint;
  T:TPoint;
begin
  Frm:=TFrmBusqueda.Create(nil);
  frm.FProcRes:=AResults;
  P:=AControl.parent.ClientToScreen(point(AControl.Left,AControl.BoundsRect.Bottom));
  T:=AControl.parent.ClientToScreen(point(AControl.Left,AControl.top));
  if (p.Y + frm.Height)>Screen.DesktopHeight then
    P.Y:=t.Y - frm.Height;
  frm.Left:=p.X;
  frm.Top:=p.Y;
  frm.Show;
end;

Ahora me falta el caso de verificar si el edit esta en el extremo derecho. Si consigo hacerlo lo pondre tambien aqui por si es de utilidad a alguien.

Saludos
__________________
Caminante, son tus huellas el camino y nada más; Caminante, no hay camino, se hace camino al andar.
Antonio Machado
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Posicionar el Hint de un TListView en la posicion del raton aguml C++ Builder 8 01-11-2014 01:41:34
Ventana Emergente liito16 Varios 2 26-02-2011 00:44:27
Calcular posicion de formulario basada en control de otro ???? david_uh Varios 2 25-06-2008 02:46:07
Ventana Emergente G.A.R.S Gráficos 2 27-05-2005 04:41:23


La franja horaria es GMT +2. Ahora son las 23:18:56.


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
Copyright 1996-2007 Club Delphi