word gönder aktar çıkart bilgi gönder

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
ayhandemirtas
Üye
Mesajlar: 114
Kayıt: 01 Oca 2008 10:02
Konum: Eskişehir

word gönder aktar çıkart bilgi gönder

Mesaj gönderen ayhandemirtas »

Arkadaşlar merhaba, yıllar önce veritabanında bulunan bilgileri Qrapor ile dökümünü alıyordum.
fakat alınan rapor içerisinde değişiklik yapamıyordum.
bende excell ve word e bilgileri aktararak yada göndererek işimi görmeye başladım.
ilerleyen zamanlarda raporlamadan ziyade birde evrak yazışma ihtiyacı içerisine girdim.
işim gereği kanunlarla hareket ediyoruz. yeni çıkan yasaya göre 80 maddelik yapılacakların
işlem listesi ve bu liste doğrultusunda da 15 sayfaya yakın çıktı almam gereken evrak
dökümlerim vardı. tabi olayın şekline göre de değişiklik gösterdiği için kombinasyonları
bir hayli fazla zaman alıyordu. yazışma yapan personelim 2 saatte bitirdiği işi 15-20 dakika
arasına sığdırdım. (Allah'ın izniyle)
tabi ki bu word e bilgi göndermede sayfa düzeni ve yazışma kurallarına da uymamız gerekiyordu,
Allah'ın izni ile çalışmam son buldu ve Tüm Türkiye'de kullanılacak şekilde amatörce de olsa
amaca profesyonelce ulaşmış oldum.
Buna benzer çalışmaya yapacak arkadaşlara form da da kalacak şekilde bilgileri ve kaynaklarımı
seve seve paylaşmak isterim.
böylece hep alan el değil arada bir olsada veren el olmak isterim.
Saygı ve sevgilerimle.

Aramada daha rahat bulunması için arama kelimeleri:
word, worde, aktar, gönder, resmi yazışma kuralları, sayfa düzeni, raporlama.
Kullanıcı avatarı
ayhandemirtas
Üye
Mesajlar: 114
Kayıt: 01 Oca 2008 10:02
Konum: Eskişehir

Re: word gönder aktar çıkart bilgi gönder

Mesaj gönderen ayhandemirtas »

uygulamaya bakmak isteyen olursa dosya olarak ekledim. link çalışmazsa yeni link ekleyebilirim.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: word gönder aktar çıkart bilgi gönder

Mesaj gönderen mrmarman »

ayhandemirtas yazdı:yeni çıkan yasaya göre 80 maddelik yapılacakların
işlem listesi ve bu liste doğrultusunda da 15 sayfaya yakın çıktı almam gereken evrak
dökümlerim vardı. tabi olayın şekline göre de değişiklik gösterdiği için kombinasyonları
bir hayli fazla zaman alıyordu. yazışma yapan personelim 2 saatte bitirdiği işi 15-20 dakika
arasına sığdırdım.
- Eline sağlık, bilgisayarlar yazılım geliştirmenin anlamı zaten zamandan tasarruf ve tutarlı çözümlerdir.

Başarılarının devamını dileriz. :bravo:
Resim
Resim ....Resim
Kullanıcı avatarı
ayhandemirtas
Üye
Mesajlar: 114
Kayıt: 01 Oca 2008 10:02
Konum: Eskişehir

Re: word gönder aktar çıkart bilgi gönder

Mesaj gönderen ayhandemirtas »

mrmarman teşekkür ederim.
bu arada foruma dosya eklenemiyor sanırım.
aşağıdaki linkten uygulamanın örneğini ekledim.
yazdığım programa bakmak isteyen varsa siteden bakabilir.
http://www.ayhandemirtas.com/download/worde.rar
Kullanıcı avatarı
ayhandemirtas
Üye
Mesajlar: 114
Kayıt: 01 Oca 2008 10:02
Konum: Eskişehir

Re: word gönder aktar çıkart bilgi gönder

Mesaj gönderen ayhandemirtas »

kaynak kodlara bakmak isteyen arkadaşlar için
link aşağıda.
http://www.ayhandemirtas.com/download/source.rar
Kullanıcı avatarı
ayhandemirtas
Üye
Mesajlar: 114
Kayıt: 01 Oca 2008 10:02
Konum: Eskişehir

Re: word gönder aktar çıkart bilgi gönder

Mesaj gönderen ayhandemirtas »

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, WordXP, OleServer, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
WordApplication: TWordApplication;
WordFont: TWordFont;
WordDocument: TWordDocument;
Timer1: TTimer;
Label1: TLabel;
Button2: TButton;
Memo1: TMemo;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Memo2: TMemo;
Label2: TLabel;
Label3: TLabel;
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
Docs, Template, NewTemplate, ItemIndex: OleVariant;
Sayfa:Variant;
// say,i:integer;
prg :Paragraph;

procedure setfont;
begin

WordFont.ConnectTo(WordDocument.Sentences.Get_Last.Font);
Sayfa:=WordDocument.PageSetup;
Sayfa.Topmargin:=20; // sayfa yapısı üst boşluk
Sayfa.Rightmargin:=45; // sayfa yapısı sağ boşluk
Sayfa.leftmargin:=45; // sayfa yapısı sol boşluk
Sayfa.bottommargin:=35; // sayfa yapısı alt boşluk
end;
begin
try
Template := EmptyParam;
NewTemplate := True;
ItemIndex := 1;
try
Wordapplication.Connect;
except
MessageDlg('Word Belgesi oluşturulamadı', mtError, [mbOk], 0); // bu hata ile fazla karşılaşmadım :)
Abort;
end;
Wordapplication.Visible := True;// Word Belgesini Aç
WordApplication.Caption := 'Belgenin Adı ';//Word Belgesinin adını yazı
Template := EmptyParam;
NewTemplate := False;
begin
Docs := WordApplication.Documents;
Docs.Add;
WordDocument.ConnectTo(WordApplication.Documents.Item(ItemIndex)); // bu alanda hata verirse Ctrl+Boşluk ile
// aynı kodları WordApplication.Documents yeniden yazdırmaya
// çalışın, böylece sıkıntı yaşamazsınız.
end;
WordApplication.Options.CheckSpellingAsYouType := False;
WordApplication.Options.CheckGrammarAsYouType := False;
setfont;


begin
prg := WordDocument.Paragraphs.Last;
prg.Range.Paragraphs.Alignment:=wdAlignParagraphCenter; // bundan sora gelen yazılar ortalı şekilde gelecek
prg.range.Paragraphs.SpaceAfter:=(0);
prg.range.font.Bold:= 12;
prg.range.font.Name:='Times New Roman';
// prg.Range.InsertAfter(dm.ayarlarevrakbaslik.Value+#13); // bu alan eğer veritabanı kullanıyorsanız çekeceği yere
prg.range.InsertAfter(memo1.Text+#13);
prg.range.font.Reset; // bold karakterinden reset ile yeni karakter ve boyut ayarlıyoruz.
prg.range.font.size:= 12;
prg.range.font.Name:='Times New Roman';
prg.Range.InsertParagraphAfter; // enter boşluk bırakıe
prg.Range.Paragraphs.Alignment := wdAlignParagraphLeft;
// prg.Range.InsertAfter(dm.ayarlarilgi.Value +dm.kimliksucno.Text + #9#9#9#9#9#9 + ' ' +Label1.Caption + #13); //bu alan eğer veritabanı kullanıyorsanız çekeceği yere
prg.Range.InsertAfter(Edit1.text + #9#9#9#9#9#9 + ' ' +label1.Caption + #13); // #9 bir tab ileri
// prg.Range.InsertAfter(dm.m_doktorkonu.Value+#13);
prg.Range.InsertAfter(Edit3.Text+#13);
prg.Range.InsertParagraphAfter; // enter
prg.range.font.Bold:= 12;
prg.Range.Paragraphs.Alignment := wdAlignParagraphCenter;
// prg.Range.InsertAfter(dm.m_doktorhastanebaslik.Value+#13);
prg.Range.InsertAfter(Edit2.Text+#13);
prg.Range.InsertParagraphAfter; // enter
prg.range.font.Reset;
prg.range.font.size:= 12;
prg.range.font.Name:='Times New Roman';
prg.Range.Paragraphs.Alignment := wdAlignParagraphJustify;
prg.Range.InsertAfter(#9 +dm.kimliktarihvesaat.Text + ' günün '+dm.kimliktarih_ve_saat_saat.Text +' sıralarında ' + dm.m_doktormetin.Value + #13);
// prg.Range.InsertAfter(#9 +Memo2.text + #13);
prg.Range.InsertParagraphAfter; // enter
prg.Range.InsertParagraphAfter; // enter
prg.Range.Paragraphs.Alignment:=wdAlignParagraphLeft;
prg.range.font.Bold:= 10;
prg.Range.InsertAfter('Açık Kimlik Bilgileri');
prg.Range.InsertParagraphAfter; // enter
prg.range.font.Reset;
prg.range.font.size:= 12;
prg.range.font.Name:='Times New Roman';
prg.Range.InsertParagraphAfter; // enter
prg.Range.InsertAfter('TC No' +#9#9#9 + ': '+ dm.kimlikm_tc.Value);
prg.Range.InsertParagraphAfter; // enter
prg.Range.InsertAfter('Adı Soyadı' +#9#9 +': '+ dm.kimlikm_isim.Value);
prg.Range.InsertParagraphAfter; // enter
prg.Range.InsertAfter('Baba - Ana adı ' +#9 + ': '+ dm.kimlikm_anne_baba.Value);
prg.Range.InsertParagraphAfter; // enter
prg.Range.InsertAfter('D.Yeri ve Tarih ' +#9 +': '+ dm.kimlikm_dogumtarihi_yeri.Value);
prg.Range.InsertParagraphAfter; // enter
prg.Range.InsertParagraphAfter; // enter

prg.range.font.Reset;
prg.range.font.size:= 12;
prg.range.font.Name:='Times New Roman';
//////////////////sağa yasla ve ortala imza bölümü için
prg.Range.InsertParagraphAfter; // enter
prg.Range.Paragraphs.IndentCharWidth(27); // tap ile ilerleme aralığı
prg.Range.Paragraphs.Alignment:=wdAlignParagraphCenter;
prg.Range.InsertAfter(dm.imzakollukamiri.Text+ #13);
prg.Range.Paragraphs.Reset; // tüm paragraf ayarlarını sıfırlar
prg.Range.Paragraphs.SpaceAfter:=(0); // paragraf aralığı sonra nın 0 aralık olmasını sağlar.

prg.Range.InsertParagraphAfter; // enter
prg.Range.InsertParagraphAfter; // enter
prg.Range.InsertParagraphAfter; // enter
prg.Range.InsertParagraphAfter; // enter
prg.Range.Paragraphs.Alignment := wdAlignParagraphCenter;
prg.range.font.Bold:= 12;
prg.Range.InsertAfter(dm.m_doktormetin2.Value);
prg.Range.InsertParagraphAfter; // enter
prg.Range.Paragraphs.Alignment := wdAlignParagraphJustify;
prg.range.font.Reset;
prg.range.font.size:= 9;
prg.range.font.Name:='Times New Roman';
prg.Range.InsertAfter(dm.m_doktormetin3.Value);


end;
except
on E: Exception do
begin
// hata veridiğinde word uygulaması kapanır ve yeniden aynı buton çalıştırılır.
WordApplication.Disconnect;
Button1Click(Action); // hangi butonsa onun adı yazılacak unutulmamalı
end;
end;

end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label1.Caption:=FormatDateTime('ddddd',Now);
//Label4.Caption:=FormatDateTime('t',Now);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Halt;
end;

end.
denizfatihi

Re: word gönder aktar çıkart bilgi gönder

Mesaj gönderen denizfatihi »

Merhaba,

örnek kodunuzu kendime uyarladım yanlız duruma göre sözleşme türleri değişiklik gösterebiliyor bende bunu
radiobutton içinde case ile çözmek istedim ama olmadı fikir verebilecek veya yardımcı olabilir misiniz.
Şimdiden teşekkür ederim.

Kod: Tümünü seç

procedure TForm52.BitBtn3Click(Sender: TObject);
var
  Docs, Template, NewTemplate, ItemIndex: OleVariant;
  Sayfa:Variant;
  prg :Paragraph;
   
    procedure setfont;
    begin
      WordFont.ConnectTo(WordDocument.Sentences.Get_Last.Font);
      Sayfa:=WordDocument.PageSetup;
      Sayfa.Topmargin:=25;     // sayfa yapısı üst boşluk
      Sayfa.Rightmargin:=50;   // sayfa yapısı sağ boşluk
      Sayfa.leftmargin:=50;    // sayfa yapısı sol boşluk
      Sayfa.bottommargin:=40;   // sayfa yapısı alt boşluk
    end;
    begin
     try
      Template := EmptyParam;
      NewTemplate := True;
      ItemIndex := 1;
    try
      Wordapplication.Connect;
    except
      MessageDlg('Word Belgesi oluşturulamadı', mtError, [mbOk], 0);     // bu hata ile fazla karşılaşmadım :)
      Abort;
    end;
      Wordapplication.Visible := True;// Word Belgesini Aç
      WordApplication.Caption := 'Belgenin Adı ';//Word Belgesinin adını yazı
      Template := EmptyParam;
      NewTemplate := False;
    begin
      Docs := WordApplication.Documents;
      Docs.Add;
      WordDocument.ConnectTo(WordApplication.Documents.Item(ItemIndex));   // bu alanda hata verirse Ctrl+Boşluk ile
                                                                          // aynı kodları WordApplication.Documents yeniden yazdırmaya
                                                                           // çalışın, böylece sıkıntı yaşamazsınız.
    end;

      WordApplication.Options.CheckSpellingAsYouType := False;
      WordApplication.Options.CheckGrammarAsYouType := False;
      setfont;


begin
case radiogroup1.ItemIndex of
0: begin 


      prg := WordDocument.Paragraphs.Last;
      prg.Range.Paragraphs.Alignment:=wdAlignParagraphCenter;     // bundan sora gelen yazılar ortalı şekilde gelecek
      prg.range.Paragraphs.SpaceAfter:=(0);
      prg.range.font.Bold:= 12;
      prg.range.font.Name:=edit7.text;//'Arial';

      prg.range.font.Reset;       // bold karakterinden reset ile yeni karakter ve boyut ayarlıyoruz.
      prg.range.font.size:= strtoint(edit4.text);
      prg.range.font.Bold:= strtoint(edit4.text);
      prg.range.font.Name:=edit7.text;//'Arial';
    //  prg.Range.InsertParagraphAfter; // enter  boşluk bırakıe
      prg.Range.Paragraphs.Alignment := wdAlignParagraphLeft;

     prg.Range.InsertAfter(Soz_Tipi.fieldbyname('SOZ_BASLIGI').AsString);
     prg.Range.InsertParagraphAfter; // enter  boşluk bırakıe
     prg.Range.InsertParagraphAfter; // enter  boşluk bırakıe

     prg.range.font.Reset;
     prg.range.font.size:= strtoint(edit5.text);
     prg.range.font.Name:=edit7.text;//'Arial';
     prg.range.font.Bold:= strtoint(edit5.text);
     prg.Range.InsertAfter(Soz_Tipi.fieldbyname('M1').AsString);
     prg.Range.InsertParagraphAfter; // enter  boşluk bırakıe
     prg.Range.InsertParagraphAfter; // enter  boşluk bırakıe

     prg.range.font.Reset;
     prg.range.font.size:= strtoint(edit6.text);
     prg.range.font.Name:=edit7.text;//'Arial';
     prg.Range.Paragraphs.Alignment := wdAlignParagraphJustify;
     prg.Range.InsertAfter('a)'+' '+(Sozlesme.fieldbyname('FIRMA_ADI').AsString));
     prg.Range.InsertParagraphAfter;
     prg.Range.InsertParagraphAfter; // enter  boşluk bırakıe
     prg.Range.InsertAfter('b)'+' '+(Sozlesme.fieldbyname('ADI_SOYADI').AsString)+''+' - '+''+ 'T.C.Kimlik No:('+''+(Sozlesme.fieldbyname('TCKIMLIK').AsString)+''+')');
     prg.Range.InsertParagraphAfter; // enter  boşluk bırakıe
     prg.Range.InsertParagraphAfter; // enter  boşluk bırakıe
   end;
  except
    on E: Exception do
    begin
     // hata veridiğinde word uygulaması kapanır ve yeniden aynı buton çalıştırılır.
     WordApplication.Disconnect;
     BitBtn2Click(Action);       // hangi butonsa onun adı yazılacak unutulmamalı
  end;
  end;
  end;
  
  
1: begin
  
  
  end;

  
end;
end;
end;
denizfatihi

Re: word gönder aktar çıkart bilgi gönder

Mesaj gönderen denizfatihi »

Merhaba,

Aşağıdaki gibi hallettim belki bir gün birilerine fikir verebilir.
Kolay gelsin.

Kod: Tümünü seç

egin
case radiogroup1.ItemIndex of
0: begin 

  end;
1: begin
SpeedButton1.Click;
  end;

2: begin
SpeedButton2.Click;
end;

3: begin
SpeedButton3.Click;
end;
end;
end;
Cevapla