27 Nisan 2014 Pazar

Delphi 7 - Veri Tabanından ClipBoarda Veri Kopyalama


      Bazen Veritabanın'dan bilgileri Excel gibi yerlere kopyalamak isteyebiliriz. Bunun için Giridlerin hali hazırda zaten bu özellikleri mevcuttur. İstediğiniz gibi bu özelliğini açıp kapayabilirsiniz. Fakat bazen kopyalamak istediğiniz şeyler biraz kompleks olmaya başlayınca hangi verilerin ClipBoarda kopyalanacağını kontrol etmek isteyebilirsiniz.



    Bu yazıda basit bir şekilde bir VeriTabanı verisinin ClipBoarda nasıl kopyalanacağını anlatmaya çalışacağım. Bunun için küçük bir örnek yaptım. Forma bir Grid ve birde Memo koydum. Böylece  ClipBoarda kopyalanan her şeyi Memoyada da görebiliriz.



     Pekli ClipBoardla neler yapılabilir. ClipBoarda resim,yazı ve diğer başka formatlarda birçok veriyi atıp bir yerden başka yere kopyala, kes, yapıştır işlemini yapabiliriz.

    Bizim verilerimiz string tipinde ve bunu ClipBoarda kopyalamak için:

ClipBoard.AsText

   Komutunu kullanacağız.

  Öncelikle bir ClipBoard ve iki tanede StringList oluşturacağız. Birinci StringListte kolon başlıklarını tutarken ikincisindede kolon değerlerini kaydedeceğiz. Daha sonrada bu kayıtları ClipBoarda kopyalayacağız.



  Bütün Kodlar:

procedure TForm1.Button1Click(Sender: TObject);
const
  Bosluk = CHR(9);
var
  AClipBoard   : TClipBoard;
  AStringList1,AStringList2  : TStringList;
  ABookMarkList : TBookmarkList;
  ABookMark : TBookmarkStr;
  Indexs,Index2 : Integer;
  DataSeti,KolonIsimleri :String;
begin
  Try
  AStringList1      := TStringList.Create;
  AStringList2      := TStringList.Create;
  AClipBoard        := TClipBoard.Create;
  ABookMarkList     := TBookMarkList.Create(nil);
  ABookMark         := cdsSQL.Bookmark;
  KolonIsimleri := '';
  DataSeti := '';

 If dbgSQL.SelectedRows.Count > 0 Then
  Begin
    For Indexs := 0 To cdsSQL.FieldCount -1 Do
      Begin
       AStringList1.Add(Trim(qryAdo.Fields[Indexs].FieldName));
       KolonIsimleri := KolonIsimleri + Trim(cdsSQL.Fields[Indexs].FieldName) + Bosluk;
      End;

    AStringList2.Add(KolonIsimleri);
    ABookMarkList := dbgSQL.SelectedRows;
    For Indexs := 0 To ABookMarkList.Count -1 Do //dbgSQL.SelectedRows.Count- 1 Do
       Begin
       cdsSQL.Bookmark := ABookMarkList.Items[Indexs];
         For Index2 := 0 To cdsSQL.FieldCount -1 Do
          Begin
            DataSeti := DataSeti + Trim(cdsSQL.FieldByName(AStringList1.Strings[Index2]).AsString) + Bosluk;
          End;
       AStringList2.Add(DataSeti);
       DataSeti := '';
       End;

    Memo1.Lines.Add(AStringList2.Text);
  End;
  Finally
  AClipBoard.AsText := AStringList2.Text;
  AStringList1.Free;
  AStringList2.Free;
  End;
end;


   Kodları incelerseniz yapının basit olduğunu görebilirsiniz. Verileri StringListlere kopyalamak için döngülerden seçili verilerde gezebilmek içinde BookMark nesnelerini kulladım.

  Kodları ayrıntılı inceleyerek ve modifiye ederek veritabanından  sadece size gerek yerleri kopyalabailirisiniz. Örneğin sadece ad ve soyadı yada herhangi bir analiz yapıyosanız cinsiyet , yaş ve araştırdığınız konu ile ilgili verileri kopyalamasını isteyebilirsiniz.



Okuduğunuz İçin Teşekkür Ederim
Hakan UÇAR
İstatistikçi ve Amatör Programcı
İçerikler Tamamen Ücretsiz Olup Özgün Anlatımdır Paylaşırken Kaynak Belirtiniz Lütfen.

Uygulamayı Yandex Diskimden indirebilirsiniz.


                          Soru Sormak ve Bilgi Almak İçin Mail Atınız: hakanucaar@yandex.com




















0 yorum:

Yorum Gönder