Word de ince ayarlar ve kayıt nasıl yapılır

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Mustafa YILMAZ
Üye
Mesajlar: 14
Kayıt: 02 Oca 2008 04:55
Konum: İstanbul

Word de ince ayarlar ve kayıt nasıl yapılır

Mesaj gönderen Mustafa YILMAZ »

OLE nesnesi olarak word belgesi açılabiliyor. Ancak benim merak ettiğim husus, delphi'den kod ile word deki ince ayarlar yapılabilir mi, örneğin uygulamanızda richedit bileşenine bir şeyler yazdınız , aşağıdaki kodları nasıl yazarız
1-Word belgesi aç
2-Belgedeki yatay cetvelin değerlerini şu değerlere ayarla
2-Belgedeki dikey cetvel değerlerini şu değerlere ayarla
3-Sağ alta (veya üst de olabilir) sayfa numarası yaz
4-BElgeyi verilen şu adla, şuraya kaydet
5-Kapat

ve benzerleri. Yni bir dosyayı RTF olarak kaydedip, ince ayarları illa word e girerek mi yapmalıyız, kodla çözülmez mi
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
bu dediğiniz işlemleri wordde makro olarak kaydedin.
sonra bu makroları düzenle dediğiniz zaman size vb kodları gelecektir.
daha sonra bunları delphiye çevirebilirsiniz. kodlar benzer niteliktedir.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Re: Word de ince ayarlar ve kayıt nasıl yapılır

Mesaj gönderen ikutluay »

Mustafa YILMAZ yazdı:OLE nesnesi olarak word belgesi açılabiliyor. Ancak benim merak ettiğim husus, delphi'den kod ile word deki ince ayarlar yapılabilir mi, örneğin uygulamanızda richedit bileşenine bir şeyler yazdınız , aşağıdaki kodları nasıl yazarız
1-Word belgesi aç
2-Belgedeki yatay cetvelin değerlerini şu değerlere ayarla
2-Belgedeki dikey cetvel değerlerini şu değerlere ayarla
3-Sağ alta (veya üst de olabilir) sayfa numarası yaz
4-BElgeyi verilen şu adla, şuraya kaydet
5-Kapat

ve benzerleri. Yni bir dosyayı RTF olarak kaydedip, ince ayarları illa word e girerek mi yapmalıyız, kodla çözülmez mi
aslangeri olayı kafadan koparmış asncak open office i unutmayın. ole kullanırsan makinede word olmak zorunda...

bence trichedit yada wptools gibi bir set dene word gibi sonuç elde edersin ve uygulaman bağımsız olur..
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

@aslangeri de bahsetmiş, Word'de macro kaydet diyerek istediğin işlemleri yap, sonra MSWord tarafından üretilen kodları incele. Oluşan kodu Delphi'de kullanabilirsin. Yol gösterici olsun diye bu örnek olarak saydıklarını sırasıyla hazırladım.

- Word2000 veya WordXP PAS dosyasını Delphi IDE kurulu klasörlerden arayıp bulursan içinde ihtiyacın olan CONST tanımlarını bulabilirsin. İhtiyacın olacak olanları da seçip tanımlara ekledim.

Kod: Tümünü seç

Uses ComObj;
procedure TForm1.Button1Click(Sender: TObject);
const
  wdPaneNone    = $00000000;
  wdNormalView  = $00000001;
  wdOutlineView = $00000002;
  wdPrintView   = $00000003;
  wdSeekCurrentPageHeader = $00000009;
  wdSeekCurrentPageFooter = $0000000A;
  wdFieldPage             = $00000021;
  wdFieldNumPages         = $0000001A;
  wdAlignParagraphCenter  = $00000001;
  wdSeekMainDocument      = $00000000;
  wdFormatDocument        = $00000000;
Var
  Word,
  Doc   : OleVariant;

  nPageNum, nNumPages, nTip : OleVariant;
  DosyaAdi, DosyaFormati, KilitDurum, Sifre, SikKullanilanaEkle, WRSifre, ReadOnlyDurum,
  TTFEkle, YerelResimKaydi, FormlariKaydet, AOECKarakterKaydet : OleVariant;
begin
  Word := CreateOleObject('Word.Application');
  //Word.Documents.Open(ExtractFilePath(Application.ExeName)+'Test1.DOC');
  Word.Documents.Add; // Template:="Normal", NewTemplate:=False, DocumentType:=0
  Doc := Word.ActiveDocument;
  Doc.ActiveWindow.Selection.ParagraphFormat.LeftIndent := 60;
  Doc.ActiveWindow.Selection.PageSetup.TopMargin        := 60;
  Try
    If Doc.ActiveWindow.View.SplitSpecial <> wdPaneNone Then
    begin
        Doc.ActiveWindow.Panes(2).Close;
    End;

    If (Doc.ActiveWindow.ActivePane.View.Type = wdNormalView ) Or
       (Doc.ActiveWindow.ActivePane.View.Type = wdOutlineView) Then
    begin
        Doc.ActiveWindow.ActivePane.View.Type := wdPrintView;
    End;

    Doc.ActiveWindow.ActivePane.View.SeekView := wdSeekCurrentPageHeader;
    If Doc.ActiveWindow.Selection.HeaderFooter.IsHeader = True Then
    begin
        Doc.ActiveWindow.ActivePane.View.SeekView := wdSeekCurrentPageFooter;
    end else begin
        Doc.ActiveWindow.ActivePane.View.SeekView := wdSeekCurrentPageHeader;
    End;

    nPageNum  :=wdFieldPage;
    nNumPages :=wdFieldNumPages;
    nTip      := '';

    Doc.ActiveWindow.Selection.Fields.Add(Doc.ActiveWindow.Selection.Range, nPageNum, nTip,  True);
    Doc.ActiveWindow.Selection.TypeText('/');
    Doc.ActiveWindow.Selection.Fields.Add(Doc.ActiveWindow.Selection.Range, nNumPages, nTip,  True);
    Doc.ActiveWindow.Selection.ParagraphFormat.Alignment  := wdAlignParagraphCenter;
    Doc.ActiveWindow.ActivePane.View.SeekView := wdSeekMainDocument;

    DosyaAdi           :='Test1.DOC';
    DosyaFormati       :=wdFormatDocument;
    KilitDurum         :=False;
    Sifre              :='';
    SikKullanilanaEkle :=True;
    WRSifre            :='';
    ReadOnlyDurum      :=False;
    TTFEkle            :=False;
    YerelResimKaydi    :=False;
    FormlariKaydet     :=False;
    AOECKarakterKaydet :=False;
    Word.ActiveDocument.SaveAs(DosyaAdi, DosyaFormati, KilitDurum, Sifre, SikKullanilanaEkle, WRSifre, ReadOnlyDurum, TTFEkle, YerelResimKaydi, FormlariKaydet, AOECKarakterKaydet);
  Except
  End;
  Word.Visible := True;
  //Word.ActiveDocument.Close;
  Word         := UnAssigned;
end;
Resim
Resim ....Resim
Mustafa YILMAZ
Üye
Mesajlar: 14
Kayıt: 02 Oca 2008 04:55
Konum: İstanbul

Mesaj gönderen Mustafa YILMAZ »

arkadaşlar teşekkürler, özellikle mrmarman arkadaşım detaylı bilgi vermiş, e artık gerisini de bizim karıştırmamız gerekiyor, sağolun....
aseka

Mesaj gönderen aseka »

--
Cevapla