Blog Home  Yalcomania'n�n Yeri Feed your aggregator (RSS 2.0)  
Yalçın Uzun - Tuesday, June 03, 2008
Kişisel Blog
 
 Tuesday, June 03, 2008

Vatani görevimi tamamladım ve tekrar Bilge Adam'daki görevime geri döndüm.

Sorularınız ve görüşleriniz için yeniden yalcin.uzun@bilgeadam.com a mail atabilirsiniz...

Tuesday, June 03, 2008 5:58:04 PM (GTB Standard Time, UTC+02:00)  #    Comments [2]    | 
 Tuesday, October 09, 2007

İlk Visual Studio AddIn Projem.

Oracle JDeveloper ‘da bulunup gıpta etttiğim bir özelliğin addin’ini yazdım.

Kod sayfasında addini çalıştırdığınızda tüm global değişkenleri listeliyor.
Daha önce property’ye dönüşmüş olanlar varsa onları listeden çıkartıyor.

Siz sadece set ve get’lerden istediklerinizi seçiyorsunuz. Propertylerini addin yazıyor.

Daha önce AddIn projesi yapmamış olanlar için ve DTE namespace’i  (macrolarda da kullanılan) için güzel bir örnek.
Ayrıca regular expression kullanımı için de örnek teşkil edebilir. (değişken tanımlamalarını ve property’leri bulmak için kullandım)

Şu an üşengeçlikten desteklemediğim şeyler:
VB dili
int x=4; gibi bir değişken tanımlama.
hede x=new hede(); gibi bir değişken tanımlama.


Onun dışında gayet güzel çalışıyor. (En azından bende)

Kolay gelsin...
Yalçın








İndirmek için tıklayınız: YalcomaniaPropertyBuilderAddIn.rar (62,38 KB)
Tuesday, October 09, 2007 4:10:34 PM (GTB Standard Time, UTC+02:00)  #    Comments [0]    | 
 Monday, October 08, 2007

Bir projemde Regular Expression kullanmam gerekti. Ancak piyasadaki uygulamalar tüm diller için yazıldığı için orada düzgün çalışan expression'lar .net'e gelince çalışmıyordu. Bunun üzerine oldukça basit olan bu uygulamayı yazdım.



İndirmek için tıklayınız: Yalcomania_RegEx_Editor.rar (44,51 KB)
Monday, October 08, 2007 1:27:06 PM (GTB Standard Time, UTC+02:00)  #    Comments [1]    | 
 Monday, October 01, 2007

Eğlencesine yazdığım bir oyun. (Kantina'daki makina çok paramı yedi de)

İncelemek için güzel bir örnek olabilir. Kapsadığı konular:

Temel OOP
Eventler'le çalışmak
IComparable Interface'i
User Controllerle çalışmak
Gerçekten Random çalışan class
Gömülü kaynaklarla çalışmak
Backgroundworker nesnesi ile çalışmak
Gradient Form
Hazır İskambil kağıdı kütüphanesi (Kart, EldekiKartlar ve Deste classları)
Web Cam (veya bir capture device ile) görüntü capture etmek
Observer Design Pattern

İndirmek için: YalcomaniaHorseRacePoker.rar (1,32 MB)

Screen Shotlar:





İndirmek için : YalcomaniaHorseRacePoker.rar (1,32 MB)
Monday, October 01, 2007 9:24:25 AM (GTB Standard Time, UTC+02:00)  #    Comments [1]    | 
 Wednesday, September 19, 2007

İki adet formula field'a ihtiyacımız olacak:
Adlarını koymak size kalmış.

Birincisi:
WhilePrintingRecords;
Global numberVar total;
total:=total+{Orders.Freight} Burada toplamını istediğimiz alanı yazıyoruz. Ben orders tablosundaki Freight'i aldım.

Türkçe meail:
Her kayıtta "total" adlı global bir değişkene, freight'tan gelen değeri ekle.

Bu formülü kaydedip kapattıktan sonra Details kısmına bırakıyoruz.  Böylelikle her kayıt geldiğinde sürekli artan bir değişkenimiz var.
Şöyle bir şey oluyor:

Order Id:   Freight:    BenimFormul:
1                 10                10
2                 25                35
3                 100               135

Tabi, bu formülün ekranda gözükmesini istemeyiz, o yüzden alanı seçip suppress özelliğini true yapıyoruz.

Görecekseniz ki kaç sayfa olursa olsun alanımız giderek artacak. Bu yüzden sayfa başında sayac'ı sıfırlamamız lazım.

İşte ikinci formül kodlarımız:

WhilePrintingRecords;
Global numberVar total;
numberVar geciciDegisken:=total;
total:=0;
geciciDegisken;

Türkçe meail:
total adlı global değişkendeki değeri, geciciDegisken adlı bir değişkene aktar.
global değişkeni sıfırla
ekrana geciciDegiskenin değerini bas

Bu formülü de Page Header'a koymamız lazım. Böylelikle her sayfa oluşturuluken burası sadece bir kere çalışacak. değeri de sıfıladığımız için bir önceki formül toplamaya 0'dan başlayacak.


 

Wednesday, September 19, 2007 11:53:02 PM (GTB Standard Time, UTC+02:00)  #    Comments [1]    | 
 Tuesday, September 18, 2007

Herhalde Crystal Report hakkında forumlarda en faza sorulan sorulardan biri de veritabanında sadece yolu tutulan bir resmin raporda gösterilmesidir. Aslında sorun şurdan kaynaklanıyor; Crystal, database’de binary olarak saklanan resimleri direk gösterebiliyor ancak yolu verilen bir resmi binary formata çevirip gösteremiyor. Her ne kadar sorun olsa da çözüm imkansız da değil. Bu makalede kendi Typed Dataset’imizle bu sorunu nasıl aşacağımız anlatacağım.

Önce kendi veritabanımızı oluşturarak işe başlayalım. Ben örnekte “Oyuncular” diye bir tablo oluşturup , ünlü sinema oyunularımızla doldurdum. Bu sanatçıların resimlerini de C klasörünün altında Resimler adlı bir klasöre attım. Bu resimlerin adlarını da tabloya girdim.



Daha sonra CrystalResim adlı bir Windows Projesi oluşturdum. Form1’ime Crystal Report Viewer nesnesi ekledim.

Bir sonraki adımda bir “typed dataset” olarak oluşturup, bunu ilgili tablomuz gelecek şekilde dolduracağız ve daha sonra binary resimlerimizi ekleyeceğimiz bir sütun oluşturacağız. Bunu yapmaktaki amacımız bu dataset’i raporumuza kaynak olarak vermemiz. Adım adım bu işlemleri gerçekleştirelim:

1-      Typed Dataset’i oluşturmak için, projemizde sağ tık ve “Add New Item” seçeneğinden Dataset’i seçiyoruz. Ben ismine “MyDataSet” verdim. Bu isim önemli çünkü ileride NameSpace olarak karşımıza çıkacak.

2-      Bize boş bir ekran geliyor. İster Server Explorer’dan Oyuncular Tablosunu buraya sürükleyip bırakın, isterseniz sağ tık à “Add”  à Table Adapter seçeneğini seçip, buradaki sihirbazı takip edebilirsiniz. Otomatik olarak Visual Studio bu TableAdapter’e bir isim verecektir. (Tablo Adı + “TableAdapter” şeklinde). Bu isim önemli çünkü örneğimizin ilerleyen zamanlarında kullanacağız.  Sonuçta şu şekilde bir yapı elde etmeniz lazım:



3-      Sırada resmi binary olarak aktaracağımız sütunu eklemek var. Tablo üzerinde sağ tık à Add à Column seçeneği ile yeni bir sütun oluşturacağız. Yeni sütuna ben “BinaryResim” adını verdim. Bu işlemden sonra sütunu seçip “Properties” ekranından DataType seçeneğini System.Byte yapın. Ancak biz tek bir byte değil, byte dizisi tutacağımız için sonuna [] karakterlerini ekleyin. Yapının son hali şu şekilde olması lazım:

 

4-      Bu ekranla işimiz bitti. Projeyi bir kere derleyip bu ekranı kapatabiliriz. Derlemezseniz rapor ekranında sorun yaşayabilirsiniz.

Şimdi rapor oluşturma kısmına geldik. Projemiz üzerinde sağ tık à Add New Item à Crystal Report seçeneği ile bu işlemi gerçekleştirebiliriz. Ben rapor adına rprOyuncular dedim.  Bildiğiniz üzere bizi Crystal’ın sihirbazı karşılayacaktır. Raporu ister sihirbazla, isterseniz “As A Blank Report” seçeneğini seçip elle de yapabilirsiniz.

Sihirbazla yapacaksanız, ilk ekranda kaynak olarak  Project Data à Ado.Net Data Sets à Crystal Resim.MyDataSet (Dikkat ederseniz burasu Proje adı nokta dataset adı şekline gidiyor) à Oyuncular (Tablonun adı) seçmelisiniz.

Elle yapacaksanız Field Explorer’da Database Fields à sağ tık à Database Expert seçeneğini seçip bir sonraki adımda sihirbazdaki şablonu uygulamalısınız.

Sihirabazla devam edenler bilirler ki, bundan sonraki adım rapora dahil edilecek alanları seçmektir.  Bu ekranda BinaryResim olarak kendi oluşturduğunuz alanı göremeyeceksiniz. Sakin paniklemeyin, her şey yolunda. Sadece o sütunun tipi byte[] olduğu için listede çıkmadı. O alan yokmuş gibi rapor işlemlerinize devam edin.

Elle devam edenler ise bir problem yaşamayacaklar, çünkü tüm sütunlar karşılarında çıkacak ve sürükle bırak işlemi ile istenilen sütunları rapora atacaklardır.

Wizard ile işlemlerini tamamlayan arkadaşlar BinaryResim alanını rapora eklemek için Field Explorer’dan BinaryResim sütununu elle sürükleyip bırakacaklar, böylelikle iki üst paragrafta bahsettiğim sorunu çözeceklerdir.

DİKKAT: BinaryResim  sütununu rapora eklemezseniz resimler gözükmeyecektir. Resim adlı sütun sadece resim dosyasının adını tutuyor.

Artık raporumuz da bitti. Tek yapmamız birazcık kod yazmak. Formumuzda hatırlayacağınız gibi bir tek Crystal Report Viewer nesnesi vardı. Bu yüzden kodlarımı Form’un Load olayında yazacağız.

        private void Form1_Load(object sender, EventArgs e)

        {

            //Dataset'imizin bir instance'ını oluşturacağız (daha doğrusu sadece tablomuzu oluşturacağız)

            myDataset.OyuncularDataTable oyuncularTablo = new myDataset.OyuncularDataTable();

 

            //Datatable'ımızı dolduracak TableAdapter'i de oluşturuyoruz

            myDatasetTableAdapters.OyuncularTableAdapter oyuncularTableAdapter = new CrystalResim.myDatasetTableAdapters.OyuncularTableAdapter();

 

            //Verilerle dolduruyoruz

            oyuncularTableAdapter.Fill(oyuncularTablo);

 

            //!!!!İşin can alıcı noktası burada. DataTable'daki her satırı dolaşarak Resim alanındaki resmin binary

            //halini BinaryResim alanına aktarıyruz

            foreach (DataRow dr in oyuncularTablo.Rows)

            {

                byte[] resim= System.IO.File.ReadAllBytes(@"c:\Resimler\" + dr["Resim"].ToString());

                dr["BinaryResim"] = resim;

            }

 

            //Rarpoun bir instance'ını oluşturuyoruz

            rprOyuncular oyuncularRapor = new rprOyuncular();

 

            //Raporun kaynağını datatable'ımız olarak veriyoruz

            oyuncularRapor.SetDataSource(oyuncularTablo as DataTable);

 

            //ve en son formda görmek için Crystal Report Viewer nesnemizi rapora bağlıyoruz

            this.crystalReportViewer1.ReportSource = oyuncularRapor;

 

        }

Bu kadar!!! Artık tek yapmanız gereken projeyi çalıştırmak. Görünüm şu şekilde olacaktır:

 

Bir makalenin daha sonuna geldik. Umarım raporlarda resim göstermekte zorlanan arkadaşlar için yararlı olmuştur. Tüm görüş, düşünce ve sorularınız için çekinmeden yalcin.uzun@bilgeadam.com ‘a mail atabilirsiniz.

 

Projeyi, resimleri ve veritabanını indirmek için : CrystalResimMakale.rar (211,22 KB)
Tuesday, September 18, 2007 5:51:04 PM (GTB Standard Time, UTC+02:00)  #    Comments [0]    | 
 Monday, September 17, 2007

Ne yalan söyleyeyim, çok kolaymış.

Bir tema yaratıp, içindeki skin dosyasına aşağıdaki gibi stillerinizi oluşturun:

<
asp:GridView SkinId="Sari" runat="server" BackColor="yellow" BorderColor="yellow" />

<asp:GridView SkinId="Kirmizi" runat="server" BackColor="red" BorderColor="red" />

<asp:GridView SkinId="Yesil" runat="server" BackColor="green" BorderColor="green"/>

Sonra bu sayfayı kaydedin. (Kaydetmezseniz listede göremezsiniz)

Grid koyduğunuz sayfanın page directive'ine StyleSheetTheme (Dikkat, "theme" değil) attribute'ine temanızın adını verin.

Artık gridview'in smart tasks panelindeki AutoFormat özelliğinde stillerinizi görebilirsiniz.

Monday, September 17, 2007 7:07:31 PM (GTB Standard Time, UTC+02:00)  #    Comments [0]    | 

Örnek üzerinden gidelim:

BenimTema adlı bir tema'mız var ve altındaki skin dosyasında şu satır yazılı:

<
asp:Button runat="server" BackColor="Red" /> (Butonların arka planını kırmızı yap)

Sayfamızda şöyle bir buton olsun:

<
asp:Button ID="Button1" runat="server" Text="Button" BackColor="black" /> (Arka planı Siyah olan bir buton)

Page directive'miz de şöyle:

<%@ Page StylesheetTheme="BenimTema" %>

Bu kod çalıştığında buton'umuzun rengini siyah olarak görürüz. (Kontrol'deki renk)

Page directive'i şöyle değiştirdiğimizde ise:

<%@ Page Theme="BenimTema" %>

buton'umuzun rengini kırmızı olarak görürüz. (Tema'daki renk)

Yani bir kontrolde görsel bir değişiklik tanımlanmışsa ve o özellik sayfanın kullandığı temada da varsa:
-Theme kullanıldığında Tema'daki değer baskın olur
-StyleSheetTheme kullanıldığında kontrolün değeri baskın olur.

Monday, September 17, 2007 6:41:52 PM (GTB Standard Time, UTC+02:00)  #    Comments [0]    | 
 Tuesday, September 04, 2007

Javascript debugging'i sadece VS 2008'e has bir özellik olduğunu sanan arkadaşlara VS 2003 veya 2005'te

1- Internet explorer'ın ayarlarından Disable Javascript Debugging seçeneğini kaldırmalarını
2- debug etmek istedikleri javascript kodunda breakline için debugger yazmalarını

hararetle tavsiye ederim.

Tuesday, September 04, 2007 12:53:37 PM (GTB Standard Time, UTC+02:00)  #    Comments [0]    | 
Copyright © 2008 Yalçın Uzun