memo yazılan bold italic metin DB Atma?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
erkanoz07
Üye
Mesajlar: 9
Kayıt: 11 Mar 2008 01:46

memo yazılan bold italic metin DB Atma?

Mesaj gönderen erkanoz07 »

Kusura bakmayın delphi'yi öğrenmeye çalışan bi acemiyim. Küçük çaplı bir program yazmaya
başladım fakat paradox da açtığım memo alana memo ya yapıştırdığım metinlerin bazı alanları bold italic vb. fontlarda bu metinler memo da düzgüngörünüyor fakat db kaydedip tekrar açtığımda text haline geliyor.

kaydederken şu kodları kullanıyorum;


procedure TForm1.Button1Click(Sender: TObject);
begin
table1.Append;
table1.FieldByName('baslik').AsString:=edit1.Text;
table1.FieldByName('metin').AsString:=memo1.Text;

table1.Post;
table1.Refresh;

edit1.text:='';
memo1.Text:='';
edit1.SetFocus;
end;

Bİrde memo dan yada richedit den RTF dosyasının içini göstermemiz mümkünmü. Teşekkürler.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: memo yazılan bold italic metin DB Atma?

Mesaj gönderen aslangeri »

s.a.
bunun için memo yerine richview kullanman lazım. ayrıca tablodaki alanın memo değil blob olmalı.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
erkanoz07
Üye
Mesajlar: 9
Kayıt: 11 Mar 2008 01:46

Re: memo yazılan bold italic metin DB Atma?

Mesaj gönderen erkanoz07 »

Kusura bakmayın ben daha programlamanın başındayım, hatalı bi tabir kullanabilirim, şöyleki dediğiniz gibi table daki alanı blob'a çevirdim ve form'a richedit koydum. herhangi bir dilekçeyi richedit e Word dan nasıl yapıştırmışsam öyle geçiyor. Fakat kaydettiğim zaman text e dönüşüyor fontlar gidiyor. Tam olarak nerde hata yapıyorum bulamadım.
erkanoz07
Üye
Mesajlar: 9
Kayıt: 11 Mar 2008 01:46

Re: memo yazılan bold italic metin DB Atma?

Mesaj gönderen erkanoz07 »

Google aramalarında rxrichedit kullanarak olduğu söylenmiş fakat örnek kodlar bulamadım. Exe halinde derlenmiş bir proje de richedit kullanmışlar memo alanlara kayıt yaptırıyorlar, fakat proje exe olduğu için kodları göremiyorum. Benim projemde bu tarzda bir dilekçe projesi, kendi ofisimde kullanmak için yazmaya başladım. ilk sorunumu yukarda anlattım;

ikinci sorunum ise;
RichEdit1.Lines.SaveToFile('deneme.rtf'); komutu ile bir RTF oluşturuyorum. Bir sorun yok fakat;
Richedit in içi dolu ama oluşan dosyanın içi boş, bunun nedeni nedir? ve Oluşan dosya oluşur oluşmaz bu dosyaya word ile açtırabilirmiyim.
Kusurabakmayın bu kadar acemi sorular soran biriyle karşılaşmamışsınızdır. :) İyi günler dilerim.
Kullanıcı avatarı
Search
Üye
Mesajlar: 74
Kayıt: 01 Oca 2008 01:03
Konum: Konya

Re: memo yazılan bold italic metin DB Atma?

Mesaj gönderen Search »

ilk önce dosyanın olusturulacagı yolu yazmalısınız...

örnek:

Kod: Tümünü seç

RichEdit1.Lines.SaveToFile('C:\deneme.rtf');

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
RichEdit1.Lines.SaveToFile('C:\deneme.rtf');
ShellExecute(Form1.Handle,nil,'C:\deneme.rtf', nil, nil, SW_SHOW);
end;
end.
procedure TForm1.FormCreate(Sender: TObject);
begin
showmessage('Dehanın %1 i ilham %99u terdir.');
end;
end.
erkanoz07
Üye
Mesajlar: 9
Kayıt: 11 Mar 2008 01:46

Re: memo yazılan bold italic metin DB Atma?

Mesaj gönderen erkanoz07 »

teşekkürler verdiğiniz örnekleri biraz daha geliştirerek 2. sorunumu aştım.
Fakat ilk sorunuma çözüm bulmadım. Memo alana richedit deki metini kaydederken richedit.lines.savetostraem şeklinde bir yolmu izlemeliyim?

internette şöyle bir örnek kod buldum bu şekilde kayıt yapdım, fakat alanı çağırdığımda içi boş geliyor?,

Kod: Tümünü seç

procedure TForm1.Button2Click(Sender: TObject);
var
  Stream1: TStream;
begin
  Table1.Edit;
  Stream1:=Table1.CreateBlobStream(Table1.FieldByName('RTF'),bmReadWrite);
  RichEdit1.Lines.SaveToStream(Stream1);
  Table1.Post;
  RichEdit1.Clear;
end;
aseka

Re: memo yazılan bold italic metin DB Atma?

Mesaj gönderen aseka »

--
En son aseka tarafından 18 Mar 2008 08:41 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Re: memo yazılan bold italic metin DB Atma?

Mesaj gönderen sadettinpolat »

kodu denemedim ama ise yarar birseye benziyor...

http://www.swissdelphicenter.ch/torry/s ... hp?id=1271
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
erkanoz07
Üye
Mesajlar: 9
Kayıt: 11 Mar 2008 01:46

Re: memo yazılan bold italic metin DB Atma?

Mesaj gönderen erkanoz07 »

Malesef altından kalkamadım. Table da bir blob-memo alan içinde farklı fonlarda metin girmek nekadar zormuş. :)
Richedit e load ladığım rtf metnini datada saklamak ve göstermek kolay gibi gelmişti. hergün onlarca dilekçe ile boğuşan bir Avukat olarak kendi dilekçe katoloğumu oluşturmaya çalışıyorum. Sorunum hakkkında önerisi olanların fikirlerini bekliyorum. Yardımlarınız için çok teşekkürler. İyi çalışmalar dilerim.
erkanoz07
Üye
Mesajlar: 9
Kayıt: 11 Mar 2008 01:46

Re: memo yazılan bold italic metin DB Atma?

Mesaj gönderen erkanoz07 »

İnternette bu şekilde kodlar buldum, bu kodlar işimi görürmü, denedim fakat beceremedim .

Kod: Tümünü seç


function TForm1.GetRtfData( Rtf: TRzRichEdit ): string;
var
  memStream: TMemoryStream;
  strList: TStringList;
begin
  Result := '';

  memStream := TMemoryStream.Create;
  strList := TStringList.Create;
  try
    Rtf.Lines.SaveToStream( memStream );
    memStream.Position := 0;
    strList.LoadFromStream( memStream );
    Result := strList.Text;
  finally
    memStream.Free;
    strList.Free;
  end;
end;

procedure TForm1.RzButton1Click(Sender: TObject);
begin
  RzMemo1.Lines.Text := GetRtfData( RichEdit1 );
end;
In this example, the rtf encoded string is displayed in the memo field.

In the next build of Raize Components, the TRzRichEdit (and TRzDBRichEdit) 
has
a new GetRtfData method.  So the button click would look like the following:

  RzMemo1.Lines.Text := RichEdit1.GetRtfData;
erkanoz07
Üye
Mesajlar: 9
Kayıt: 11 Mar 2008 01:46

Çözüm

Mesaj gönderen erkanoz07 »

Arkadaşlar hepinize teşekkür ederim. Sorunumu hallettim. Umarım başkalarınında işine yarar

Çözüm;

Memo1 = rxrichedit (memo kullanmadım onun yerine RxRicedhit Bileşeni kullandım fakat ismi değiştirmek zor geldi o yüzden memo1 olarak adlandırdım :) )

Kod: Tümünü seç

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, ComCtrls, DB, DBTables, Grids, DBGrids, ExtCtrls, ToolWin, ActnCtrls, Menus, FormSize, AdvSmartMessageBox, RxRichEd, sLabel,  acDBTextFX, ComObj, XPStyleActnCtrls, ActnList, ActnMan, Shellapi, AdvToolBar, AdvMenus, AdvMenuStylers, AdvToolBarStylers, AdvGlowButton,
  AdvOfficeSelectors, AdvOfficeComboBox, sEdit;

type
  TForm1 = class(TForm)
    DataSource1: TDataSource;
    Table1: TTable;
    Table1Metin: TMemoField;
    Table1Baslik: TStringField;
    Edit1: TEdit;
    sSkinManager1: TsSkinManager;
    sSkinProvider1: TsSkinProvider;
    Image1: TImage;
    sPanel1: TsPanel;
    sPanel2: TsPanel;
    Button2: TButton;
    Button1: TButton;
    AdvSmartMessageBox1: TAdvSmartMessageBox;
    Button3: TButton;
    Label2: TLabel;
    DBGrid1: TDBGrid;
    sFrameBar1: TsFrameBar;
    Button5: TButton;
    sPanel3: TsPanel;
    sLabel1: TsLabel;
    memo1: TRxRichEdit;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    PopupMenu1: TPopupMenu;
    Kopyala1: TMenuItem;
    Yaptr1: TMenuItem;
    Kes1: TMenuItem;
    mnTemizle1: TMenuItem;
    FontDialog1: TFontDialog;
    Gerial1: TMenuItem;
    AdvMainMenu1: TAdvMainMenu;
    AdvMenuOfficeStyler1: TAdvMenuOfficeStyler;
    AdvToolBar1: TAdvToolBar;
    AdvToolBarCustomizer1: TAdvToolBarCustomizer;
    DosyadanAktar1: TMenuItem;
    Kaydet1: TMenuItem;
    DosyadanAktar2: TMenuItem;
    Deitir1: TMenuItem;
    Sil1: TMenuItem;
    YeniKayt1: TMenuItem;
    AlanlarTemizle1: TMenuItem;
    Yazdr1: TMenuItem;
    Gerial2: TMenuItem;
    AdvToolBarOfficeStyler1: TAdvToolBarOfficeStyler;
    EditreGnder1: TMenuItem;
    lemler1: TMenuItem;
    k1: TMenuItem;
    AdvGlowButton1: TAdvGlowButton;
    sEdit1: TsEdit;
    sLabelFX1: TsLabelFX;
    AdvGlowButton2: TAdvGlowButton;
    AdvGlowButton3: TAdvGlowButton;
    AdvToolBarSeparator1: TAdvToolBarSeparator;
    AdvToolBarSeparator2: TAdvToolBarSeparator;
    AdvToolBarSeparator3: TAdvToolBarSeparator;
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
    procedure DBGrid1DblClick(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Kopyala1Click(Sender: TObject);
    procedure Yaptr1Click(Sender: TObject);
    procedure Kes1Click(Sender: TObject);
    procedure mnTemizle1Click(Sender: TObject);
    procedure memo1Change(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure Gerial1Click(Sender: TObject);
    procedure Kaydet1Click(Sender: TObject);
    procedure DosyadanAktar2Click(Sender: TObject);
    procedure Deitir1Click(Sender: TObject);
    procedure Sil1Click(Sender: TObject);
    procedure YeniKayt1Click(Sender: TObject);
    procedure AlanlarTemizle1Click(Sender: TObject);
    procedure Yazdr1Click(Sender: TObject);
    procedure Gerial2Click(Sender: TObject);
    procedure k1Click(Sender: TObject);
    procedure k2Click(Sender: TObject);
    procedure EditreGnder1Click(Sender: TObject);
    procedure AdvGlowButton1Click(Sender: TObject);
    procedure AdvGlowButton3Click(Sender: TObject);
    procedure AdvGlowButton2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }

    filename: String;
    changed: boolean;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormShow(Sender: TObject);
begin
table1.Open;

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
table1.Close;
end;

procedure TForm1.Button1Click(Sender: TObject); //Kaydetme

var
  Stream1: TStream;
begin
  table1.Append;
  Stream1:=Table1.CreateBlobStream(Table1.FieldByName('metin'),bmWrite);
  memo1.Lines.SaveToStream(Stream1);
  table1.FieldByName('baslik').AsString:=edit1.Text;
  Table1.Post;
table1.Refresh;
edit1.text:='';
memo1.Text:='';
edit1.SetFocus;
end;

procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
edit1.text:=table1.fieldbyname('baslik').AsString;
memo1.text:=table1.fieldbyname('metin').AsString;
memo1.SetFocus;
end;

procedure TForm1.Button2Click(Sender: TObject);  //değiştirme
var
  Stream1: TStream;
begin
  table1.edit;
  Stream1:=Table1.CreateBlobStream(Table1.FieldByName('metin'),bmWrite);
  memo1.Lines.SaveToStream(Stream1);
  table1.FieldByName('baslik').AsString:=edit1.Text;
  Table1.updaterecord;
  table1.Refresh;
  edit1.SetFocus;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
table1.Edit;
table1.Delete;
edit1.SetFocus;
table1.Refresh;
edit1.Text:='';

end;

procedure TForm1.Button4Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
memo1.text:='';
 edit1.text:='';
edit1.SetFocus;
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
slabel1.Caption:=table1.fieldbyname('baslik').AsString;
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
if opendialog1.execute then memo1.Lines.LoadFromFile(Opendialog1.filename);
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
  memo1.print(filename);
  end;
procedure TForm1.Kopyala1Click(Sender: TObject);
begin
 memo1.CopyToClipboard;
end;

procedure TForm1.Yaptr1Click(Sender: TObject);
begin
memo1.PasteFromClipboard;
end;

procedure TForm1.Kes1Click(Sender: TObject);
begin
memo1.CutToClipboard;
end;

procedure TForm1.mnTemizle1Click(Sender: TObject);
begin
memo1.Clear;
end;

procedure TForm1.memo1Change(Sender: TObject);
begin
changed:= true;
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
memo1.PasteFromClipboard;
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
memo1.SelectAll;
memo1.Lines.SaveToFile('sb.rtf');
ShellExecute(Handle, 'open', './sb.rtf',nil,nil,SW_SHOWNORMAL) ;
end;

procedure TForm1.Button10Click(Sender: TObject);
begin
memo1.Undo;
end;

procedure TForm1.Gerial1Click(Sender: TObject);
begin
memo1.Undo;
end;

procedure TForm1.Kaydet1Click(Sender: TObject);
var
  Stream1: TStream;
begin
  table1.Append;
  Stream1:=Table1.CreateBlobStream(Table1.FieldByName('metin'),bmWrite);
  memo1.Lines.SaveToStream(Stream1);
  table1.FieldByName('baslik').AsString:=edit1.Text;
  Table1.Post;
table1.Refresh;
edit1.text:='';
memo1.Text:='';
edit1.SetFocus;
end;

procedure TForm1.DosyadanAktar2Click(Sender: TObject);
begin
if opendialog1.execute then memo1.Lines.LoadFromFile(Opendialog1.filename);
end;

procedure TForm1.Deitir1Click(Sender: TObject);
var
  Stream1: TStream;
begin
  table1.edit;
  Stream1:=Table1.CreateBlobStream(Table1.FieldByName('metin'),bmWrite);
  memo1.Lines.SaveToStream(Stream1);
  table1.FieldByName('baslik').AsString:=edit1.Text;
  Table1.updaterecord;
  table1.Refresh;
  edit1.SetFocus;
end;

procedure TForm1.Sil1Click(Sender: TObject);
begin
table1.Edit;
table1.Delete;
edit1.SetFocus;
table1.Refresh;
edit1.Text:='';
end;

procedure TForm1.YeniKayt1Click(Sender: TObject);
begin
memo1.text:='';
 edit1.text:='';
edit1.SetFocus;
end;

procedure TForm1.AlanlarTemizle1Click(Sender: TObject);
begin
memo1.text:='';
 edit1.text:='';
edit1.SetFocus;
end;

procedure TForm1.Yazdr1Click(Sender: TObject);
begin
 memo1.print(filename);
end;

procedure TForm1.Gerial2Click(Sender: TObject);
begin
memo1.Undo;
end;

procedure TForm1.k1Click(Sender: TObject);
begin
close;
end;

procedure TForm1.k2Click(Sender: TObject);
begin
Close;
end;

procedure TForm1.EditreGnder1Click(Sender: TObject);
begin
memo1.SelectAll;
memo1.Lines.SaveToFile('sb.rtf');
ShellExecute(Handle, 'open', './sb.rtf',nil,nil,SW_SHOWNORMAL) ;
end;

procedure TForm1.AdvGlowButton1Click(Sender: TObject);
begin
close;
end;

procedure TForm1.AdvGlowButton3Click(Sender: TObject);
begin
memo1.SelectAll;
memo1.Lines.SaveToFile('sb.rtf');
ShellExecute(Handle, 'open', './sb.rtf',nil,nil,SW_SHOWNORMAL) ;
end;

procedure TForm1.AdvGlowButton2Click(Sender: TObject);
begin
memo1.print(filename);
end;

end.
Herkeze iyi çalışmalar dilerim.
Cevapla