Ir al contenido



Foto

ListBox con líneas de colores


Mejor respuesta Ricard , 23 marzo 2019 - 06:09

Buenas , aqui dejo el codigo:
 
 

 

delphi
  1. procedure TFVistames.ListBox2DrawItem(Control: TWinControl; Index: Integer;
  2.   ARect: TRect; State: TOwnerDrawState);
  3. var
  4.    color1 :  TColor;
  5. begin
  6.    color1:=fdatamodul1.QActivitatsColorActivitat.AsInteger;
  7.   with (Control as TListBox).Canvas do 
  8.   begin
  9.     FillRect(ARect);
  10.      color1 := TColor((Control as TListBox).Items.Objects[Index]);
  11.         font.Color:= color1;
  12.     TextOut(ARect.Left, ARect.Top, (Control as TListBox).Items[Index]);
  13.   end;
  14. end;
  15.       

Ir al mensaje completo


  • Por favor identifícate para responder
4 respuestas en este tema

#1 Ricard

Ricard

    Newbie

  • Miembros
  • Pip
  • 8 mensajes

Escrito 16 marzo 2019 - 05:51

Buenas nochesm estoy usando unos listbox para enseñar unos registros de SQLite, he visto muchos ejemplos, pero cuando entro el segundo item, el primero también cambia de color.
He probado varios ejemplos y todos fallan.
Adjunto código:
 
 

 


delphi
  1. procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  2.   ARect: TRect; State: TOwnerDrawState);
  3. begin
  4.   with (Control as TListBox).Canvas do // draw on control canvas, not on the form
  5.     begin
  6.         Font.Color :=ZTable1ColorActivitat.Value ;
  7.         FillRect(ARect);
  8.       TextOut(ARect.Left, ARect.Top, (Control as TListBox).Items[Index]);
  9.     end;
  10. end;

 

 
El primer item que añado(ListBox1.Items.Add('hola'); Bien si añado otro item, el primero también se pone del color del ultimo añadido.
 
Creo que los ejemplos que hay el foro, les pasa lo mismo.
 
Si podéis ayudarme os estaré muy agradecido-
Saludos.


  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.012 mensajes
  • LocationMéxico

Escrito 19 marzo 2019 - 08:34

Hola Ricard

 

Yo creo que hay un problema de lógica aquí, si quieres que solo el registro nuevo tenga un color diferente o supongo que cuando cambias de item haga lo mismo, se debe contemplar obtener el color anterior para asignarlo al registro que deja de tener el foco ¿No?

 

Saludos


  • 0

#3 Ricard

Ricard

    Newbie

  • Miembros
  • Pip
  • 8 mensajes

Escrito 19 marzo 2019 - 03:27

Gracias por responder, pero creo que tengo la solución.

ListBox2.Items.AddObject('item', TObject(x)); Donde x es una variable TColor, que voy cambiando, sin alterar los items que a he ingresado.

 

Saludos.


  • 1

#4 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.012 mensajes
  • LocationMéxico

Escrito 19 marzo 2019 - 06:31

Gracias por responder, pero creo que tengo la solución.

ListBox2.Items.AddObject('item', TObject(x)); Donde x es una variable TColor, que voy cambiando, sin alterar los items que a he ingresado.

 

Saludos.

 

Que bien, si así te funciona y nos proporcionas el código como quedó finalmente, podemos poner el hilo como Resuelto para futuras consultas.

 

Saludos


  • 0

#5 Ricard

Ricard

    Newbie

  • Miembros
  • Pip
  • 8 mensajes

Escrito 23 marzo 2019 - 06:09   Mejor respuesta

Buenas , aqui dejo el codigo:
 
 

 

delphi
  1. procedure TFVistames.ListBox2DrawItem(Control: TWinControl; Index: Integer;
  2.   ARect: TRect; State: TOwnerDrawState);
  3. var
  4.    color1 :  TColor;
  5. begin
  6.    color1:=fdatamodul1.QActivitatsColorActivitat.AsInteger;
  7.   with (Control as TListBox).Canvas do 
  8.   begin
  9.     FillRect(ARect);
  10.      color1 := TColor((Control as TListBox).Items.Objects[Index]);
  11.         font.Color:= color1;
  12.     TextOut(ARect.Left, ARect.Top, (Control as TListBox).Items[Index]);
  13.   end;
  14. end;
  15.       


  • 1