Buen día Compañeros.
Vengo con otra duda. ¿De qué manera se puede alinear el texto de una celda del componente TStringrid de FireMonkey?
Gracias de antemano,
Posted 14 June 2016 - 08:15 AM
Buen día Compañeros.
Vengo con otra duda. ¿De qué manera se puede alinear el texto de una celda del componente TStringrid de FireMonkey?
Gracias de antemano,
Posted 14 June 2016 - 02:10 PM
A ver que tal de esta manera:
procedure TForm1.FormCreate(Sender: TObject); begin StringGrid1.DefaultDrawing := False; end; procedure TForm1.StringGrid1DrawColumnCell(Sender: TObject; const Canvas: TCanvas; const Column: TColumn; const [Ref] Bounds: TRectF; const Row: Integer; const [Ref] Value: TValue; const State: TGridDrawStates); begin Canvas.Fill.Color := StringGrid1.TextSettings.FontColor; if Column.Index = 0 then begin if Odd(Row) then Canvas.FillText(Bounds, Value.AsString, True, 1, [], TTextAlign.Center) else Canvas.FillText(Bounds, Value.AsString, True, 1, [], TTextAlign.Trailing); end else begin if Odd(Row) then Canvas.FillText(Bounds, Value.AsString, True, 1, [], TTextAlign.Trailing) else Canvas.FillText(Bounds, Value.AsString, True, 1, [], TTextAlign.Leading); end; end;
Edited by Agustin Ortu, 14 June 2016 - 02:10 PM.
Posted 15 June 2016 - 09:10 AM
Busqué el evento DrawColumnCell en el StringGrid pero no lo tiene. Probablemente no esté soportado ese evento en Firemonkey
Posted 15 June 2016 - 09:42 AM
Edited by Agustin Ortu, 15 June 2016 - 09:46 AM.
Posted 15 June 2016 - 10:22 AM
Estoy usando Delphi XE5 compañero...
Posted 15 June 2016 - 12:50 PM
FireMonkey por ser relativamente nuevo (al menos en delph) se ha ido modificando bastante y entre versión y versión hay cosas que no existen, pero es para bien.
Saludos.
Posted 15 June 2016 - 01:17 PM
Por lo que he estado leyendo, la gente no se cansa de decir que antes de XE7, Firemonkey es una "beta". Fue recien a partir de XE7 que se ha vuelto mas estable y robusto.No solo el framework en si, sino tambien la comunidad. Me imagino que hace unos años era mas dificil encontrar recursos en firemonkey
Hoy esta un poco mejor
Lo unico que se me ocurre decirte poly es que uses otro control. Los grid en firemonkey estan compuestos basicamente por otros controles. Estos controles se crean con un metodo protegido de clase, que se llamaba algo asi como CreateCellControl. Este metodo devuelve un objeto TTextObject si mal no recuerdo, o un TStyledControl que contiene justamente on TTextObject. El problema es que todos las celdas se crean igual, asi que si redefines este metodo para que devuelva otro tipo de celda, para cada celda el grid va a invocar y crear el mismo objeto: osea alineas todo a la derecha, todo al centro, o todo a la izquierda
Lo que no recuerdo exactamente es donde almacena el grid estos controles que representan cada celda. La otra alternativa es acceder a estos objetos y manipular sus propiedades directamente. Insisto con usar un class helper o una subclase de TStringGrid para lograrlo. Por cierto, existe la propiedad OwnerDraw en XE5?
Edited by Agustin Ortu, 15 June 2016 - 01:18 PM.
Posted 15 June 2016 - 02:49 PM
Posted 15 June 2016 - 07:41 PM
Posted 17 June 2016 - 02:40 PM
Si fuera con un TGrid cómo se hace?
Posted 17 June 2016 - 04:16 PM
No estoy muy seguro, pero en el TGrid quiza tengas mas eventos. O quiza otro tipo de columna que te permita configurar como se imprime el texto, o acceso con una propiedad para hacerlo por codigo