Ver Mensaje Individual
  #5  
Antiguo 09-09-2015
Jose Roman Jose Roman is offline
Miembro
 
Registrado: jul 2006
Ubicación: Colombia
Posts: 361
Reputación: 18
Jose Roman Va por buen camino
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
    { Public declarations }
  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
  //BNegrita.Down := not BNegrita.Down;
  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
  { Obtenemos la lista de tipos de letra y la asignamos a la
    propiedad Items de TComboBox }

  CBFuentes.Items := Screen.Fonts;

  { Asignamos a la propiedad TAG de cada uno de los botones de
    tipo de letra la constante adecuada }

  BNegrita.Tag := longint(fsBold);
  BSubrayado.Tag := longint(fsUnderline);
  BCursiva.Tag := longint(fsItalic);
  BTachada.Tag := longint(fsStrikeOut);

  { Hacemos lo mismo con los botones de ajuste de párrafo }

  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;
    //DataSet.Edit;
    TBlobField(DataSet.FieldByName(aFieldName)).LoadFromStream(Stream);
    //DataSet.Post;
  finally
    Stream.Free;
  end;
end;

end.
Responder Con Cita