Ver Mensaje Individual
  #1  
Antiguo 08-02-2005
llonigualker llonigualker is offline
Miembro
 
Registrado: jul 2003
Posts: 67
Reputación: 21
llonigualker Va por buen camino
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;
y el codigo que antes funcionaba (graficamente) y me seleccionaba con la tecla el item

Código:
if key:=vk_space then
    begin    
        libros.itemindex:=Libros.itemindex+1;
        libros.selected[libros.itemindex]:=true;
    end;
Saludos y espero respuestas.
__________________
El que pregunta es tonto durante 5 minutos, el que no pregunta es tonto para toda su vida.
Responder Con Cita