Ver Mensaje Individual
  #13  
Antiguo 26-11-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Reputación: 24
Caro Va por buen camino
Hola de nuevo, perdon no había visto sus respuestas, muchas gracias por responder Mayanes y Lepe, si funciona, el error que estaba cometiendo era que mis items del ListBox estan cargados desde diseño y de esa forma no se asignan bien los tamaños, si se carga en ejecución los items funciona perfecto. Aplicando al ejemplito de mi primer mensaje y haciendo algunas modificaciones según lo que he visto en sus codigos quedaría así:

Código Delphi [-]
procedure TForm1.ListBox1MeasureItem(Control: TWinControl; Index: Integer;
  var Height: Integer);
begin
 if ListBox1.items.Count>0 then
  begin
   if (Index=1) or (Index=4) then
    ListBox1.Canvas.Font.Size := 10
   else
    ListBox1.Canvas.Font.Size := 20;
 
   Height := ListBox1.Canvas.TextHeight(ListBox1.items[index]);
  end;
end;
 
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
 if ListBox1.items.Count>0 then
  begin
   if (Index=1) or (Index=4) then
    begin
     ListBox1.Canvas.Font.Name := 'verdana';
     ListBox1.Canvas.Font.Size := 10;
    end
   else
    begin
     ListBox1.Canvas.Font.Name := 'vivian';
     ListBox1.Canvas.Font.Size := 20;
    end;
   ListBox1.Canvas.FillRect(Rect);
   ListBox1.Canvas.TextOut(Rect.Left, Rect.Top, ListBox1.Items[index]);
  end;
end;

Como dije, si se cargan los items en ejecución funciona bien, pero si ya estan cargados los items en dideño, no funciona se sigue cortando el texto, aunque se ejecute dichos eventos. Ahora si hago esto

Código Delphi [-]
 //Enviamos el mensaje de repintar al ListBox
 ListBox1.Perform(WM_Paint, ListBox1.Canvas.Handle, 0);

Si se ve correctamente, pero cuando se selecciona un item sigue con el tamaño del principio y se sobrepone todo.

Pueden hacer la prueba por favor y como sería para solucionar que se de la altura correcta aunque ya este en diseño.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita