Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-05-2012
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Hola, yo no se si entiendo lo que quieres hacer, puede que en este hilo encuentres un poco de luz.

http://www.clubdelphi.com/foros/showthread.php?t=26354

Saludos.
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
  #2  
Antiguo 17-05-2012
BrunoBsso BrunoBsso is offline
Miembro
 
Registrado: nov 2009
Ubicación: Berisso, Buenos Aires, Argentina
Posts: 239
Poder: 15
BrunoBsso Va por buen camino
Cita:
Empezado por ElDioni Ver Mensaje
Hola, yo no se si entiendo lo que quieres hacer, puede que en este hilo encuentres un poco de luz.

http://www.clubdelphi.com/foros/showthread.php?t=26354

Saludos.
Gracias ElDioni, pero lo que yo necesito es conocer el tipo de campo en una aplicación externa, y eso es para la aplicación propia.
El tema sería yo tengo mi aplicación A y además está abierta la aplicación B que no es mía.
Yo desde A hago que el cursor se posicione sobre un campo de texto en B, se hace doble click y por teoría el campo B.CampoDeTexto debe quedar seleccionado. La idea sería poder hacer A.IsCampoTexto(B.CampoFocuseado) para asegurarme que la ventana no se movió, que la velocidad de conexión no hizo que se "perdiera" el doble click y que el campo no se haya seleccionado, etc.
Voy a ver si encuentro alguna manera de hacer eso mediante el handle (que lo tengo).

Saludos.
Responder Con Cita
  #3  
Antiguo 17-05-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿No te serviria usar GetFocus() para encontrar la ventana con el foco y luego GetClassName para encontrar el nombre de la clase de dicha ventana ?

// Saludos
Responder Con Cita
  #4  
Antiguo 17-05-2012
BrunoBsso BrunoBsso is offline
Miembro
 
Registrado: nov 2009
Ubicación: Berisso, Buenos Aires, Argentina
Posts: 239
Poder: 15
BrunoBsso Va por buen camino
Cita:
Empezado por roman Ver Mensaje
¿No te serviria usar GetFocus() para encontrar la ventana con el foco y luego GetClassName para encontrar el nombre de la clase de dicha ventana ?

// Saludos
La ventana sé 100% que está focuseada, porque la abro yo programáticamente y además hice un método WaitUntilWindowOpen que me avisa cuando está abierta. Además, tengo el handle de la ventana siempre a mano. ¿Con GetClassName no obtendría solamente el nombre de la clase de la ventana? Yo necesito saber si el componente actual donde esté seteado el foco es un componente de texto o no.
La ventana que se abre tiene un campo tipo TEdit para "Nombre", un campo tipo TMemo para "Descripción", uno tipo TMemo para "Resultados" y tres botones. Yo sé que posiciono el cursor sobre el campo "Descripción" porque al hacer SetCursorPos(X,Y) uso otro método WaitUntilCursorPos(X, Y) para validarlo. Luego de eso simulo un doble click. El asunto es que no tengo un "WaitUntilTextAreaFocused", que eso sería lo que necesito. Al hacer el doble click (el campo ese de texto se activa con doble click) no tengo la certeza de que se hayan efectuado correctamente los 2 clicks, no tengo la certeza de que en esa ventana el foco esta seteado en ese componente.
Creo que no se entiende porque mientras lo escribo me parece que no puedo dejarlo claro jaja

Saludos.
Responder Con Cita
  #5  
Antiguo 17-05-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Un Edit también es una ventana. De hecho, todo TWinControl es una ventana, y sólo una ventana puede tener el foco. Entonces, si tienes un formulario con un Edit dentro y seleccionas éste, la ventana con el foco es el Edit, no el formulario.

Haz la prueba, poniendo este código en un SpeedButton (para que el clic en el botón no te mueva el foco):

Código Delphi [-]
var
  Buffer: array[Byte] of Char;

begin
  ZeroMemory(@Buffer, SizeOf(Buffer));
  GetClassName(GetFocus(), Buffer, 255);
  ShowMessage(Buffer);
end;

Verás que el nombre de lcase que obtienes es el del control seleccionado.

// Saludos
Responder Con Cita
  #6  
Antiguo 17-05-2012
BrunoBsso BrunoBsso is offline
Miembro
 
Registrado: nov 2009
Ubicación: Berisso, Buenos Aires, Argentina
Posts: 239
Poder: 15
BrunoBsso Va por buen camino
Cita:
Empezado por roman Ver Mensaje
Un Edit también es una ventana. De hecho, todo TWinControl es una ventana, y sólo una ventana puede tener el foco. Entonces, si tienes un formulario con un Edit dentro y seleccionas éste, la ventana con el foco es el Edit, no el formulario.

Haz la prueba, poniendo este código en un SpeedButton (para que el clic en el botón no te mueva el foco):

Código Delphi [-]
var
  Buffer: array[Byte] of Char;

begin
  ZeroMemory(@Buffer, SizeOf(Buffer));
  GetClassName(GetFocus(), Buffer, 255);
  ShowMessage(Buffer);
end;

Verás que el nombre de lcase que obtienes es el del control seleccionado.

// Saludos
En este momento no puedo, pero ni bien pueda lo pruebo. No tenía idea que todo TWinControl era una ventana, me dejaste pasmado.
Mil gracias roman!
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
abrir aplicación externa desde delphi y detectar su cierre petete2008 API de Windows 2 10-02-2012 11:44:23
Ejectuando una aplicacion externa jandrorm Varios 5 09-02-2011 16:13:56
Manipular aplicación externa oabel5 API de Windows 30 27-05-2010 07:04:41
Aplicacion externa a c++ alloger C++ Builder 1 28-10-2006 00:37:09
Manipular una aplicacion externa lookmydoom API de Windows 2 09-08-2006 22:22:52


La franja horaria es GMT +2. Ahora son las 04:40:39.


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