Favorilerine Ekle | Giriş Sayfan Yap | Tavsiye Et

 

Kurs Tanıtım Sayfası | Süper Üye Kimdir? | Menü Tasarımı Konulu Örnek Ders
Kod İndir| Hazır Kodlar | Makaleler| İpuçları | VB .NET Kursu | Dersler | Forum | Alt Bölümler | Servisler
    Merhaba Misafir
    anasayfa » visual basic makaleleri » Word VBA kullanılmasına açıklamalı küçük bir örnek
Üye Girişi
Kullanıcı Adı:  
Şifre : 
Kaydet ?
Siteden tam olarak faydalanabilmek için üye olmalısınız.
Unuttuğunuz şifrenizi öğrenebilmek için kayıt sırasında verdiğiniz Hatırlatma Cevabı'nı bilmeniz gereklidir.
Şifre hatırlatma işlevini sadece 3 defa kullanma hakkınız vardır.
Kullanıcı adını ve şifresini unutan üyelere email ile yardım verilmez.

Aktivasyon Gelmedi mi?Aktivasyon mesajınız email adresinize gelmedi mi?
Buraya tıklayarak bir kez daha aktivasyon mesajı gönderilmesini sağlayabilirsiniz.
Lütfen email hesabınızın BULK ve SPAM klasörlerini de kontrol ediniz.
Rastgele Makale

Textbox formatı istediğiniz gibi olsun (Microsoft Masked Edit Control 6.0)

Yazar: serkanyetkin

Webmasterlar
Sitenize Ekleyin!
Sitenizde "Son Eklenen 10 Visual Basic Yazısı"'nı göstermek ve içeriğini zenginleştirmek için buraya tıklayınız.

Vbasicmaster.com'a link verin!
Aşağıdaki minik banneri sitenize eklemek için tıklayın!

Üye Sayısı:
Ziyaretçiler nerede?
Yayın № : 5446
Yayın Tar:21.12.2005
Yazar : mahoni06
Hit :8484

Bu Yazarın Yazıları Sadece bu yazarın  göster
Bu Yazıyı Tavsiye Et

Bu yazıyı Pagemen arkadaşıma ithaf ediyorum ;o)

I. LAF Ü GÜZAF
Pagemen arkadaşın devir kapatan yazısından sonra, bunu yazmayı başta kendime ve Pagemen?e ve diğer tüm arkadaşlara bir borç bildim.
Bu yazıda http://www.vbasicmaster.com/vbbilgisi.asp?id=5377&sayfa=1&type=mak Linkinde yer alan Pagemen arkadaşımıza ait ?Word?de vbasic ile ne yapılır? konulu yazı esas alınmıştır.

Bu yazı tamamıyla mütevazıdır; eksiklikleri ve yanlışlıkları olabilir, hiç bir iddiam yok: her ne kadar tamamıyla orijinal olsa da...
Ne de olsa; bir bildiğim varsa bir şey bilmediğim diyen sokrat usta üstadım ve descartes?in cetigosu düsturum.
Bugün bir meslek seçsen ne olurdu dediklerinde, cevabım: üniversitede araştırma görevlisi olmak isterdim...
Her ne kadar araştırma görevlilerinin bir ederi bulunmasa da.
Batıda her başarılı adamın arkasında eşi olsa da, beylik lafının aslı: her başarılı bilim insanının yada kariyer yapmış meslek adamlarının arkasında bir danışman -yada araştırma görevlisi- vardır.

Çıkarılacak sonuçlar:
1. Az bilende deli cesareti olur,
2. Çok bilen çok yanılır,
3. Çok bilenin dili uzun olur,
4. El elden akıl akıldan üstündür,
5. Kendini bilenin ömrü benzerlerinden uzun olur
6. Usda yan ataşta boğul (Bukowski ;o)
7. vs. vs.

Bu kadar felsefe yeter; her bilginin başı araştırmak yani...


II. GİRİŞ:
Şimdi o yazıdaki örnek makro1 modülü (basitçe bul değiştir: belge içerisindeki vbenter, "|" ile değiştirilmektedir) için 3 yöntem ele alınmıştır:
1. En basit şekliyle replace komutu
Eğer biçimlendirme önemli değilse en hızlı yöntemdir
2. Word içerisinde bulunan bul-değiştir komutu
(acaba gerçekten tüm özelliklerini biliyor muyuz?)
Biçimlendirme istenen bir özellikse en uygunu
3. Bir döngü içerisinde istenen kelimeyi-cümle vs. Aramak ve
İstenen dize ise değiştirme işlemini yapmak
Biçimlendirme önemliyse bu da kullanılabilir.

III. BASİT REPLACE KOMUTU:
'önce tüm dokümanın başlangıcına gidelim
'eğer belirlediğimiz yerden sona doğru olsun istersek
'bu satırı iptal edelim....
Selection.HomeKey unit:=wdStory
'homekey=ilk karakter ctrl+home tuşu, endkey=sonkarakter ctrl+end
'üniteler:bunu adımlar gibi düşünebilirsiniz, burada kullanılabilecek bazı değerler;
'wdstory=tüm metin
'wdsentence=cümle
'wdcharacter=karakter
'wdparagraph=paragraf
'wdline=satır
'wdword=kelime

'şimdi seçimi doküman sonuna kadar genişletelim
'eğer sadece işaretlediğimiz alan içerisinde
'işlemi yapmak istersek bunu da iptal edebiliriz...
Selection.MoveEnd unit:=wdStory
'seçimimizin metni tüm dokümanda yazılanları verir
txt = Selection.Text
'şu anda seçili olan metin
'basitçe bul değiştir
txt = Replace(txt, Chr(13), "|")
'değişen metnimizi selection a geri atıyoruz
'Word dokümanı değişmiş oldu...
'bu kadar....
Selection.Text = txt

'şimdi geldik bunun mahzurlarına;
'tüm biçimlendirmeler kaybolacak!!!!!
'bu durumda Word?ün bul değiştirini çalıştırabiliriz
'yada karakter karakter metni kontrol eder
'eğer karakter enter ise siler ve yeni karakteri girebiliriz....

IV. WORD?ÜN BUL-DE?İŞTİR KOMUTU:
'bul-değiştir yöntemi için
'şimdi Word?ün bul-değiştir fonksiyonu kullanalım;
Selection.HomeKey unit:=wdStory
'önce metnin ilk başına gittik gerek yoksa iptal edilebilir
Selection.Find.ClearFormatting
'bulma işlemi biçimlendirme temizlenecek
Selection.Find.Replacement.ClearFormatting
'değiştirme işlemi biçimlendirme temizlenecek
With Selection.Find
'bulma işlemi
.Text = Chr(13)
'bulunacak kelime
.Replacement.Text = "|"
'değiştirilecek kelime
'bu arada replacement değiştirme fonksiyonunun da pek çok özelliği vardır
'bazıları; font, style, paragraphformat, hightlight, parent
'değiştirdiğimiz kelimeleri biçimlendirelim/
.Replacement.Font.Bold = True
.Replacement.Font.Color = wdColorRed
.Replacement.Font.Size = 14
'.Replacement.Font.Italic = True
.Replacement.Font.Name = "Tahoma"

'eğer istemiyorsak üstteki satırları iptal edelim....
'.Forward = True
'arama yönü ileriye 'bu varsayılandır iptal de edilebilir
.Wrap = wdFindContinue
'bulma işleminin durma durumu, devamlı -sonuna kadar aramaya devam-
.Format = False
'biçimlendirme yok 'iptal edilebilir varsayılan
'eğer bulma işleminde biçimlendirme-vurgu-stil vs. kullanacaksanız
'onları atayıp formatı=true yapmanız gerekir, yani: o biçeme sahip kelimeleri bulmaya çalışacak
'.Font.Bold = True 'bulunacak kelime koyu
'.Font.Color = wdColorDarkRed 'bulunacak kelime koyu kırmızı renkli
'.Font.Italic = True 'bulunacak kelime italik
'.Font.Name = "Tahoma" 'bulunacak kelime font tipi Tahoma
.Format = True 'biçimli bulma-değiştirme var ise
.MatchCase = False
'büyük-küçük harf duyarlı = hayır 'iptal edilebilir varsayılan
.MatchWholeWord = False
'komple kelime (kelime bütünlüğü) ile eşleştirme
.MatchWildcards = False
'joker karakterlerle eşleştirme
.MatchSoundsLike = False
'eşleştirme de benzer sesli kelimeleri de (sadece İngilizce de)
.MatchAllWordForms = False
'tüm kelime formlarında eşleştirme sadece İngilizcede
'özelliklerde =false yazan satırları komple silebilirsiniz
'bu kodların çalışmasında herhangi bir aksaklığa neden olmaz...
'hatta sildiğiniz zaman bu kodunuzun hızlanmasına yardımcı olur
'özellikle printer fonksiyonları için mutlaka silin...
End With
Selection.Find.Execute Replace:=wdReplaceAll

'önce bul sonra değiştirme işlemini tümü için yap

V. DÖNGÜ İÇERİSİNDE BUL-DE?İŞTİR:
'şimdi başka bir yol
'
Selection.HomeKey unit:=wdStory
Selection.MoveEnd unit:=wdStory


'belge içerisindeki sözcük-cümle vs. sayısını bulmak
'bulunan bu sayılar genellikle araçlar-sözcük sayımı fonksiyonu ile eşleşmez (aynı değildir!!!)
'bunun nedeni enter gibi özel karakterlerin karakterden sayılmamasıdır
'fakat aşağıda gösterilen yöntemde bulunan sayılara her karakter dahildir
'özel karakterler de bunlara dahildir....
'karakter sayıları sözcük sayımında boşluklu ve boşluksuz olarak verilir,
'nedeni ise kelimelerin son karakteri genelde boşluktur -cümle içerisindeki yerlerine göre-
'kelimelere boşluk dahil edilmiştir fakat noktalama işaretleri
'kelimelere dahil değildir. tek denilebilecek şey Microsoft öyle uygun görmüş
'öyle olmuş ;o)
'-şaka bir yana kelimenin sonu değil başı önemli görüldüğü için bu-
'ayrıca bu sayılar sadece seçili alanlar için geçerlidir ***************
'Word ün sözcük sayımında ise tüm belge için geçerlidir.
kelimesayı = Selection.Words.Count
cümlesayı = Selection.Sentences.Count
paragsayı = Selection.Paragraphs.Count
karaktersayı = Selection.Characters.Count


tablosayı = Selection.Tables.Count

'hücresayı = Selection.Cells.Count 'seçilen tablo varsa yoksa hata verir
'satırsayı = Selection.Rows.Count 'seçilen tablo için geçerli
'sütunsayı = Selection.Columns.Count 'seçilen tablo için geçerli

'belge içerisindeki metni almanın başka bir yolu
'aslında asıl yolu... aktif seçili dokümanın içeriği almaktır
'üstteki yollarda ise seçili alanlar için geçerliydi!!!
'seçili alanlar genelde işlem yapacağınız metni kendinizin belirlemesini sağlar
'zaten bu da makrolarda uyguladığınız işlemlerde esneklik sağlar...
'bu yüzden benim seçimim (ctr+f ile f3 arasındaki farkın nedeni de bu olsa gerek)
'üstteki homekey yada endkey gibi anahtarları kullanmaktır...
'(tabi ki tüm belge üzerinde işlem yapmayacaksam, genelde yapmıyorum ;o)

'aktif seçili dokümanın anlamı ise wordde birden fazla belge aynı anda açık olabilir
'açık olan bu belgelerden o anda sizin seçtiğiniz etkin olandır...
'belgeler (çoğul anlamda) için .documents kullanılır
'mesela açık belgelerin sayısını bulmak için .documents.count işinize yarayacaktır ;o)

txt = Selection.Document.Content
'tüm dokümanın içeriği
cümlesayı = Selection.Document.Sentences.Count
'tüm dokümanın içerisinde geçen cümle sayısı
karaktersayı = Selection.Document.Content.StoryLength
'üsttekiyle aynı sadece metin uzunluğu anlamında (sonuçta metni oluşturan karakter değil mi ;o)
kelimesayı = Selection.Document.Words.Count
'doküman kelime sayısı

'bundan sonra bize kalan: metin içerisindeki işlem kelime karakter cümle satır paragraf vs. sayılarını bulabildiğimize göre bize uygun olanını döngüye sokmak ve üzerinde işlem yapmak
'şimdi enter değiştirmesi yapacağımıza göre; her ne kadar ben cümleleri seçmiş olsam da,
'sizce size en uygun olan hangisiyse onunla işleminizi yapın ;o)

'önce en üste konumlandık
Selection.HomeKey unit:=wdStory
For i = 1 To cümlesayı

'burası size kalmış
'şimdi sonraki kelimeyi seçelim
Selection.MoveRight unit:=wdSentence, Count:=1, Extend:=wdExtend
'her ne kadar adı moveRIGHT olsa da türkçesi SONRAKİNE git demektir
'left de bu durumda önceki git demek olur ;o)
'bu komutun içeriğinin anlamına gelecek olursak;
'ünite:: daha önce anlatıldığı gibidir
'count:: göreceli olarak gibi gözükse de mutlaktır ünite sayısını belirtir
'extend:: seçimin genişletileceği anlamına gelir
'eğer extend kullanılmazsa komut sadece git anlamını taşır
'kullanıldığında ise seç anlamını taşır...
'konu dışı; extend siz cümle yapısı aşağıdakiyle aynıdır;
'Selection.GoTo What:=wdGoToLine, Which:=wdGoToNext, Count:=1, Name:=""
'bu cümleyi sadece imleci konumlandırmak için kullanmaktayız
'burada ise goto:: git anlamında
'what:: üstteki üniteyle aynı anlamda satıra git, kelimeye git, bölüme git vs.
'which:: görecelidir next=sonrakine, first=öncekine
'count:: aynı kaç ünite gidilecek
'name:: eğer etiket kullanılmışsa o etikete git
cümle = Selection.Text

'eğer seçilen kelimelerin ilk ve son kelimeleri sizin için önemliyse;
'sonkelime = Selection.Words.Last
'ilkkelime = Selection.Words.First
'eğer belgenin ilk ve son kelimeleri sizin için önemli ise;
'sonkelime = Selection.Document.Content.Words.Last
'ilkkelime = Selection.Document.Content.Words.First


'kelimeler için küçük bir not: kelimeler boşluklarla (chr(32) yada spacebar da denilen)
'bölünür ve kelimelerin sonundaki bu boşluklar kelimeye dahildir ;o)
'?,. enter gibi noktalama işaretleri ayrı bir kelime olarak görünürler
'daha önce karakter sayısındaki farklılıklar olarak (özel karakterler) bu açıklanmıştı

'cümleler için bir not:
'enterler ayrı bir cümle sayılmaktadır!!!
'cümlelerde cümle sonları noktalama işaretleri ve boşluklar içerebilir.

If cümle = Chr(13) Then
'aradığımız şey ve ne işlem yapacaksak o işlemler
Selection.Text = "|"
'değiştirilecek kelime
Selection.Font.Bold = True
'bunlar da biçimlendirmeler...
Selection.Font.Color = wdColorRed
Selection.Font.Size = 14
'Selection.Font.Italic = True
Selection.Font.Name = "Tahoma"
End If


'cümleyi aldık şimdi imleci ilerletelim
Selection.MoveRight unit:=wdSentence, Count:=1
'extend hariç üstteki cümleyle aynı ve açıklaması üstte

Next i
'for-next döngüsü yerine do-loop da yapılabilirdi
'ama benim her zaman özenle kullanmaktan kaçındığım bir döngü
'nedeni kontrolsüz ve yavaş olması!!!

'şimdi bu moveright yada goto komutunu görünce 100 ncü kelimeyi al -doğrudan- gibi bir komut yok mu dediğinizi duyar gibiyim ;o)
'cevabı yok, yok olmasına ama basitçe bunu yapmak için önünüzde iki yol var
'ne de olsa hayalini kodla diye boştan yere denmiyor -kimse sizin hayalinizi sizin gibi kodlayamaz- ;o)
'birinci yol -kod tabanlı uzun yol-
'metin alınır
'kelime ayraçları belirlenir
'bu ayraçlar metinde geçmeyen karaktere (yada karakterlere daha doğru olabilir) dönüştürülür
'bu dönüştürülen karakterler esas alınarak metin split fonksiyonu ile parçalanır
'dizideki istenilen (100ncü kelime) gösterilir -instr ile de yapılabilirdi biraz daha uğraşmak isteyenler için-
'yada worde daha çok yaraşır olan ikinci yol
'metnin başına imleç konumlandırılır
'istenilen kelimeye (100ncü) kelimeye moveto ile gidilir
'seçim bir sonraki kelime başına kadar genişletilir
'seçimin metni istenilen kelimeyi verir

VI. SONUÇ:
bu kadar yeter! mantık görüldüğü üzere basit:
vbenter + vbenter i bulup ikinci vbenteri vbtabla değiştirirseniz; paragrafınızı da yapmış olursunuz
üçten fazla boşluğu bulup komple vbtabla değiştirirsiniz daha düzgün görüntü alırsınız
bir satırda pek çok vbtab (genellikle 12 den fazla) varsa; satıra sığmadığını anlayabilirsiniz
tab sayısına bağlı kalmadan -belge genişliğini, fontları da göz önüne alarak-
tab sayısı birden çok ve satıra sığabiliyorsa -tablo gibi düşünün- belge genişliğine göre tabları
ayarlayabilir ve ortalayabilirsiniz
bunlar basitçe belge biçimlendirmeleri üzerineydi...

VII. PEKİ YA BAŞKA:

peki başka ne yapabilirsiniz;
- belgenin lisanını bulabilirsiniz
- belgeyi otomatik olarak yazım ve dilbilgisine uyumluluğunu -Word fonksiyonu kullanarak- denetleyebilir
ve düzeltebilirsiniz -bu arada Wordün dilbilgisi çok da iyi değil dikkat! ama yine de çoğumuza taş çıkartır ;o)
- otomatik olarak tabloları oluşturabilir, düzenleyebilirsiniz
- otomatik belgeler -adres, mektup birleştirmeleri gibi- oluşturabilirsiniz
- otomatik olarak belgenizi e-posta ile gönderebilir, html gibi düzenleyebilirsiniz
- madde işaretlerini ve numaralandırmayı otomatik olarak yapabilirsiniz
- tablonuzu otomatik olarak istediğiniz alana göre sıralayabilirsiniz
- Excel, Access ve diğer Office uygulamaları ile otomatik veri alış/verişi yapabilirsiniz
- otomatik olarak başlık ve dipnot ekleyebilirsiniz
- otomatik olarak seçtiğiniz kağıt yada yazıcıya göre belgenizi düzenleyebilirsiniz
- otomatik olarak yazım düzenini denetleyebilir ve düzeltebilirsiniz
- otomatik metinler oluşturabilir ve steno gibi yazımlarda düzeltme yapabilirsiniz

- yani kısaca wordde elle yaptığınız her şeyi otomatikleştirebilirsiniz,
(basitçe bilgisayardan ne yapmasını isterseniz bilgisayar onu yapar;
programcıların kendilerini biraz da tanrı yerine koyması bundandır:
yaratmak kelimesini de bu yüzden çok sık kullanırlar ;o)

VIII. YARDIM:
takıldığınız yerde;
1. makro kaydete gelin, işleminizi yapın, makro düzenlede ne yapılmış görün
2. anlamadığınız cümle ile ilgili Office yardımcısına başvurun;
(işinize yarayacak -vba ile ilgili- tüm konular İngilizce bu arada ;o)
3. object.borewseri mutlaka kullanın; o kadar nesne boştan yere yazılmadı oraya
- uzun yoldan çözdüğünüz yer olayın bir kısa yolu vardır mutlaka ;o)

IX. SON SÖZ:
BASIC bilen birinin vba kullanmaması kesinlikle hata;
vba lar size saygı ve güç kazandırır, para kazanamasanız da ;o)

herkese mutlu günler

yararlanılan kaynaklar:tamamen kişisel tecrübelerim ve az biraz Office yardımcısı

hamiş: iyi bir yazı olmuş; üç satır koda yüz satır açıklama ;o)

;o)





Yorumlar, eklemeler ve düşünceler
        Tebrik ederim...

Demek senin yazı yazabilmen için birinin örnek göstermesi gerekiyor.
Bundan sonra günlük kullanımda pratik yapılan makroları önce sana yollarız, bir bakarsın; her satırı en güzel nasıl yazarım diye düşünürsün. Ardından aslolan bilgidir deyip alt alta geldiğinde bir bütün oluşturmasa da bir satır kod on satır laf hazırlar yayınlarsın.

Her geçen gün biraz daha ileriye gidiyoruz; artık bir fikir üretip paylaşmak yerine laf kalabalığını maharet sayan insanlar çevremize doldu.

Yukarıdaki yazıda neyi açıkladığını kendi kendine cevaplar mısın.
Başka bir yazıda yazılanın bu komutlarla da yapılabileceğini söylemek bilgi paylaşımı mı oluyor.

Şimdi oturalım tek tek satır takibi yapalım, ben bilirim sen bilirsin vs. vs. vs.

Aşağıdaki özü dikkatle oku belki işine yarar !
Programcılıkta özellikle kalıcı bir yazılım hazırlamıyorsan o an işini gören bir prosedür her zaman yeterlidir. Kalıcı bir yazılım da hiç bir zaman üç beş satırlık prosedürden oluşmaz.

Şimdi kendi fikrinle burada geçmeyen bir konuda bir yazı yaz da insanlarla paylaş.
Yazdıklarına kabaca göz attığımda hep başkalarının yazılarını aslolan bilgidir kalıbı içine alıp bol laflı kitap hitabı görüyorum.

Senle ilgili başka yorum vb. yapmayacağım. Yazışmalarını - yorumlarını keyfince devam ettirebilirsin.

Herkese iyi çalışmalar....

   pegamen, 21.12.2005 09:22
   Temiz bir yazı. Hayatımda Office içerisinde VBA hiç kullanmadım(ihtiyaç hissetmedim). Bu yüzden mantığıda bilmem. Bu benim ve diğer birçok kişi için giriş kapısı gibi bir makale. Bir gün ihtiyacım olduğunda ilk okuyacağım yazı.

Gerisine gelince, gerisimi? Boşver. Galiba insanlara hatalarını yada eksik yönlerini söylendiğinde hakaret gibi algılanıyor.

Yazı için teşekkürler.

İyi çalışmalar...

   scareabus, 21.12.2005 12:24
   sanırım bir ilki gerçekleştirdim (bu tür bir yazının birisine ithaf edilmesi ;o)
1. bölüm sadece pagemen içindir
7. bölüm ne yapabilirim nasıl yapabilirim diyen diğer tüm okuyucular için

aslolan bilgi' nin amacı: gayet basit. kodu al çalıştır böyle olur değil,
bu kodu böyle yazarsan böyle çalışır, burasını böyle değiştirirseniz böyle olur
hep ihtiyaç duyulan şeylerden değil, ihtiyacınız olmayan şeylerden ilham alırsınız

örneğin kırk çeşit dinazorlar sınıfı yaratıp, birbirlerini yedirirmek isterseniz; kırk çeşit sınıf yazmanıza gerek yok ya bir de dinazorları yumurtlatmak isterseniz?
-tek bilmeniz gereken implements; kaç kişinin ihtiyacı olmuş şimdiye kadar, kaç kişi kullanmış bu sitede derseniz, belki de cevabı hiç...

variant dizilere teknik bir bakış, ödünç kodlar yazılarıma kabaca bakmasaydın asıl olanın bilgi olduğu açık...

basitçe aslolan bilgi
herkese iyi çalışmalar

;o)



   mahoni06, 21.12.2005 22:57
   mahoni verdiğin örnekte beni üzen bir suruma değinmişsin. Implements (Kalıtım), yani OOP'nin en büyük özelliklerinden biri. Aslında tam olarak örneğinde anlattığın yumurtlama olayı değil :) Bu yumurtlama olayını implements kullanmadanda (kısıtlı olsada) halledebiliriz. Implements daha çok varolan bir sınıfı başka bir sınıfın içerisinde sanki kendi üzerinde yazılmış gibi kullanmak, vaolan sınıfa yeni metodlar, özellikler katmak olarak açıklanabilir.

Visual Basic OOP değil diye iddia edenlerin ipliği kireç kuyusunda yansın :)
Kalıtım özelliğine bir çok kez ihtiyacım oldu aslında. Yakında Visual Basic'in tek OOP yönünün butona basınca gerçekleşen olay olmadığını anlatacak bir yazı dizisi yazacağım inşallah.

Bu arada OOP'ye, daha doğrusu Visual Basic'e QBasic'ten geçen (C geçmişini unutmamak lazım) mahoninin OOP konusunda edindiği tecrübe ve birikimin herkese örnek olması gerekir.


   scareabus, 21.12.2005 23:29
   VB6.0'dan ms word dosyası üzerinde nasıl değişiklikler yapabilirim diye ararken çok güzel bir kaynak oldu benim için uygulama kaynak kodlarını ayrıca gönderecem.

Tebrik ediyorum, çok güzel bir yazı...

   ozbelli, 05.01.2007 15:13
© Hakan Ersöz 2000-2013| Üyelik Sözleşmesi | | Ödeme Bildirimi
Sitemizden yenilikleri hemen öğrenin, pop upları engelleyin, chat yapın... ToolBarımızı indirin:
Vasicmaster Toolbar'ı indirin