Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   hints con item en lista !!!!!! (https://www.clubdelphi.com/foros/showthread.php?t=45798)

david_uh 13-07-2007 20:37:18

hints con item en lista !!!!!!
 
buen día caballeros

tengo una lista con varios items deseo que al seleccionarse un item parezca una etiqueta (hint) diferente por cada item, vi ese truco en algun lugar pero por mas que busco no lo encuentro

gracias por sus aportes

roman 13-07-2007 20:42:40

Quizá te sirve ver mi componente TComboHintsBox . Aunque no lo he probado, pienso que debería ser incluso más sencillo con un ListBox. En todo caso, el ejemplo puede servirte para ver como desplegar tus propios hints.

// Saludos

cHackAll 13-07-2007 20:43:47

Código Delphi [-]
procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
 ListBox1.Hint := ListBox1.Items[(Y - 1) div ListBox1.ItemHeight];
 Application.ActivateHint(Mouse.CursorPos);
end;

0j0: ListBox1.ShowHint := True;

david_uh 13-07-2007 20:52:33

bien ahi, funciona si pongo el mouse desearia que trabaje con el elemento seleccionado ya sea que este seleccionado por teclado o por instruccuines del programa , es decir que la etiqueta aparezca encima o debajo de el elemento seleccionado

gracias por tu ayuda

cHackAll 13-07-2007 21:34:38

Código Delphi [-]
procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
 if ListBox1.ItemIndex <> -1 then
  begin
   ListBox1.Hint := ListBox1.Items[ListBox1.ItemIndex];
   Application.ActivateHint(Mouse.CursorPos);
  end;
end;
 
procedure TForm1.ListBox1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
 if Key in [VK_PRIOR..VK_DOWN] then
  begin
   Mouse.CursorPos := ListBox1.ClientToScreen(Point(ListBox1.Width div 2, (ListBox1.ItemIndex * ListBox1.ItemHeight) + (ListBox1.ItemHeight div 2)));
   ListBox1MouseMove(Sender, [], 0, 0);
  end;
end;

No está en el OnKeyDown (pues se vería mejor), porque aún no habría actualizado el ItemIndex... ahora de poder se puede.

david_uh 13-07-2007 23:24:48

pues nada, al seleccionar un elemento con el teclado desaparece el cursor del mouse, es decir se va a al parte inferior de la pantalla

david_uh 13-07-2007 23:47:24

bien lo solucione poniendole a la cordenada y el valor del top de la lista

gracias sirvio de mucho

cHackAll 14-07-2007 00:12:06

Cita:

Empezado por david_uh
...lo solucione poniendole a la cordenada y el valor del top de la lista..

Me alegra que te haya servido, pero me parece que tu solicion a la nueva eventualidad no es la adecuada (anti estética)... prueba reemplazar con ésto:

Código Delphi [-]
   Mouse.CursorPos := ListBox1.ClientToScreen(Point(ListBox1.Width div 2, ((ListBox1.ItemIndex - Windows.GetScrollPos(ListBox1.Handle, SB_VERT)) * ListBox1.ItemHeight) + (ListBox1.ItemHeight div 2)));


La franja horaria es GMT +2. Ahora son las 18:46:08.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi