CorelDraw VBA - Tek Sayfaya Çift Numaralandırma

Bu dersimizde CorelDraw VBA'mıza tek sayfa içine nasıl çift numaralandırma yaptırabileceğimizi öğreneceğiz.

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) 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ü; Numaralandırma yapıldıktan sonraki görüntüleri? İLK SAYFA: SON SAYFA: İyi çalışmalar, başarılar... Videolar hazırlandı; 
Tunç Olçay
1970 İzmir doğumlu yazar, 10 yıla yakın profesyonel müzisyenlik hayatına nokta koyup pc grafik hayatına biraz geç de olsa 1998 yılında başladı. <p>İlk dalı Macintosh üzerinde; plotter kesim Illustrator ve Freehand olmasına karşın bu işletim sistemi ve programlara ısınamadığını CorelDraw ve pc ile tanıştıktan sonra anladı. 1-2 yıl arası dizgicilik deneyimlerinden sonra kendi deyimiyle grafik üzerine dönüm noktası olan reprodüksiyon (renk ayrım/film çıkış) firmasında 2 yıla yakın çalışması sonucunda grafik ve dizgi üzerine adı geçen tüm programları hakim şekilde kullanmayı, renk ayrımını, montajı vb baskı öncesi tüm bilgileri burada öğrendi. <p>En büyük hobisi öğrenmek sayesinde programcılığa da merak saldı. Visual Basic ile bu dönemde tanıştı ve işine yarayabilecek küçük çaplı programlar yazmaya başladı. Çeşitli firmalarda Grafik Bölüm Şefliği deneyimlerini yaşadıktan kısa bir süre sonra çalışmaya başladığı andaç üretimi yapan bir firmada Visual Basic altyapısı yardımıyla VBA'nın (Visual Basic Application) gücünün farkına varan yazar; Word, Excel ve CorelDraw altında otomasyon denemelerine başladı. Bu süreç içerisinde, otomatik sayfa yaptırımı, baskı öncesi hazırlık makroları üzerinde önemli kodlar geliştirdi. Buna bağlı olarak CorelDraw altında bir montaj programını da hayata geçirmiş oldu. <p>Daha sonra gelişmekte olan Web sektörüne geçiş yapıp 3 ortaklı bir firmaya dahil oldu ve; Asp, Flash, Dreamweaver, Action Script, Css, Html ve küçük çaplı 3d tasarımları üzerinde kendisini geliştirdi. <p>İyi derecede İngilizce ve orta derece İspanyolca bilen yazarımız özel dershanelerde 10 yılı aşkın süredir Web Tasarım ve Grafik üzerine öğretim üyeliği mesleğini de sürdürmektedir.
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Videolar hazırlandı; [b]YouTube:[/b] ([i]HD Kalite[/i]) [url=http://www.youtube.com/watch?v=C7ifR44aN5g]Tıklayınız[/url] 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): [url=http://0wrwia.blu.livefilestore.com/y1pGMlybHitTwN4FIXjaRq1USBu2LQGQ_uGsukbECRMC3XnSwoBLEiTpP54cIqrcaklXrQElja43iTyOo1h5qIfHixht1U8k0Dv/ders15.rar?download]Tıklayınız[/url] Video2(4 mb wmv formatında): [url=http://0wrwia.blu.livefilestore.com/y1pB23icWtyc98A6mQXg9hCoGWAEeH26xjYy3JUFmOHxuU0ylsAyrs9BSYPGt0hfk9gKD_qlZbrqwBiBv4UDh9e00wj9hqxkmiJ/ders15.wmv?download]Tıklayınız[/url]
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
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.)

Yukarı Git