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 Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-10-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Posicionar el Hint de un TListView en la posicion del raton

Hola amigos, quiero que al colocarme en una fila del ListView me aparezca el InfoTip o Hint para cada fila pero en la posicion del raton ya que me aparece pero en la primera columna aunque el raton este en la ultima columna de esa fila.
Buscando por internet encontré esto que se supone que haria lo que yo quiero pero no se porque ni siquiera entra en el evento OnOver del TListView.
Código PHP:
void __fastcall TForm1::ListViewProcesosInfoTip(TObject *Sender,
      
TListItem *ItemAnsiString &InfoTip)
{
   
InfoTip Item->SubItems->Strings[4];
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ListViewProcesosMouseMove(TObject *Sender,
      
TShiftState Shiftint Xint Y)
{
   
TPoint pt;
   
TLVHitTestInfo lvHitInfo;
   
AnsiString hint;

   
pt ListViewProcesos->ScreenToClient(Mouse->CursorPos);

   
memset(&lvHitInfo0sizeof(lvHitInfo));
   
lvHitInfo.pt pt;

   
//over a sub item!
   
if( -!= ListViewProcesos->Perform(LVM_SUBITEMHITTEST0, (int)&lvHitInfo))
   {
      
//activate hint
      
hint ListViewProcesos->Items->Item[lvHitInfo.iItem]->SubItems->Strings[4];
      
ListViewProcesos->Hint hint;
      
Application->ActivateHint(Mouse->CursorPos) ;
   }
}
//--------------------------------------------------------------------------- 
¿Alguien sabe como hacer eso?
Responder Con Cita
  #2  
Antiguo 30-10-2014
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.195
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Revisa el evento TApplication::OnShowHint

Saludos.
Responder Con Cita
  #3  
Antiguo 30-10-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
ok pero ¿Por que puede ser que no entre al evento onover del tlistview?
Responder Con Cita
  #4  
Antiguo 30-10-2014
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.195
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Ese evento no lo tiene el TListView de mi Builder C++ 6

Saludos.
Responder Con Cita
  #5  
Antiguo 30-10-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
perdon, quise decir OnMouseMove
Responder Con Cita
  #6  
Antiguo 31-10-2014
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.195
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Pues ese evento funciona perfectamante. Mira a ver si lo tienes bien asignado en el inspector de objetos.


Saludos.
Responder Con Cita
  #7  
Antiguo 31-10-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Pues si, entra en ese evento lo que pasa es que como la funcion es cerrada pues no me daba cuenta. El problema es que sigue sin posicionar el hint donde yo quiero.
Otra cuestion, ¿Y si quiero que muestre el hint solo y unicamente cuando esté sobre los items de la primera columna? Es la que tiene el nombre de archivo y es donde quiero que al ponerme encima del nombre me muestre el nombre con ruta completa pero al ponerme en otra columna no quiero que salga.

Edito:
Lo ultimo que pedia lo he conseguido así:
Código SQL [-]
void __fastcall TForm1::ListViewProcesosInfoTip(TObject *Sender,
      TListItem *Item, AnsiString &InfoTip)
{
   if(ocultarHint == true)
      InfoTip = "";
   else
      InfoTip = Item->SubItems->Strings[4];
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ListViewProcesosMouseMove(TObject *Sender,
      TShiftState Shift, int X, int Y)
{
   TPoint pt;
   TLVHitTestInfo lvHitInfo;
   AnsiString hint;

   pt = ListViewProcesos->ScreenToClient(Mouse->CursorPos);

   memset(&lvHitInfo, 0, sizeof(lvHitInfo));
   lvHitInfo.pt = pt;

   //over a sub item!
   if( -1 != ListViewProcesos->Perform(LVM_SUBITEMHITTEST, 0, (int)&lvHitInfo) &&
      pt.x < ListViewProcesos->Columns->Items[0]->Width)
   {
      ocultarHint = false;
   }else{
      ocultarHint = true;
   }
}
//---------------------------------------------------------------------------
Pero sigo interesado en lo de hacer que el hint aparezca en la posicion que yo desee.

Última edición por aguml fecha: 31-10-2014 a las 22:54:24.
Responder Con Cita
  #8  
Antiguo 01-11-2014
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.195
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
OnShowHint te permite variar la posición del hint.

Saludos.
Responder Con Cita
  #9  
Antiguo 01-11-2014
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.195
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
De la ayuda de Builder:

Código PHP:
void __fastcall TForm1::DoShowHint(System::AnsiString &HintStrbool &CanShowTHintInfo &HintInfo)
{
  if (
HintInfo.HintControl == SpeedButton3
  {
    
HintInfo.HintColor clAqua;// Changes only for this hint
    
HintInfo.HintMaxWidth 120// Hint text word wraps if width is greater than 120
    
HintInfo.HintPos.+= SpeedButton3->Width// Move hint to right edge
  
}
}

void __fastcall TForm1::FormCreate(TObject *Sender)
{
  
Application->ShowHint true;
  
Application->OnShowHint DoShowHint;

Para obtener la posición del ratón en coordenadas relativas a la pantalla lo haces con la API GetCursorPos
Para convertir esas coordenadas a relativas de una ventana usa ScreenToClient


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
Posicionar Raton en DIV web Furyxe Delphi para la web 3 17-12-2012 16:38:35
TListView No Sensible Al Ratón calogero API de Windows 2 11-02-2007 14:11:20
TListView No Sensible al ratón calogero Varios 1 11-02-2007 11:52:18
Posicionar el ratón en un determinado punto del Form Neftali [Germán.Estévez] Trucos 0 30-06-2006 12:38:19
Posición del ratón en la pantalla chutipascal API de Windows 3 06-10-2003 20:41:03


La franja horaria es GMT +2. Ahora son las 11:16:34.


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