Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-02-2005
llonigualker llonigualker is offline
Miembro
 
Registrado: jul 2003
Posts: 67
Poder: 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
  #2  
Antiguo 08-02-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Para empezar, me puedes confirmar que realmente te funciona este parte del código:
Código Delphi [-]
 procedure TForm1.LibrosKeyDown(Sender: TObject; var Key: Word;
   Shift: TShiftState);
 begin
 ShowMessage(IntToStr(Libros.ItemIndex));
   if key = vk_space then
     begin
         libros.itemindex:=Libros.itemindex+1;
         //libros.selected[libros.itemindex]:=true;
 {Esta propiedad es de consulta y me da error}
     end;
 end;
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:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 08-02-2005
llonigualker llonigualker is offline
Miembro
 
Registrado: jul 2003
Posts: 67
Poder: 21
llonigualker Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 09-02-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
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:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
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


La franja horaria es GMT +2. Ahora son las 16:38:00.


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