Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ¿como dibujar texto en un stringgrid? (https://www.clubdelphi.com/foros/showthread.php?t=86890)

JXJ 19-10-2014 01:36:25

¿como dibujar texto en un stringgrid?
 
Saludos

¿como se puede dibujar texto en un stringgrid?

quiero poner texto en una celda. que este a centrado a la mitad de la celda y poner en las esquinas de la celda otros texto.

Gracias.

ecfisa 20-10-2014 09:05:48

Hola JXJ
Cita:

Empezado por JXJ (Mensaje 483341)
¿como se puede dibujar texto en un stringgrid?

quiero poner texto en una celda. que este a centrado a la mitad de la celda y poner en las esquinas de la celda otros texto.

Un ejemplo:
Código Delphi [-]
...
implementation

type
  TFiveStr = record
    tleft, tright: string;
    middle       : string;
    bleft, bright: string;
  end;
  TFiveStrArray = array of TFiveStr;

var
  FiveArray: TFiveStrArray;

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  with StringGrid1 do
  begin
    ColCount:= 3;
    RowCount:= 6;
    for i:= FixedCols to ColCount-1 do ColWidths[i] := 100;
    for i:= FixedRows to RowCount-1 do RowHeights[i]:= 65;
    if FixedRows = 1 then
      Rows[0].CommaText:= 'Columna1,Columna2,Columna3';
    SetLength(FiveArray, RowCount + FixedRows);
    for i:= Low(FiveArray)+FixedRows to High(FiveArray) do
    begin
      FiveArray[i].tleft := Format('izq_arr %d',[i]);
      FiveArray[i].tright:= Format('der_arr %d',[i]);
      FiveArray[i].middle:= Format('centro: %d',[i]);
      FiveArray[i].bleft := Format('izq_abj %d',[i]);;
      FiveArray[i].bright:= Format('der_abj %d',[i]);;
    end;
  end;
end;

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  with Sender as TStringGrid do
    if (ACol = 1)and not(gdFixed in State) then
    begin
      Canvas.FillRect(Rect);
      DrawText(Canvas.Handle, PChar(FiveArray[ARow].tleft) , -1, Rect, DT_SINGLELINE+DT_LEFT+DT_TOP);
      DrawText(Canvas.Handle, PChar(FiveArray[ARow].tright), -1, Rect, DT_SINGLELINE+DT_RIGHT+DT_TOP);
      DrawText(Canvas.Handle, PChar(FiveArray[ARow].middle), -1, Rect, DT_SINGLELINE+DT_CENTER+DT_VCENTER);
      DrawText(Canvas.Handle, PChar(FiveArray[ARow].bleft) , -1, Rect, DT_SINGLELINE+DT_LEFT+DT_BOTTOM);
      DrawText(Canvas.Handle, PChar(FiveArray[ARow].bright), -1, Rect, DT_SINGLELINE+DT_RIGHT+DT_BOTTOM);
    end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  SetLength(FiveArray, 0);
end;

Salida:


Saludos :)

JXJ 21-10-2014 00:18:55

wowww

Gracias

ahora vere si le puedo poner color al fondo del texto..


La franja horaria es GMT +2. Ahora son las 15:20:36.

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