Monster Notebook
 
Şimdi Üye Ol | Şifremi Unuttum
Ana SayfaSanalkurs.netProgramlarSanalkurs.netÖnemli SitelerSanalkurs.netYazarlarSanalkurs.netDers EkleSanalkurs.netE-DergiSanalkurs.netBlog Sanalkurs.netİletişimSanalkurs.netForum
 
Anasayfa » Corel Draw (132 ders)
 
CorelDraw VBA - Tek Sayfaya Çift Numaralandırma

Yazar: Tunç Y. Olçay  
Eklenme: 11.06.2009   Okunma: 3785   Seviyesi:  İleri
 
Başlangıç Notu: Bu dersi direk okumadan önce, bundan önceki VBA derslerini okuyup, anladığımızdan ve birkaç deneme yaptığımızdan emin olalım. Çünkü önceki derslerde anlatılmış olan, gms'ye; form, buton, modül vb ekleme konuları direk geçilmiş olacaktır. Bu yüzden herhangi bir kafa karışıklığı olmasını önlemek adına önceki derslerden bu zamana belli bir düzeye geldiğimize emin olalım.

Aslına bakarsanız hali hazırda CD içinde numaralandırma üzerine yazılmış bir .gms modül var. (CorelMacros.PageNumbering) Ama bu hazır gms tek bir sayfaya numaralandırma yapıyor. Bazı kitap, dergi dizgilerinde sayfa yatay konuma getirilip sayfalar iki tarafına yerleştirilir. Böylelikle bir sayfa içinde 2 sayfa oluşmuş olur ve numaralandırmanın sayfanın iki tarafına yapılması gerekebilir. Bu nedenle, bu dersimizde CorelDraw VBA'mıza tek sayfa içine nasıl çift numaralandırma yaptırabileceğimizi öğreneceğiz.

Şekilde göreceğiniz üzere bir gms yaratmış(İşaret: 1), onun altına da bir adet form (İşaret: 2 ve 2a), bir adet textbox(İşaret: 5 ? 5a), bir adet buton (İşaret: 4 ? 4a) eklemiş bulunmaktayız. Formun direk çalışmaya başlaması için bir "Main" modül yazmak da yararlı olabilir. (İşaret: 3 - 3a - 3b) Sayfa üzerine rahatça tıklamak için formumuzun ShowModal bölümünün "False" a ayarlanmış olması gerekiyordu, hatırladık mı? (İşaret: 6)

http://resim.sanalkurs.net/uploads/ders15_00.jpg

Evet kodlarımızı yazmaya başlayalım ve de açıklamalarını da karşılarına ekleyelim (' ile başlayan yerler tanımlar için, kod olarak işlemezler);

ilk bölüme dim ile başlayan tanımlamaları yazalım;

Dim collpages As Pages 'döküman içindeki sayfaları bir koleksiyon yapacağımızın tanımı
Dim p As Page 'p harfi ile sayfayı temsil edeceğiz
Dim i As Double 'numaralandırmayı double tanımlamasına göre yapacağız, i harfine numerik değer atanacak.
Dim t1 As Shape 'ilk sayfa numarası için bir nesne ataması
Dim t2 As Shape 'ikinci sayfa numarası için bir nesne atamasıDim rect1 As Shape 'ilk sayfa numarasının içine hizalanacağı yardımcı kare için nesne ataması
Dim rect2 As Shape 'ikinci sayfa numarasının içine hizalanacağı yardımcı kare için nesne ataması

Buton tıklandığında harekete geçecek olan kodları da yazalım;

ActiveDocument.Unit = cdrMillimeter 'aktif olan dökümanımızın ölçü birimi, mm yapalım... i = tncnum.TextBox1.Text 'form üzerindeki textbox'a girilen değer i'ye aktarılsın.
Set collpages = ActiveDocument.Pages 'dökümanımız içinde oluşturulmuş sayfaların tanımı, toplamı yani koleksiyon
For Each p In collpages 'koleksiyon içinde olan her sayfa için diyoruz, döngü başlıyor

Şimdi önce birinci sayfa numarası için gerekli kodları yazalım ve aşağıya kalın harflerle tanımlarını yapalım;

Set rect1 = p.ActiveLayer.CreateRectangle(0.35, 0.8, 1.2, 0.5)

?aktif katmana bir kare yarat (parantez içindeki rakamlar önemli değil, konumunu ve boyutunu inç birimi üzerinden gelişigüzel yapıyor daha sonra zaten karemizi boyutlandırıp, sayfa sol alt köşesine hizalama yaptıracağız)
rect1.Fill.ApplyNoFill ?karenin içi boş olsun
rect1.SetSize 15, 12 ?enini 15mm, yüksekliğini de 12 mm olarak boyutlandırıyoruz.

rect1.Outline.SetProperties 0.003, OutlineStyles(0), CreateCMYKColor(0, 0, 0, 100), _ ?buraya konan alt çizginin "_"anlamı; satır uzayacak devam eden kodları aşağı satıra alıyorum işaretini veriyoruz.
ArrowHeads(0), ArrowHeads(0), False, False, cdrOutlineButtLineCaps, cdrOutlineMiterLineJoin, 0#, 100 ?karenin ana birimleri bu standartta yazılır.

rect1.AlignToPage cdrAlignLeft + cdrAlignBottom, cdrTextAlignBoundingBox ?şimdi kareyi sayfanın sol alt köşesine bu kodlarla hizalıyoruz. (yazılan sayfa no?su buna göre konumlandırılacak yani anladığınız üzere bu geçici kullandığımız bir konum belirleme nesnesi.;)

Set t1 = p.ActiveLayer.CreateArtisticText(10, 1, i, , , "Arial", 10, cdrTrue, cdrFalse, _
cdrNoFontLine, cdrCenterAlignment) ?yazı oluşturma kodlarını önceki derslerden biliyorsunuz, bu ilk oluşturulan yazı sayfanın sol tarafındaki numara yazısı

t1.AlignToShape cdrAlignHCenter + cdrAlignVCenter, rect1, cdrTextAlignBoundingBox

Oluşan yazımızı hizalama karemizin tam ortasına blokluyoruz. Konumu belli oldu, sol aşağıya yerleşti.

rect1.Delete ?Hizalama yaptığımız kareyle işimiz bitti, silinsin.


?Aynılarını rect2 ve t2 ye göre yazıyoruz...

i = i + 1
Set rect2 = p.ActiveLayer.CreateRectangle(0.35, 0.8, 1.2, 0.5): rect2.Fill.ApplyNoFill: rect2.SetSize 15, 12
    rect2.Outline.SetProperties 0.003, OutlineStyles(0), CreateCMYKColor(0, 0, 0, 100), ArrowHeads(0), _
    ArrowHeads(0), False, False, cdrOutlineButtLineCaps, cdrOutlineMiterLineJoin, 0#, 100
rect2.AlignToPage cdrAlignRight + cdrAlignBottom, cdrTextAlignBoundingBox
Set t2 = p.ActiveLayer.CreateArtisticText(10, 1, i, , , "Arial", 10, cdrTrue, cdrFalse, _
cdrNoFontLine, cdrCenterAlignment)
t2.AlignToShape cdrAlignHCenter + cdrAlignVCenter, rect2, cdrTextAlignBoundingBox: rect2.Delete



i = i + 1 ?her döngüde sayfa sayısı +1 artacak
Next p ?diğer sayfaya geçecek ve kodlar yinelenecek...


Kodların normal görünümüne bir göz atalım;


Private Sub syfnumikili_Click()

ActiveDocument.Unit = cdrMillimeter

 i = tncnum.TextBox1.Text
 Set collpages = ActiveDocument.Pages
For Each p In collpages
Set rect1 = p.ActiveLayer.CreateRectangle(0.35, 0.8, 1.2, 0.5): rect1.Fill.ApplyNoFill: rect1.SetSize 15, 12
rect1.Outline.SetProperties 0.003, OutlineStyles(0), CreateCMYKColor(0, 0, 0, 100), _
ArrowHeads(0), ArrowHeads(0), False, False, cdrOutlineButtLineCaps, cdrOutlineMiterLineJoin, 0#, 100
rect1.AlignToPage cdrAlignLeft + cdrAlignBottom, cdrTextAlignBoundingBox
Set t1 = p.ActiveLayer.CreateArtisticText(10, 1, i, , , "Arial", 10, cdrTrue, cdrFalse, _
cdrNoFontLine, cdrCenterAlignment)
t1.AlignToShape cdrAlignHCenter + cdrAlignVCenter, rect1, cdrTextAlignBoundingBox: rect1.Delete
i = i + 1
Set rect2 = p.ActiveLayer.CreateRectangle(0.35, 0.8, 1.2, 0.5): rect2.Fill.ApplyNoFill: rect2.SetSize 15, 12
    rect2.Outline.SetProperties 0.003, OutlineStyles(0), CreateCMYKColor(0, 0, 0, 100), ArrowHeads(0), _
    ArrowHeads(0), False, False, cdrOutlineButtLineCaps, cdrOutlineMiterLineJoin, 0#, 100
rect2.AlignToPage cdrAlignRight + cdrAlignBottom, cdrTextAlignBoundingBox
Set t2 = p.ActiveLayer.CreateArtisticText(10, 1, i, , , "Arial", 10, cdrTrue, cdrFalse, _
cdrNoFontLine, cdrCenterAlignment)
t2.AlignToShape cdrAlignHCenter + cdrAlignVCenter, rect2, cdrTextAlignBoundingBox: rect2.Delete
i = i + 1
Next p

End Sub


Evet sayfayı yatay konuma getirip kafamıza göre 4-5 sayfa daha ekleyelim ve kodumuzu çalıştıralım. (Sub ve End Sub blokları arasına yapıştırabilirsiniz.)

Sayfanın bendeki numarasız görüntüsü;

http://resim.sanalkurs.net/uploads/ders15_01.jpg

Numaralandırma yapıldıktan sonraki görüntüleri?

İLK SAYFA:
http://resim.sanalkurs.net/uploads/ders15x_01.jpg

SON SAYFA:
http://resim.sanalkurs.net/uploads/ders15x_02.jpg

İyi çalışmalar, başarılar...

Videolar hazırlandı;

YouTube: (HD Kalite)
Tıklayınız

Video(2.16 mb rar sıkıştırılmış avi uzantılı dosya, dikkat açıldığında diskinizde yaklaşık olarak 329.7 mb bir alan kaplayacaktır): Tıklayınız

Video2(4 mb wmv formatında): Tıklayınız

Kaynak dosyayı indirmek için tıklayın

 

 

CorelDraw VBA - Tek Sayfaya Çift Numaralandırma Dersini Yazdirin YAZDIR

"CorelDraw VBA - Tek Sayfaya Çift Numaralandırma" dersi için 3 yorum var

12.06.2009 olympiatr diyor ki:
Videolar hazırlandı;

YouTube: (HD Kalite)
Tıklayınız

Video(2.16 mb rar sıkıştırılmış avi uzantılı dosya, dikkat açıldığında diskinizde yaklaşık olarak 329.7 mb bir alan kaplayacaktır):
Tıklayınız

Video2(4 mb wmv formatında):
Tıklayınız

24.07.2010 savaşyılmaz diyor ki:
MERABA SAYFANIZ ÇOK HARİKA HER GÜN BİR SEYLER ÖGRENİYORUM COK MERSİ
BİR RİCAM VAR 50X70 SAYFANIN İÇİNE 10X13 ABATINDA SAYFALRI COGALTARAK NASIL YERLESTİRE BİLİRİM YANLIZ COREL TÜRKCE KULLANIYORUM VE YENİ ÖGRENİYORUM SEMALARLA GÖSTERE BİLİRSENİZ COK SEVİNİRİM

27.07.2010 olympiatr diyor ki:
ben de teşekkür ediyorum. konuyu biraz daha açabilirseniz yardımcı olmaya çalışabilirim. ilk algılamam belirttiğiniz boyutların verdiğiniz ölçülerin içinde montajlanması yönünde. örnek bir cdr dosyası ile daha fazla açıklama yapabilirseniz yardımcı olmaya çalışırım. (mail olarak gönderebilirsiniz.)

  BU DERSE YORUM EKLEYİN

Üye olmadan yorum ekleyemezsiniz !


UYARI: SANALKURS.net'te yer alan materyaller ile ilgili her türlü sorumluluk hazırlayan veya gönderene aittir. Yazarlar, gönderdikleri makale ve derslerle başkalarını yanıltıcı bilgi veremezler. SANALKURS.net bilgilerin kullanımı sonucunda doğacak hata ve zararlardan sorumlu tutulamaz. SANALKURS.net'te yer alan bir makale link vermek ve kaynak göstermek şartıyla başka bir sitede yayınlanabilir. SANALKURS.net kullanıcıları ve üyeleri, üçüncü kişilerin telif hakkı sahibi bulunduğu hiçbir yazı, fotoğraf, resim vb. materyal ve ürünü kullanamazlar. SANALKURS.net kullanıcı ve yazarlarının, üçüncü kişilerin telif hakkı sahibi olduğu yazı, resim vb. ürünleri izinsiz kullanması durumunda, her türlü hukuki ve cezai sorumluluk kendilerine aittir.
 İSTATİSTİKLER
XML Kaynağımızdan yararlanarak sitemizdeki derslerimizi masaüstünüzden yada web sitenizden takip edebilirsiniz
ÇEVRİMİÇİ 172 Ziyaretçi, 14 Üye
mocaco3, Charisma_47, kerasus, hacoban, sanalusta, Keremel, siracel, BuRRaK, ramones1982, mhmt35, barangokalp, tayfunerbilen, omrduman, dogus-70
Bugün: 531, Dün: 10154, Bu Ay: 20898, Toplam Ziyaret: 7226710, Toplam Üye: 216260, Son Üye: nur_cihan
Yazılı Dersler: 2459, Video Dersler: 407, Toplam Yazar: 64, Toplam Dosya: 53, Toplam Link: 26
   
RSS Kaynağımızdan yararlanarak sitemizdeki derslerimizi masaüstünüzden yada web sitenizden takip edebilirsiniz