No me dio, aun conserva el alineamiento a la izquierda. adjunto de nuevo código quizás ingrese mal el ejemplo:
Código Delphi
[-]
type
TwMain = class(TForm)
DBNavigator1: TDBNavigator;
Panel1: TPanel;
BSubrayado: TPngSpeedButton;
BCursiva: TPngSpeedButton;
BTachada: TPngSpeedButton;
BIzquierda: TPngSpeedButton;
BCentrado: TPngSpeedButton;
BDerecha: TPngSpeedButton;
BBolo: TPngSpeedButton;
CBFuentes: TComboBox;
EdTamano: TEdit;
Database: TpFIBDatabase;
Transaction: TpFIBTransaction;
DataSet: TpFIBDataSet;
DataSource: TDataSource;
PopupMenu1: TPopupMenu;
Color1: TMenuItem;
Fuente1: TMenuItem;
DColor: TColorDialog;
DFuente: TFontDialog;
BNegrita: TSpeedButton;
Edicion: TRichEdit;
procedure Color1Click(Sender: TObject);
procedure Fuente1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure BNegritaClick(Sender: TObject);
procedure BSubrayadoClick(Sender: TObject);
procedure BCursivaClick(Sender: TObject);
procedure BTachadaClick(Sender: TObject);
procedure EdTamanoKeyPress(Sender: TObject; var Key: Char);
procedure BIzquierdaClick(Sender: TObject);
procedure BCentradoClick(Sender: TObject);
procedure BDerechaClick(Sender: TObject);
procedure CBFuentesClick(Sender: TObject);
procedure BBoloClick(Sender: TObject);
procedure EdicionSelectionChange(Sender: TObject);
procedure DataSourceStateChange(Sender: TObject);
procedure DataSetBeforePost(DataSet: TDataSet);
private
procedure BotonEstilo(Sender: TObject);
procedure BotonAlinear(Sender:TObject);
procedure RichEditToBlob(DataSet: TDataSet; const aFieldName: string; RE:TRichEdit);
procedure BlobToRichEdit(DataSet: TDataSet; const aFieldName: string; RE:TRichEdit);
public
end;
var
wMain: TwMain;
implementation
{$R *.dfm}
procedure TwMain.BBoloClick(Sender: TObject);
begin
IF BBolo.Down THEN
Edicion.Paragraph.Numbering := nsBullet
ELSE Edicion.Paragraph.Numbering := nsNone;
end;
procedure TwMain.BCentradoClick(Sender: TObject);
begin
BotonAlinear(BCentrado);
end;
procedure TwMain.BCursivaClick(Sender: TObject);
begin
BotonEstilo(BCursiva);
end;
procedure TwMain.BDerechaClick(Sender: TObject);
begin
BotonAlinear(BDerecha);
end;
procedure TwMain.BIzquierdaClick(Sender: TObject);
begin
BotonAlinear(BIzquierda);
end;
procedure TwMain.BlobToRichEdit(DataSet: TDataSet; const aFieldName: string;
RE: TRichEdit);
var
Stream: TStream;
begin
Stream := TMemoryStream.Create;
try
TBlobField(DataSet.FieldByName(aFieldName)).SaveToStream(Stream);
Stream.Position := 0;
RE.PlainText := False;
RE.Lines.LoadFromStream(Stream);
finally
Stream.Free;
end;
end;
procedure TwMain.BNegritaClick(Sender: TObject);
begin
BotonEstilo(BNegrita);
end;
procedure TwMain.BotonAlinear(Sender: TObject);
begin
WITH Sender AS TSpeedButton DO
Edicion.Paragraph.Alignment := TAlignment(Tag);
end;
procedure TwMain.BotonEstilo(Sender: TObject);
begin
WITH (Sender AS TSpeedButton), Edicion.SelAttributes DO
BEGIN
IF Down THEN
Style := Style + [TFontStyle(Tag)]
ELSE
Style := Style - [TFontStyle(Tag)];
END;
end;
procedure TwMain.BSubrayadoClick(Sender: TObject);
begin
BotonEstilo(BSubrayado);
end;
procedure TwMain.BTachadaClick(Sender: TObject);
begin
BotonEstilo(BTachada);
end;
procedure TwMain.CBFuentesClick(Sender: TObject);
begin
Edicion.SelAttributes.Name := CBFuentes.Text;
Edicion.SetFocus;
end;
procedure TwMain.Color1Click(Sender: TObject);
begin
DColor.Color := Edicion.SelAttributes.Color;
IF DColor.Execute THEN
Edicion.SelAttributes.Color := DColor.Color;
end;
procedure TwMain.DataSetBeforePost(DataSet: TDataSet);
begin
RichEditToBlob(DataSet,'OBSER',Edicion);
end;
procedure TwMain.DataSourceStateChange(Sender: TObject);
begin
case DataSet.State of
dsBrowse: begin
Edicion.Enabled := False;
BlobToRichEdit(DataSet,'OBSER',Edicion);
end;
dsEdit,
dsInsert: begin
Edicion.Enabled := True;
Edicion.SetFocus;
end;
end;
end;
procedure TwMain.EdicionSelectionChange(Sender: TObject);
var
N: SmallInt;
begin
WITH Edicion.SelAttributes, Edicion.Paragraph DO
BEGIN
FOR N:=0 TO CBFuentes.Items.Count-1 DO
IF CBFuentes.Items[N] = Edicion.SelAttributes.Name THEN
CBFuentes.ItemIndex := N;
EdTamano.Text := InttoStr(Size);
BNegrita.Down := fsBold IN Style;
BSubrayado.Down := fsUnderline IN Style;
BCursiva.Down := fsItalic IN Style;
BTachada.Down := fsStrikeOut IN Style;
BBolo.Down := Numbering = nsBullet;
BIzquierda.Down := Alignment = taLeftJustify;
BCentrado.Down := Alignment = taCenter;
BDerecha.Down := Alignment = taRightJustify;
END;
end;
procedure TwMain.EdTamanoKeyPress(Sender: TObject; var Key: Char);
begin
IF Key = #13 THEN
BEGIN
Edicion.SelAttributes.Size := StrToInt(EdTamano.Text);
Key := #0;
Edicion.SetFocus;
END
ELSE
IF ( (Key < '0') OR (Key > '9') ) AND (Key <> #8) THEN
Key := #0;
end;
procedure TwMain.FormCreate(Sender: TObject);
begin
CBFuentes.Items := Screen.Fonts;
BNegrita.Tag := longint(fsBold);
BSubrayado.Tag := longint(fsUnderline);
BCursiva.Tag := longint(fsItalic);
BTachada.Tag := longint(fsStrikeOut);
BIzquierda.Tag := longint(taLeftJustify);
BCentrado.Tag := longint(taCenter);
BDerecha.Tag := longint(taRightJustify);
Database.Connected := True;
Transaction.StartTransaction;
DataSet.Open;
end;
procedure TwMain.FormShow(Sender: TObject);
begin
BotonAlinear(BIzquierda);
BIzquierda.Down := True;
CBFuentes.Text := Edicion.SelAttributes.Name;
end;
procedure TwMain.Fuente1Click(Sender: TObject);
begin
DFuente.Font.Name := Edicion.SelAttributes.Name;
IF DFuente.Execute THEN
BEGIN
Edicion.SelAttributes.Name := DFuente.Font.Name;
Edicion.SelAttributes.Color := DFuente.Font.Color;
Edicion.SelAttributes.Size := DFuente.Font.Size;
END;
end;
procedure TwMain.RichEditToBlob(DataSet: TDataSet; const aFieldName: string;
RE: TRichEdit);
var
Stream: TStream;
begin
Stream := TMemoryStream.Create;
try
RE.Lines.SaveToStream(Stream);
Stream.Position := 0;
TBlobField(DataSet.FieldByName(aFieldName)).LoadFromStream(Stream);
finally
Stream.Free;
end;
end;
end.