Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-10-2017
SaraTorres SaraTorres is offline
Miembro
 
Registrado: sep 2017
Posts: 25
Poder: 0
SaraTorres Va por buen camino
Obtener el ancho y alto de la ventana

Hola chicos
Me he matado buscando cómo usar la función: GetWindowRect()
lo que pasa es que quiero obtener el ancho y alto de la ventana
pero no logro hacerlo. Sólo puedo obtener las coordenadas pero no el tamaño.

Si alguien me comparte el código, se lo agradecería de antemano.
Cuídense
Responder Con Cita
  #2  
Antiguo 02-10-2017
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
A partir de la solución que se muestra por ejemplo en este hilo, puedes hacer algo como esto:

1) Crea un proyecto VCL nuevo
2) Coloca un Timer
3) Programa los eventos OnCreate y OnTimer con lo siguiente:

Código Delphi [-]
procedure TForm2.FormCreate(Sender: TObject);
begin
  VMess := FindWindow('Notepad', nil);
  Timer1.Interval := 50;
end;

procedure TForm2.Timer1Timer(Sender: TObject);
var
  Tam: TRect;
begin
  if vMess <> 0 then begin
    GetWindowRect(VMess, Tam);
    Self.Caption := 'Posición: ' + InttoStr(Tam.Left) + ' ; ' + IntToStr(Tam.Top) + ' - '
                    +'Tamaño: ' + IntToStr(Tam.Right - Tam.Left) + 'x' + IntToStr(Tam.Bottom - Tam.Top);
  end
end;

4) La variable debe estar definida como (global o como propiedad):

Código Delphi [-]
var
  VMess : HWND;

Debería resultar algo así:

__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 02-10-2017
SaraTorres SaraTorres is offline
Miembro
 
Registrado: sep 2017
Posts: 25
Poder: 0
SaraTorres Va por buen camino
Dimensiones diferentes

Cita:
Empezado por Neftali Ver Mensaje
A partir de la solución que se muestra por ejemplo en este hilo, puedes hacer algo como esto:
Muchas gracias Neftali
El código funciona pero tengo una ventana de 640x480 y las nuevas
dimensiones que me da son: 656x519

Hay alguna manera para conseguir sólo el área de la ventana (client area)?
Saludos
Responder Con Cita
  #4  
Antiguo 02-10-2017
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Puedes utilizar la API GetClientRect.
Sustituye el código anterior por este:
Código Delphi [-]
  if vMess <> 0 then begin
    GetWindowRect(VMess, Tam);
    Self.Caption := 'Posición: ' + InttoStr(Tam.Left) + ' ; ' + IntToStr(Tam.Top) + ' - '
                    +'Tamaño: ' + IntToStr(Tam.Right - Tam.Left) + 'x' + IntToStr(Tam.Bottom - Tam.Top);

    WINAPI.Windows.GetClientRect(VMess, TamClient);
    Self.Caption := Self.Caption + ' -  Cliente => ' +
                    'Posición: ' + InttoStr(TamClient.Left) + ' ; ' + IntToStr(TamClient.Top) + ' - '
                    +'Tamaño: ' + IntToStr(TamClient.Right - TamClient.Left) + 'x' + IntToStr(TamClient.Bottom - TamClient.Top);

  end
  else begin
    Self.Caption := 'Ventana de  no encontrada';
  end;

Si repites el ejemplo obtendrás esto:




Para una ventana de 640x480 su área cliente es: 624x421, que parece bastante lógico.
La diferencia de ancho son 16 pixels (de los bordes decho e izquierdo) y la diferencia de alto es 59 (del borde inferior y del título y del menú).
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 02-10-2017
SaraTorres SaraTorres is offline
Miembro
 
Registrado: sep 2017
Posts: 25
Poder: 0
SaraTorres Va por buen camino
Cita:
Empezado por Neftali Ver Mensaje
Puedes utilizar...
Eres un Neftalí... gracias por tu gran apoyo a la comunidad.
Muchos saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Ajustar ancho y alto una celda de excel pollo_c C++ Builder 5 05-09-2017 08:20:37
ancho y alto de una fuente jceluce OOP 0 12-01-2009 12:23:21
Conocer el ancho y el alto de la taskbar. Negriz C++ Builder 2 21-12-2008 18:44:58
Cómo cambiar el ancho y alto de una fuente jceluce OOP 0 05-11-2008 22:16:09
ComboBox ajustable al ancho de ventana Sr_Sombrero OOP 3 17-08-2007 16:55:38


La franja horaria es GMT +2. Ahora son las 13:16:25.


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