Bir Fikir Arıyorum... Text-Copy Paste

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
bgoktas
Kıdemli Üye
Mesajlar: 769
Kayıt: 27 Nis 2004 10:32
Konum: istanbul

Bir Fikir Arıyorum... Text-Copy Paste

Mesaj gönderen bgoktas »

Arka planda çalışacak bir programım olacak. ben başka bir programdan veya delphi editörde belli bir yeri işaretleyip programıma belirlediğim kısayola tıkladığımda seçtiğim texti otomatik olarak arkaplanda çalışan programımda belirlediğim texfile a yapıştırmasını istiyorum.

örneğin word de;

Kod: Tümünü seç

merhaba delphi türkiye üyeleri
bu durumda mesela merhaba kısmını seçip birşeye tıkladığımda merhabayı alıp. c:\deneme.txt 'in en alt satırına kopyalasın...

eğer basitçe bir şey yapabilirsem büyük bir işten kurtulmuş olucam :)
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

sizin dediğiniz yöntem önce clipboarda alıp ordan istediğiniz yere almak gibi birşeymi...


Eğer öyle birşeyse

önce clipboarda alıp ordanda istediğini bileşene mesala

Kod: Tümünü seç

if clipBoard.hasFormat(CF_TEXT) then
Memo1.PasteFromClipboard;
bu şekilde yapabilirsiniz..
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
bgoktas
Kıdemli Üye
Mesajlar: 769
Kayıt: 27 Nis 2004 10:32
Konum: istanbul

Mesaj gönderen bgoktas »

cevap için teşekkürler, esasında clipboarda almadan sadece seçildiği anda yapılabilmesi iyi olurdu. fakat butona atadığım kısayolu program minimaze iken geçerli olması lazım. bu konuda bir fikriniz var mı?
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

pascalda yazar gibi bir şey yazın

bu işlemi yapıcak derleyin exe den çalıştırın o işlemi yapsın parametreyle açlıştırırsınız...
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Şu sözlük programları gibi birşey istiyorsun herhalde. Seçili metnin karşılığını getiren. Zannedersem bir Windows mesajını hook ediyorlar. Atıyorum kafadan WM_SELECT_TEXT gibi birşeyi. Buradan yola çıkarak, text'i elde ediyorlar.
bgoktas
Kıdemli Üye
Mesajlar: 769
Kayıt: 27 Nis 2004 10:32
Konum: istanbul

Mesaj gönderen bgoktas »

rx component setinde bulunan clipboardviewer ile hallettim. herhangi bir uygulamada ctrl+c yapıldığında text i alıp gösteriyor. text i alıp herhangi bir yerde sorgulama işide artık programcıya kalıyor. cevaplar için teşekkürler... :)
notname
Üye
Mesajlar: 149
Kayıt: 11 Şub 2005 02:15

Mesaj gönderen notname »

selamlar

ClipboardViewer componentini bende kullanıyorum yalnız ClipboardViewer ın içerigini memo ya gonderemedim bunun için yardımcı olabilirmisniz.
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

benim de aklım bi ara şöyle bi çözüm gelmişti.

kullanici daha önceden belirlediğim bir tuş kombinasyonuna bastığı zaman sisteme bir ctrl+c mesajı gönderip ardından panoyu okumaktı ama başarılı olamamıştım :(
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
notname
Üye
Mesajlar: 149
Kayıt: 11 Şub 2005 02:15

Mesaj gönderen notname »

ben çözdüm clipboardviewer componentini ekledim ismini clp yaptım benim amacım clp deki text'i memo ya aktarmaktı onuda su sekil yaptım

Kod: Tümünü seç

uses clipbrd;

procedure tform1.clpchange(sender:tobject);
begin
memo.Text:=clipboard.AsText;
end;
bu kod clipboardviewer componentindeki text'i memo ya aktarıyor.
ben bu şekil yaptım sorunsuz çalışıyor.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Merhaba...

- Forumun eskileri bilirler, üçüncü parti bileşenlere hep soğuk bakmışımdır.

- Resim Ya lisans problemi doğururlar ya da free bile olsa Delphi sürümü değiştiğinde versiyon uyuşması adına sorun potansiyeli vardır.

- Neyse konumuza dönelim... ClipBoard'ı bir sinema perdesi gibi düşünürsek, biz bu perdeyi izleyen programlardan biri olucaz.

- Aşağıdaki tanımı yapıp, Clipboard'a ait mesajları izlemeye almak üzere hazırlanalım...

Kod: Tümünü seç

    procedure WMDrawClipboard(var Msg: TMessage); message WM_DRAWCLIPBOARD;
- Bir global değişken tanımlıyoruz. Bu değişken THandle tipinde bir sinema koltuğu numarası gibidir. FormCreate olayında doldurduğumuz bu koltuğu, FormDestroy olayında boşalttığımızı bildirmek için kullanıcaz...

- Uses'a Clipbrd eklemeyi unutmayın...

Kod: Tümünü seç

var
  Form1: TForm1;
  SinemaKoltugu  : THandle;

Kod: Tümünü seç

procedure TForm1.FormCreate(Sender: TObject);
begin
  //- "İzlemek üzere sıra numaramızı aldık ve başladık" anlamında
  SinemaKoltugu := SetClipboardViewer(Handle);
end;

Kod: Tümünü seç

procedure TForm1.FormDestroy(Sender: TObject);
begin
  // - "İzlemeyi sona erdirdik" anlamında...
  ChangeClipboardChain(Handle, SinemaKoltugu);
end;
- Sıra geldi izleme durumuna burada ilgilendiğimiz clipboard veri türüne göre IF koyup, diğerlerini ihmal edicez...

Kod: Tümünü seç

procedure TForm1.WMDrawClipboard(var Msg:TMessage);
begin
  if Clipboard.HasFormat(CF_TEXT) then // Uses Clipbrd
  begin
    Memo1.Lines.Add(Clipboard.AsText)
  end;
end;
Clipboard formatları Windows.PAS içerisinde tanımlanmıştır. Size bilgi olsun diye ekliyorum...

Kod: Tümünü seç

  // Predefined Clipboard Formats (Windows.PAS içinde tanımlı)
  CF_TEXT            =    1;
  CF_BITMAP          =    2;
  CF_METAFILEPICT    =    3;
  CF_SYLK            =    4;
  CF_DIF             =    5;
  CF_TIFF            =    6;
  CF_OEMTEXT         =    7;
  CF_DIB             =    8;
  CF_PALETTE         =    9;
  CF_PENDATA         =   10;
  CF_RIFF            =   11;
  CF_WAVE            =   12;
  CF_UNICODETEXT     =   13;
  CF_ENHMETAFILE     =   14;
  CF_HDROP           =   15;
  CF_LOCALE          =  $10;
  CF_MAX             =   17;
  CF_DIBV5           =   17;
  CF_MAX_XP          =   18;
  //  Note:CF_MAX changes values if WINVER < 5. In order to maintain
  //  backwards compatability, use CF_MAX for WINVER < 5, and CF_MAX_XP for
  //  WINVER > 5.
  CF_OWNERDISPLAY    =  128;
  CF_DSPTEXT         =  129;
  CF_DSPBITMAP       =  130;
  CF_DSPMETAFILEPICT =  131;
  CF_DSPENHMETAFILE  =  142;
  //  "Private" formats don't get GlobalFree()'d
  CF_PRIVATEFIRST    = $200;
  CF_PRIVATELAST     =  767;
  //  "GDIOBJ" formats do get DeleteObject()'d
  CF_GDIOBJFIRST     =  768;
  CF_GDIOBJLAST      = 1023;
Resim
Resim ....Resim
samety81
Üye
Mesajlar: 84
Kayıt: 07 Nis 2006 03:53

merhabalar

Mesaj gönderen samety81 »

merhabalar yeni kodu acmak istemedim.
clipboadtan text okuyorum fakat clipboarda
clipboard.astext:='aa';
seklinde atarken cannot open clipboard gibi bir hata ile karşılaşıyorum
saygılar
Yardıma İhtiyacım var galiba TAM burda :)
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Kod: Tümünü seç

Edit1.Text:='aa';
Edit1.SelectAll;
Edit1.CopyToClipBoard;
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Cevapla