Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   TListBox texto una fila con color (https://www.clubdelphi.com/foros/showthread.php?t=62153)

blacktoroII 06-12-2008 03:33:41

TListBox texto una fila con color
 
Alguin sabe como poner una cadena de una fila de un ListBox con otra fuente y color como en un richedit. O como se puede seleccionar la linea completa en un richedit con el teclado...

ejemplo :

Items 1 : alberto toro

Gracias.

Caro 08-12-2008 16:12:12

Cita:

Empezado por blacktoroII (Mensaje 329993)
Alguin sabe como poner una cadena de una fila de un ListBox con otra fuente y color como en un richedit.

Items 1 : alberto toro

Hola blacktoroII y bienvenido, sobre tu pregunta tendrías que hacerlo pintando a mano, paar eso debes utilizar el evento OnDrawItem y colocar la propiedad Style en lbOwnerDrawFixed todo eso del ListBox.


Esto funciona en el ejemplo que das, tu tienes que aumentar tus condiciones.

Código Delphi [-]
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
var
 Texto : String;
begin
  Texto := ListBox1.Items[index];
  With ListBox1 do
   begin
    Canvas.Brush.Color := clWhite;
    Canvas.FillRect(Rect);
 
    Canvas.Font.Color := clBlack;
    Canvas.TextOut(Rect.Left, Rect.Top, Copy(Texto, 1, 2));
 
    Canvas.Font.Name := 'verdana';
    Canvas.Font.Style := [fsItalic];
    Canvas.Font.Color := clBlue;
    Canvas.TextOut(Rect.Left+8, Rect.Top, Copy(Texto, 3, 3));
 
    Canvas.Font.Style := [];
    Canvas.Font.Color := clBlack;
    Canvas.TextOut(Rect.Left+26, Rect.Top, Copy(Texto, 6, Length(Texto)));
   end;
end;

Saluditos

Caro 08-12-2008 17:18:46

Cita:

Empezado por blacktoroII (Mensaje 329993)
O como se puede seleccionar la linea completa en un richedit con el teclado...

Para seleccionar la línea completa lo puedes hacer de esta forma:

Código Delphi [-]
procedure TForm1.RichEdit1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
 Indice, LineaActual : Integer;
begin
 if (Key=vk_Up) or (Key=vk_down) then
  begin
   LineaActual := RichEdit1.Perform(EM_LINEFROMCHAR, RichEdit1.SelStart, 0);
   Indice := RichEdit1.Perform(EM_LINEINDEX, LineaActual, 0);
   RichEdit1.SelStart:= Indice;
   RichEdit1.SelLength := Length(RichEdit1.Lines[lineaActual]);
  end;
end;

Saluditos

blacktoroII 08-12-2008 17:49:45

Gracias
 
Gracias por la respuesta,, necesitaba imitar las busquedas de gmail , donde pones un string y te despliega un listbox con los posibles correos que tienes en tu lista, con el richedit lo logro hacer y me faltaba seleccionar la linea. Solo me falta cambiar el color de la seleccion que lo hace en clBlack pero es un detalle,,, Gracias.


La franja horaria es GMT +2. Ahora son las 02:17:59.

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