FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Item selecionado en un Tlistbox
Hola a todos:
Utilizo un listbox para mostrar unos textos y el usuario final pueda elegir el que le apetezca. Tengo una tecla habilitada (la barra espaiadora) para que el usuario al pulsarla se vaya seleccionando el siguiente y asi hasta llegar al final (tambien puede utilizar el raton) Hasta ahí, fenomenal. Funcionaba. Se me ocurrió cambiar el color de las filas (pares e impares) para darle mejor aparienia y el texto de los items de un color u otro segun cumplen determinadas condiciones. Cojonudo. Funcionaba. Ahora el problema es que al pulsar la barra espaciadora no se queda nada selecionado (graficamente) pero al pulsar el raton si me remarca toda la linea del item. Como puedo hacer para que con la tecla se quede seleccionado igual que el pinchar con el raton? Os mando el codigo que he utilizado en la funcion drawitem: Código:
procedure TForm1.LibrosDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); begin with (Control as TListBox) do begin if Odd(Index) then begin if libroencontra[index+1]=0 then begin //Canvas.Font.Style:=fsbold; Canvas.Font.Color:=clblack; end; if (libroencontra[index+1]=1) and (librocomple[index+1]=0) then begin //Canvas.Font.Style:=fsbold; Canvas.Font.Color:=clblue; end else if (libroencontra[index+1]=1) and (librosi[index+1]=1) then begin //Canvas.Font.Style:=fsbold; Canvas.Font.Color:=clred; end else if (libroencontra[index+1]=1) and (librosi[index+1]=0) then begin //Canvas.Font.Style:=fsbold; Canvas.Font.Color:=clgreen; end; Canvas.Brush.Color:=$00EDD8C9; end else begin if libroencontra[index+1]=0 then begin //Canvas.Font.Style:=fsbold; Canvas.Font.Color:=clblack; end; if (libroencontra[index+1]=1) and (librocomple[index+1]=0) then begin //Canvas.Font.Style:=fsbold; Canvas.Font.Color:=clblue; end else if (libroencontra[index+1]=1) and (librosi[index+1]=1) then begin //Canvas.Font.Style:=fsbold; Canvas.Font.Color:=clred; end else if (libroencontra[index+1]=1) and (librosi[index+1]=0) then begin //Canvas.Font.Style:=fsbold; Canvas.Font.Color:=clgreen; end; Canvas.Brush.Color:=$00F4E8DD; //Canvas.Brush.Color:=$00DB9175; end; Canvas.FillRect(Rect); Canvas.TextOut(Rect.Left,Rect.Top,Items[Index]); end; end; Código:
if key:=vk_space then begin libros.itemindex:=Libros.itemindex+1; libros.selected[libros.itemindex]:=true; end;
__________________
El que pregunta es tonto durante 5 minutos, el que no pregunta es tonto para toda su vida. |
#2
|
||||
|
||||
Para empezar, me puedes confirmar que realmente te funciona este parte del código:
El código pegado tiene un error: f key := vk_space then //aquí le sobran los : Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#3
|
|||
|
|||
Cierto, los dos puntos sobran (error de imprenta)
Utilizo delphi 6 y lo del selected si que te lo admite.
__________________
El que pregunta es tonto durante 5 minutos, el que no pregunta es tonto para toda su vida. |
#4
|
||||
|
||||
Comprobado que con D7 funciona, ahora bien, no puedo compilar porque me falta LibroEncontra, puedes poner todo el código para hacer una prueba?
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
|
|
|