Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-04-2016
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 12
aguml Va por buen camino
Por cierto, esto que haces:
Código PHP:
 (LPARAM)(pt.65535 pt.x
Viene a ser lo mismo que hacer esto ¿no?:
Código PHP:
 (LPARAM)MAKELONG(pt.xpt.y
Por cierto en tu ejemplo saldría para todos los combobox del form pero en mi caso tengo dos forms y solo quiero ese comportamiento en uno por lo que supongo que teniendo el hWnd puedo obtener el nombre o el número de instancia para saber cual es ¿no?

Última edición por aguml fecha: 10-04-2016 a las 23:29:05.
Responder Con Cita
  #2  
Antiguo 10-04-2016
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 12
aguml Va por buen camino
Se me ocurre algo asi:
Código PHP:
TEdit= (TEdit*)FindControl(HWL);
if (
E->Name == "ComboBox1")
   ... 
Responder Con Cita
  #3  
Antiguo 11-04-2016
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 12
aguml Va por buen camino
La StatusBar la tengo de forma que muestra los hint de todos los componentes al ponerse encima así que creo que con cambiar el hint me valdría ¿no? Seria algo asi:
Código PHP:
void __fastcall TForm1::AppIdle(TObject *Senderbool &done)
{
TPoint pt;
HWND HWL;

GetCursorPos( &pt );
HWL WindowFromPointpt );

* if ( 
HWL != )
* {
*** 
char buff[128];
*** 
GetClassNameHWLbuffsizeofbuff ) );
*** if ( 
StrICompbuff"ComboLBox" ) == )
*** {
*******
TComboBoxCB = (TComboBox*)FindControl(GetParent(HWL)); 
********if (
CB->Name == "ComboBox1"){
*********** ::
ScreenToClientHWL, &pt );
*********** 
int inx LOWORDSendMessageHWLLB_ITEMFROMPOINT0, (LPARAM)MAKELONG(pt.xpt.y)) );

*********** if ( 
inx >= )
************** 
CB->Hint=ListaStrings[inx];
***** }
*** }
* }

Responder Con Cita
  #4  
Antiguo 11-04-2016
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.
Cita:
Empezado por aguml Ver Mensaje
Por cierto, esto que haces:
Código PHP:
 (LPARAM)(pt.65535 pt.x
Viene a ser lo mismo que hacer esto ¿no?:
Código PHP:
 (LPARAM)MAKELONG(pt.xpt.y
Si, es equivalente.


Cita:
Por cierto en tu ejemplo saldría para todos los combobox del form pero en mi caso tengo dos forms y solo quiero ese comportamiento en uno por lo que supongo que teniendo el hWnd puedo obtener el nombre o el número de instancia para saber cual es ¿no?
Se me ocurre que una forma sencilla de discriminarlo podría ser:
.h
Código PHP:
class TForm1 : public TForm
{
__published:
...
private:
  
bool FInCBox1;  
  
void __fastcall AppIdle(TObject *Senderbool &done);
... 
.cpp
Código PHP:
...
TStringsListaHints

void __fastcall TForm1::FormCreate(TObject *Sender)
{
  
Application->OnIdle AppIdle;
  ...
  
FInCBox1 false;
  
ListaHints = new TStringList;
  
ListaHints->Assign(ComboBox1->Items);
}

void __fastcall TForm1::AppIdle(TObject *Senderbool &done)
{
  
TPoint pt;
  
HWND HWL;

  
GetCursorPos( &pt );
  
HWL WindowFromPointpt );

  if ( 
HWL != )
  {
    
StatusBar1->SimpleText "";
    
char buff[128];
    
GetClassNameHWLbuffsizeofbuff ) );
    if ( 
StrICompbuff"ComboLBox" ) == 0)
    {
      if ( 
FInCBox1)
      {
        ::
ScreenToClientHWL, &pt );
        
int inx LOWORDSendMessageHWLLB_ITEMFROMPOINT0,
          (
LPARAM)(pt.65535 pt.x) ) );

        if ( 
inx >= )
          
StatusBar1->SimpleText ListaHints->Strings[inx];
      }
    }
  }
}

void __fastcall TForm1::ComboBox1DropDown(TObject *Sender)
{
  
FInCBox1 true;
}

void __fastcall TForm1::ComboBox1CloseUp(TObject *Sender)
{
  
FInCBox1 false;
}

...

void __fastcall TForm1::FormDestroy(TObject *Sender)
{
  
delete ListaHints;



Cita:
La StatusBar la tengo de forma que muestra los hint de todos los componentes al ponerse encima así que creo que con cambiar el hint me valdría ¿no?
Si.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 11-04-2016
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 12
aguml Va por buen camino
Ya solo me falta un detalle. Necesito tener un array de cadenas que sea accesible en mas de un sitio asi que lo que hago es esto:
private:
Código PHP:
static const AnsiString HintsMessages[18],HintsMessagesTypes[2]; 
Y en el constructor hago esto:
Código PHP:
__fastcall TForm1::TForm1(TComponentOwner)
   : 
TForm(Owner)
{
   
//Inicializo la cadena constante de validacion de entrada del teclado
   
GoodKey "0123456789abcdefABCDEF";

   const 
AnsiString TForm1::HintsMessages[18]={"Este mensaje activa la ventana.",
                    
"Este mensaje pone el foco en la ventana.",
                    
"Este mensaje quita el foco de la ventana.",
                    
"Este mensaje indica si se redibuja la ventana o no.",
                    
"Este mensaje se envia para preguntar a una ventana si se puede cerrar al cerrar sesión.",
                    
"Este mensaje se envia para indicar a una ventana que se va a cerrar sesión.",
                    
"Este mensaje envia un clic izquierdo.",
                    
"Este mensaje es el que se da al pulsar el botón izquierdo del ratón.",
                    
"Este mensaje es el que se da al soltar el botón izquierdo del ratón.",
                    
"Este mensaje es el que se da al hacer doble clic con el botón izquierdo del ratón.",
                    
"Este mensaje es el que se da al pulsar el botón derecho del ratón.",
                    
"Este mensaje es el que se da al soltar el botón derecho del ratón.",
                    
"Este mensaje es el que se da al hacer doble clic con el botón derecho del ratón.",
                    
"Este mensaje es el que se da al pulsar el botón central del ratón.",
                    
"Este mensaje es el que se da al soltar el botón central del ratón.",
                    
"Este mensaje es el que se da al hacer doble clic con el botón central del ratón.",
                    
"Este mensaje es el que se da al girar la rueda vertical del ratón.",
                    
"Este mensaje es el que se da al girar la rueda horizontal del ratón."};

   const 
AnsiString TForm1::HintsMessagesTypes[2]={"Esta opción espera la respuesta. El valor de retorno será la respuesta obtenida.",
                         
"Esta opción no espera respuesta alguna. Retorna 1 si se envió correctamente y 0 si falló."};

Lo que queria realmente es hacerlo con const char*name[] pero creo que sería aun mas complicado.
Con lo que tengo me da estos errores:
Cita:
[C++ Error] Main.cpp(26): E2089 Identifier 'HintsMessages' cannot have a type qualifier
[C++ Error] Main.cpp(45): E2089 Identifier 'HintsMessagesTypes' cannot have a type qualifier
Es que no me hace nada de gracia hacerlo con un TStrings y tener que añadir uno a uno. Por eso quiero hacerlo con un array, para inicializarlo de golpe todo.
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
combobox al seleccionar item, aparezca lista dependiendo item del primer combobox NovaV2 Varios 2 11-02-2016 02:28:08
Seleccionar item de ComboBox eennzzoo C++ Builder 4 23-06-2014 18:43:43
item de combobox abra nueva ventanita para agregar nuevo item al combobox Daniel10 OOP 2 03-05-2013 14:56:51
Seleccionar item de combobox forgiveness Conexión con bases de datos 1 16-11-2009 20:00:23
Seleccionar Item de ComboBox georgejg Varios 4 26-03-2008 16:43:03


La franja horaria es GMT +2. Ahora son las 01:55:20.


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