StringGrid con múltiples lineas en lazarus (Soporta Caracteres latinos)

Para lograr que una instancia del componente StringGrid en Lazarus hacemos uso del evento DrawCell.

Básicamente lo que haremos es “dibujar” un cuadro sobre la celda en la que estemos trabajando o presentando el texto y colocamos en el el texto correspondiente  a  la celda.

Para lograr esto utilizamos el API de Windows (Estudiar DrawText).

Para mayor información ingresar a los links en el pie de este Post. 

procedure TForm1.StringGrid3DrawCell(Sender: TObject; aCol, aRow: Integer;
aRect: TRect; aState: TGridDrawState);

var
s: string;
drawrect : TRect;
begin
StringGrid3.Canvas.FillRect(aRect);
s := StringGrid3.Cells[ ACol, ARow ];
if Length(s) > 0 then //is there any text needing to be formatted?
begin
   drawrect := arect;
   DrawText(StringGrid3.canvas.handle,
   pchar(utf8toansi(s)), Length(utf8toansi(s)), drawrect,
   dt_calcrect or dt_wordbreak or dt_left ); //how to format the text
   if (drawrect.bottom – drawrect.top) > StringGrid3.RowHeights[ARow] then //Does the row height need to be  adjusted?
        StringGrid3.RowHeights[ARow] := (drawrect.bottom – drawrect.top)
   else
   begin
     drawrect.Right := arect.right;
     StringGrid3.canvas.fillrect( drawrect );
     DrawText(StringGrid3.canvas.handle,
     pchar(utf8toansi(s)), Length(utf8toansi(s)), drawrect,
    dt_wordbreak or dt_left );
    end;
end;end;

Basado en información de:

El Rinconcito de Delphi

http://foro.el-hacker.com/f57/creacion-de-componentes-en-delphi-421/

http://www.esanu.name/delphi/Components/TStringGrid/Allows%20word%20wrap%20in%20TStringGrid.html

http://www.grupoalbor.com/ideas/3-delphi/1163.html

http://www.delphipages.com/forum/archive/index.php/t-158743.html

http://www.clubdelphi.com/foros/showthread.php?t=78936

http://www.clubdelphi.com/foros/showthread.php?t=32906

 

Anuncios

Etiquetas: , , , , , , , , ,

About udiaz60

Ingeniero de Sistemas. Universidad Nacional Abierta y A Distancia, UNAD.

2 responses to “StringGrid con múltiples lineas en lazarus (Soporta Caracteres latinos)”

  1. Luis DeLeon says :

    Ulises a que correo te podriamos contactar?

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: