Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   StringGrid (celda, con varias lineas) (https://www.clubdelphi.com/foros/showthread.php?t=32906)

Caro 20-06-2006 22:07:03

StringGrid (celda, con varias lineas)
 
Hola

Tengo un stringGrid donde la primera fila son los titulos los cuales asigno en tiempo de ejecución, pero si el titulo llegara a ser mas grande que el ancho de la celda se corta y no se puede ver lo que dice despues.
Como puedo hacer para que dicho texto de la celda del strigGrid, se ajuste al ancho de la celda, osea si ya llego al ancho, el resto del texto lo muestre en una segunda linea, podrian darme una idea de como realizarlo por favor, Muchisimas Gracias por adelantado.

Saludos

BlueSteel 20-06-2006 22:58:31

hola.. mira en una parte pude hacer que una celda (pero era de un DBGrid) me diera más de 1 línea en el caso de que sea un campo de tipo memo... el código es el siguiente

Código Delphi [-]
procedure TOrdenes.DBGrid2DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
var
  Str: string;
begin
  if (Column.Index = 1) then begin
    if Column.Field is TMemoField then begin
      Str := TBlobField(Column.Field).AsString;
      while Pos(#13, Str) > 0 do
        Str[Pos(#13, Str)] := ' ';
      while Pos(#10, Str) > 0 do
        Str[Pos(#10, Str)] := ' ';
      DbGrid2.Canvas.FillRect(Rect);
      DbGrid2.Canvas.TextOut(Rect.Left, Rect.Top, Str);
    end;
  end;
  // if (Column.Index = 4) then  DBGrid2.Canvas.TextOut(Rect.Left, Rect.Top, FormatFloat('#',IBQ_Items['DOr_Cantidad']*IBQ_Items['DOr_Valor_Unitario']));
end;

espero que te sirva

Caro 20-06-2006 23:13:48

Muchisimas Gracias BlueSteel, tambien lo iba a necesitar para un dbgrid, ahora ya lo tengo :D , gracias.

Estube buscando y encontre este codigo en el rinconcito de delphi y me ha funcionado como yo queria.

Código Delphi [-]
 
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
   Grid    : TStringGrid;
   Texto   : String;
begin
   Grid := TStringGrid(Sender);
   IF (ARow < Grid.FixedRows) or (ACol < Grid.FixedCols) THEN
     Grid.Canvas.Brush.Color := clBtnFace
   else
    Grid.Canvas.Brush.Color := clWhite;
   Grid.Canvas.FillRect(Rect);
   Texto := Grid.Cells[ACol,ARow];
   DrawText( Grid.Canvas.Handle,PChar(Texto),
             StrLen(PChar(Texto)),Rect,DT_WORDBREAK);
end;
....
procedure TForm1.FormCreate(Sender: TObject);
begin
   StringGrid1.Cells[2,1] := 'Ejemplo de celdas multilineas'+#13+
                                    'Example of multiline cells';
   StringGrid1.Options:= StringGrid1.Options+[goRowSizing,goColSizing];
end;

Aqui la dirección http://www.rinconcitodelphi.com/trucos/Compo16.htm

Casimiro Notevi 20-06-2006 23:58:24

Puedes mirar el truco 328 de Trucomanía, puede que saques alguna idea que te pueda valer también.


La franja horaria es GMT +2. Ahora son las 14:49:17.

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