Professional Documents
Culture Documents
C# E-Kitap Memik Yanik PDF
C# E-Kitap Memik Yanik PDF
Memik Yank
memiky@superonline.com
memikyanik@hotmail.com
www.memikyanik.com
Mart 2009
2 Memik Yank - C#a Balang Kitab
nsz
Yllardr kendisini bilen bilmeyen birok kii Memik Yank eviri yapmakla
suluyor. Memik Yankn ngilizcesinin eviri yapmaya yetmedii gereini
bir tarafa brakalm ve u soruyu soraym: Madem Memik Yank Trkeye bu
kadar hakim ve yazdklar kolay okunuyor hangi akla hizmet yabanc bir
yazarn kitabnda eviri yapar? Hem Memik Yank ngilizceyi anadili gibi bilse
bile hangi mantkla kendine zel cmle kurmak yerine gidip baka bir
yazarn cmlelerini alr?
Bu e-bookta kenar boluklar normal basl kitaplara gre daha azdr, fontu
ise daha byktr. Dolaysyla bu metni normal kitap olarak deerlendirmek
istemi olsaydm sayfa says aa yukar ayn olurdu. E-bookun sonunda
C# 3.0 kitabm hakknda yazdm bir yaz ve C# 3.0 kitabmdan alnma bir
blm bulunmaktadr.
BLM 1
C# LE PROGRAMCILIK
Bundan yaklak 1.5 yl nce(Aralk 2007) kiisel web sitemde yaynlamak
zere C#, Visual Basic ve Delphi hakknda balang dzeyi bilgi ieren ve
ders eklinde dzenlediim makaleler hazrladm. Bu makaleleri ilk yazmaya
baladmda her programlama dili iin 5 yaz dnmtm. C# ve Visual
Basic iin hazrladm derslerin says 4te kalrken Delphi iin yazdm
yazlarn says te kalmt. Dersleri tam gaz kaleme alrken deiken ad
benzerlii davas yazma hevesimi krmt. nk programclk renmek
isteyenlere tecrbelerimi aktarrken deiken ad alma sulamas ile
kendimi sank pozisyonunda hakim karsnda bulmutum.
2008 ylnn son aylarnda bir yl nce yarm braktm dersleri tamamlamak
zere yeninden almaya baladm. Dersleri ilk kaleme aldm zaman C#,
Visual Basic ve Delphi dersleri birbirine paralel gidiyordu. Yani nce bir C#
dersi, birka gn sonra benzer konular Visual Basic iin kaleme alyordum.
Ancak bu kez yle yapmadm. ncelikle C# derslerini bitirmeye altm. C#
derslerini tamamladktan sonra bu kez Visual Basic derslerini yeniden
hazrlayp yaynlamaya karar vermitim. C# ilgili dersleri kaleme alrken bir
yl nce kaleme aldm dersleri gzden geirip eklemeler yapacam.
Dorusu geen yl(2007 sonu) bu programclk derslerini okuyup sonra da az
ok programclkla uraanlara bu derslerin yeni halinin fazla bir katks
olmayacaktr. nk bu derslerin hedef okur grubu C#, Visual Basic veya
Delphi ile programclna yeni balayanlar olacaktr. Baka bir deyile bu
dersleri, geen yl yaynlanan derslerin geniletilmi basks olarak
deerlendirebilirsiniz. Aradan biraz zaman geip C# derslerini tamamlaynca
tekrar gzden geirip e-book olarak C# renmek isteyenlere sunmaya
karar verdim. Bylece dersleri okumak kolaylam olacaktr.
Bir makale veya kitap kaleme alnrken bir okur grubu hedeflenir ve ona
gre bir anlatm dzeyi seilip konular ulalmak istenen hedef okur
grubunun "tahmini" beklentilerine gre sralanr. Bu e-bookun hedef okur
grubu daha nce C# programlama dilliyle uramam olanlardr. Ya da
C#la ilgili derslerde hocalarn izlemekte zorluk eken rencilerdir, aldklar
kitab okuyup anlamakta zorlananlardr, her hangi bir sitede rastladklar
makalede kullanlan kavramlara uzak olanlardr.
evrenizde C#, VB, Delphi veya C++ programlama dilini bilenlere gpta m
ediyorsunuz veya C#, Delphi'yi nasl renirim diye kara kara dnyor,
okulunuzda grdnz C#, C++, Visual Basic derslerinden nasl geerim
diye kayglanyorsanz ilk olarak bu olumsuz dnceleri bir tarafa brakn
derim. Yllarca kitaplarmn arkasnda byk puntolarla Memik YANIK
tarafndan yazlan kitaplarda ilk okumada anlalmayan hibir konu
yoktur yazdrdm. Bu cmle birok insann bana saldrp hakaretler edip
kfrler savurmasna neden olsa bile bu iddiadan vazgemi deilim. Hatta
birileri hzn alamayp Memik Yank kitaplarnda verdii 35 satrlk ksack
kodlarda kulland deikenlere ad seerken benim kitaptan yararlanp
deikenlerimin adn almtr diye sulad.
Birok forumda her gn ismi cismi belli olmayan ok sayda kiinin Memik
Yanka hakaretler dzmesinin tek nedeni yazdklarmn ilk okumada
mutlaka anlalyor olmas deildir elbette. Tepki ekmemin 2. bir nedeni
deiik konularda kitaplar yazmamdr. Bir ok kii Bir kii nasl olurda
hem Visual Basic, hem Delphi hem de Clipper hakknda kitaplar
yazabilir? Olsa olsa bakasna yazdryordur veya eviri yapyordur
eklinde grler ileri srdler. Sanki bir gn Clipper kitabn, birka gn
sonra ise Visual Basic kitabn yazp yaynlamm gibi sulanyorum. Hal bu
ki btn bu kitaplar tam 17 ylda yazdm. Baz kitaplarmn arkasna "bu
kitap telif bir kitaptr yabanc yazarlarn kitaplarndan araklanmad" diye
yazm olmama ramen inandrc olamadm.
Bu dersleri izleyen okurlar bir konuda uyarmak istiyorum: Siz siz olun
yazdnz kodlarda tanmlayp kullandnz deikenlere ad seerken
dikkatli olmalsnz. Olur ya bo bulunup daha nce register(!) edilmi veya
kullanm haklar kapatlm i, j, sayi, dosya gibi adlara sahip deikenler
tanmlarsanz ve bu tespit edilirse banz belaya girebilir. Bu uyarya
ramen u aklamay yapmay gerekli grmekteyim: Bu derslerde
kullandm deiken adlarnn mevcut Trke programclk kitaplarndaki
deiken adlar ile benzerlik gstermesi tesadf eseridir.
Daha nce herhangi bir programlama dili ile az ok kod yazdysanz off
imdi bu C# kim renecek, Microsoft firmas bu programlama dilini keke
hazrlamasayd, bir sr Class, yeni bir dil diyorsanz bu dncenizden sizi
uzaklatrmaya yz binlerce kiiye programclk retmi Memik YANIK
olarak talibim. Daha nce Visual Basic 6 ile az ok program yazdysanz C#
yerine Visual Basicin .NET uyumlu srmn tercih edebilirsiniz. tesi, C#
ile Visual Basicin .NET srmnn yeteneklerini karlatrdmzda
aralarnda nemli bir fark yoktur. Kiisel grme gre C# renmek,
.NET uyumlu Visual Basici renmekten daha zor deildir. Daha ak bir
anlatmla Visual Basicin NET srmn tercih etme nedeniniz C#n daha
zor renilen bir dil olacan sanma dncesi olmasn.
Her ne kadar bu balkta C# ile program yazmak iin gereken aralar bir bir
sayp anlatacak olsam bile mutlaka gerekli olan renme isteidir. C#
renmek sizin iin nem arz ediyorsa ister bu dersleri izlemi olun ister
izlememi, bir ekilde C# renirsiniz. Zaten ksa srede C# renmeleri
zorunluluk olanlar gidip kitap alacaklar veya programclk eitimi veren bir
kuruma bavuracaklardr.
.NET Framework
Not Defteri
gereklidir. Buna gre Not Defteri ile C# programnz yazp CS uzants ile
kaydedersiniz. Sonra DOS penceresine geip .NET Framework ile gelen C#
derleyicisi(CSC.EXE) sayesinde derleme yapp EXE dosyay hazrlarsnz. Hi
meraklanmayn bu ilemin ayrntlarn bir sonraki C# konulu derste
anlatacam. Hemen eklemek gerekirse; .NET Framework Microsoft
cretsiz datmaktadr ve Windows Vista ile birlikte gelmektedir. Bu nedenle
iletim sistemi olarak Vista kullanyorsanz microsoft.comdan indirip
kurmanz gerekmez.
Visual Studio
Bu derslerin sizin iin verimli olmas iin daha sonra sz edilecek Visual
Studio 2005 veya 2008i edinip bilgisayarnza kurmanz veya C# iin
hazrlanm cretsiz Express Edition Microsoftun sitesinden indirip
kurmanz gerekir. Express srm edinmek kolay olduu iin bu derslerde
Express srme arlk vereceim. Tabii bilgisayarlarna Visual Studioyu
kurmu olanlar da gzeteceim. Bu dersleri izlerken Visual Studionun 2005
veya 2008 srm kullanlabilir.
8 Memik Yank - C#a Balang Kitab
Express Edition
Visual Studio ile C#, Visual Basic, C++ ve ASP.NET uygulamalar gelitirmek
mmkn iken Express Editionlar "dile" zeldir. Yani .NET uyumlu hangi
programlama dili kullanlacaksa o dil iin hazrlanm Express Edition ad
verilen IDEyi yani program gelitirme aracn Microsoftun sitesinden indirip
kurmak gerekiyor. Hemen eklemek gerekir ki C# iin hazrlanm olan
Express Edition bir programlama dili olmayp C# uygulamalarn kolayca
hazrlayabilmeniz iin Microsoft tarafndan hazrlanp cretsiz olarak datln
bir IDEdir, yani bir yardmc programdr.
Buna gre C# kodu yazmak istiyorsanz nce mutlaka bir Class blou
hazrlamanz gerekmektedir. C# programlarnn balang noktas Main()
metodu olduundan Main() metoduna yer vermek zorundasnz. Bu C# kodu
CS uzantl bir dosyaya yazlp kaydedilip derlenip hazrlanan EXE dosya
altrlrsa herhangi bir hata ile karlalmaz. Ancak bu program bu hali ile
herhangi bir ilem yapmaz.
class Deneme
{
static void Main(string[] args)
{
int yil;
}
}
Bu kodu NET uyumlu Visual Basic iin yazsaydm biraz farkl olurdu. Ancak
temel mantkta pek farkllk yoktur. .NET uyumlu Visual Basic'te de zorunlu
olmamakla birlikte uygulamalar Class halinde dzenlenmekte ve Classlarn
iinde metotlar, alanlar(yani deikenler), zellikler, olaylar, Interfaceler
olabilmektedir. Ltfen olay nedir, zellik nedir, Interface nedir gibi sorularla
imdilik megul olmayn.
class Deneme
{
static void Main(string[] args)
{
int yil;
}
static void Mesaj()
{
}
}
16 Memik Yank - C#a Balang Kitab
Daha nce C#, C++, Delphi gibi bir programlama dili ile program gelitirmi
iseniz yani az ok kod yazdysanz bu derste anlatlanlar size basit
gelecektir. Programclkta tecrbeli arkadalara bir nerim var; sizler bu
yazda ne anlatld ile deil, nasl anlatld ile ilgilenebilirsiniz. Belki bir
niversitenin retim grevlisisiniz, belki de bir Microsoft eitim merkezinde
eitmensiniz. Bu yazdaki amacm C# gibi bir programlama dilinin nasl
kolay renilebilecei konusunda deneme yapmaktr.
imdi yukarda verdiim basit C# kod dosyas iinde Mesaj() adn verdiim
metodu Main() metodunun iinden ileteceim. Hazrladm metot ayn
snfn iinde olduu iin herhangi bir hazrlk yapmadan direk adyla arp
iletmek mmkndr.
class Deneme
{
static void Main(string[] args)
{
int yil;
Mesaj();
}
static void Mesaj()
{
}
}
class Deneme
{
static void Mesaj()
{
}
static void Main(string[] args)
{
int yil;
Mesaj();
}
}
Memik Yank - C#a Balang Kitab 17
class Deneme
{
static void Main(string[] args)
{
int yil;
Mesaj();
}
18 Memik Yank - C#a Balang Kitab
Programlar Derlemek
C:\WINDOWS\Microsoft.NET\Framework\v3.5;
"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;"
class Deneme
{
static void Main(string[] args)
{
int yil;
Mesaj();
System.Console.WriteLine();
System.Console.Write("kmak iin Enter Tuuna Basn");
System.Console.Read();
}
static void Mesaj()
{
System.Console.WriteLine("ampiyon Fenerbahe");
}
}
Grdnz gibi Console snfnn WriteLine() metodunu Mesaj() adn
verdiim metodun iinden baka bir deyile Main() metodunun iinde
kullandm. Bu rnekte Main() metodu iinde nce Mesaj() adn verdiim
metot arld iin ekrana nce ampiyon Fenerbahe yazlr. Mesaj()
metodunun arld satrdan sonra yine WriteLine() metodu
kullanlmaktadr. Bu kez WriteLine() metoduna ekrana yazlmak zere bilgi
parametre olarak verilmedii iin ekrann o satr bo kalr. Bir sonraki
satrda ise WriteLine() yerine Write() metodunu kullandm.
22 Memik Yank - C#a Balang Kitab
class Deneme
{
static void Main(string[] args)
{
int yil;
System.Console.Write("Hangi Yldayz : ");
yil = System.Console.Read();
}
}
class Deneme
{
static void Main(string[] args)
{
int yil;
System.Console.Write("Hangi Yldayz : ");
yil = System.Console.Read();
System.Console.WriteLine();
System.Console.Write("Girdiiniz Yl :");
System.Console.WriteLine(yil);
}
}
Yukarda verilen koda dikkat ederseniz konsoldan bilgi okuma ilemi Read()
metodu ile yaplmaktadr. Read() metodu konsoldan okuma yaparken
girilen bilginin ilk karakterinin ASCII kodunu geriye gndermektedir. Bu
program derlenip altrlp Hangi Yldayz : sorusuna A ile cevap
verilirse ekrana 65 yazlr. nk A hafinin ASCII kodu 65dir.
24 Memik Yank - C#a Balang Kitab
class Deneme
{
static void Main()
{
string str;
System.Console.Write("Hangi Yldayz : ");
str = System.Console.ReadLine();
System.Console.Write("Girdiiniz Yl :");
System.Console.WriteLine(str);
}
}
Bu Blmn zeti
Not Defteri ile yazdmz ilk programda Class blouna yer verdik. Bildiiniz
gibi C# programlarnda blok ba { ile ve blok sonu ise } ile iaret
edilmektedir. C# programlar almaya Main() metodundan itibaren
baladklar iin Classn snrlar iinde Main() metoduna yer verdim. Main()
metodu iinde Console snfnn WriteLine() metodu ile konsola yani DOS
penceresine bilgi yazmay denedik. Ayrca .NET Framework ile gelen C#
derleyicisi ile yani CSC.EXE dosyas ile CS uzants ile kaydettiimiz C#
programlarn derleyip EXE dosya hazrladk.
Bir nceki blmde Not Defteri ile ksa bir C# program hazrlayp ilk.cs
adyla kaydetmitik. Devamnda bu CS uzantl C# programn konsolda
derleyip EXE dosya hazrlamtk. Hatta rneimizin son hali beklediimiz
sonucu vermemiti. Bu blmde ilk olarak bir nceki derste yaptmz
rnei dzelteceiz. Bir nceki blmde hazrladmz rnein son eklini
aada verdim.
class Deneme
{
static void Main(string[] args)
{
int yil;
System.Console.Write("Hangi Yldayz : ");
yil = System.Console.Read();
System.Console.WriteLine();
System.Console.Write("Girdiiniz Yl :");
System.Console.WriteLine(yil);
}
}
Not: Bu ksack kodda "Yil" adnda ve int tipinde bir deiken tanmladm.
Bildiiniz gibi sene bilgisini aktarmak zere deiken ad seimini yapan
Memik Yank - C#a Balang Kitab 27
Bu koda dikkat ederseniz konsoldan bilgi okuma ilemi Read() metodu ile
yaplmaktadr. Read() metodu konsoldan okuma yaparken girilen bilginin ilk
karakterinin ASCII kodunu geriye gndermektedir. Bu rnek program
altrlp Hangi Yldayz : sorusuna A ile cevap verilirse ekrana 65
yazlr. nk A harfinin ASCII kodu 65dir.
class Deneme
{
static void Main(string[] args)
{
int yil;
System.Console.Write("Hangi Yldayz : ");
yil = System.Console.ReadLine();
System.Console.Write("Girdiiniz Yl :");
System.Console.WriteLine(yil);
}
}
Daha nce az ok kod yazm olanlarn bilecei gibi aada verdiim kodun
hi bir orijinal taraf yoktur. Buna ramen Prof. unvanl birisi "bu kodda
28 Memik Yank - C#a Balang Kitab
class Deneme
{
static void Main(string[] args)
{
string str;
System.Console.Write("Hangi Yldayz : ");
str = System.Console.ReadLine();
System.Console.Write("Girdiiniz Yl :");
System.Console.WriteLine(str);
}
}
class Deneme
{
static void Main(string[] args)
{
string str1;
string str2;
int sayi1;
int sayi2;
System.Console.Write("lk sayy girin : ");
str1 = System.Console.ReadLine();
System.Console.Write("kinci sayy girin: ");
str2 = System.Console.ReadLine();
sayi1 = System.Int16.Parse(str1);
sayi2 = System.Int16.Parse(str2);
}
}
Bu kodda sizin iin yeni olan System adl namespacede yer alan Int16
yapsdr. String bilgiyi int tipindeki deikene aktarrken bu yapnn Parse()
metodunu kullandm. Baz kaynaklarda Int16 yapsndan Class diye sz
edilmi olsa bile bunu sorun yapmamak gerekir. Bu dntrme ilemini
yaparken Int16 yerine Int32 yapsnn Parse() metodunu kullanabilirdim.
class Deneme
{
static void Main(string[] args)
{
string str1, str2;
30 Memik Yank - C#a Balang Kitab
Bu kodu dikkatice incelerseniz bir satrda ayn tipte birden fazla deikeni
tanmlam olduumuzu grrsnz. Hemen hatrlatmak gerekirse; bu
program derleyip altrp sonra 1. say ile 2. saynn arpm sonucu elde
edilen saysal bilgi 2147.483.647den byk olursa hata meydana gelir.
Memik Yank - C#a Balang Kitab 31
class Deneme
{
static void Main(string[] args)
{
string str1,str2, sonuc_str;
int sonuc, sayi1, sayi2;
System.Console.Write("lk sayy girin : ");
str1 = System.Console.ReadLine();
System.Console.Write("kinci sayy girin: ");
str2 = System.Console.ReadLine();
sayi1 = System.Int32.Parse(str1);
sayi2 = System.Int32.Parse(str2);
sonuc = sayi1 * sayi2;
sonuc_str = System.Convert.ToString(sonuc);
}
}
class Deneme
{
static void Main(string[] args)
{
string str1,str2, sonuc_str;
int sonuc, sayi1, sayi2;
System.Console.Write("lk sayy girin : ");
str1 = System.Console.ReadLine();
System.Console.Write("kinci sayy girin: ");
str2 = System.Console.ReadLine();
sayi1 = System.Int32.Parse(str1);
sayi2 = System.Int32.Parse(str2);
sonuc = sayi1 * sayi2;
sonuc_str = System.Convert.ToString(sonuc);
System.Console.WriteLine("Saylarn arpm :"+ sonuc_str);
System.Console.Write("Devam etmek iin bir tua basn");
System.Console.Readkey();
}
}
imdi yukarda uzun uzun anlatlan rnei bir tarafa brakp baka bir rnek
hazrlayacam. C# programlarn yazarken Visual Studio veya C# iin
hazrlanm Express Editiondan yararlanma yoluna henz gitmediimiz iin
CS uzantl C# kodunu yine Not Defteri ile hazrlayacaz. Hazrladm basit
C# programn aada verdim. DOS penceresinde derlenip DOS
penceresinden bilgi al verii yapan C# programlarna konsol uygulamas
ad verilmektedir.
Class Sinif_1
{
public static void Main()
{
System.Console.Write("Efes Pilsen Basketbol Takm");
System.Console.ReadLine();
}
}
DOS penceresi ile ilgili Console snf System adl Namespacete yer ald
iin Write() metodundan nce bu snfn yer ald Namespacein adn
yazdm. Sz konusu Namespaceteki snflar programnzda ok kez
kullanyorsanz her seferinde Namespacein adn bu ekilde yazmak yerine
aada yapld gibi ilgili Namespacei using deyimi ile koda dhil
edebilirsiniz. using deyimi ile olmayan bir namespacei C# programnza
dahil etmek istemeniz yani olmayan bir namespace'in kaynaklarndan
yararlanmak istemeniz halinde derleme srasnda hata meydana gelir.
using System;
Class sinif_1
{
public static void Main()
{
Console.Write("Efes Pilsen Basketbol Takm");
Console.ReadLine();
}
}
using System;
namespace Tokmak
{
class sinif_1
{
public static void Main()
{
Console.Write("Efes Pilsen Basketbol Takm");
Console.ReadLine();
}
}
}
34 Memik Yank - C#a Balang Kitab
Yukarda bold yaplan paragraf ve bu ksa C# kodunu; C++ veya Java gibi
nesneye ynelik programlama dilleri hakknda az ok bilgi sahibi olan
birisine gsterseniz arp bunda nemli olan nedir veya zerinde
durulacak ne var ki? diye size soru yneltmesi yksek ihtimaldir. nk
konuya kendi asndan bakacaktr. Bu dersleri C# veya nesneye ynelik
programclk konusunda yeni olanlar dnerek kaleme aldm iin
yukarda verdiim ksa kod ve kaln(bold) yaplan aklama karsnda
duraklamanz normaldir. Bu dnce ile aada farkl renge boyanan
paragraf kaleme aldm.
using System;
class sinif_1
{
public static void Main()
{
Console.Write("Program lk snftaki Main ile balad");
Console.ReadLine();
}
}
class sinif_2
{
public static void Main()
{
Console.Write("Program kinci snftaki Main ile balad");
Console.ReadLine();
}
}
Memik Yank - C#a Balang Kitab 35
using System;
namespace Tokmak
{
class sinif_1
{
public static void Main()
{
Console.Write("Fenerbahe");
Console.Write("Galatasaray");
Console.Write("Beikta");
Console.Write("Trabzonspor");
Console.ReadLine();
}
}
}
using System;
namespace Tokmak
{
class sinif_1
{
public static void Main()
{
Console.WriteLine("Fenerbahe");
Console.WriteLine("Galatasaray");
Console.WriteLine("Beikta");
Console.WriteLine("Trabzonspor");
Console.Read();
}
}
}
using System;
class sinif_1
{
public static void Main()
{
Console.Write("Fenerbahe\n");
Console.Write("Galatasaray \n");
Console.Write("Beikta \n");
Console.Write("Trabzonspor \n");
Console.Read();
}
}
Memik Yank - C#a Balang Kitab 37
C#la ilgili ilk derse sylemi olmama ramen tekrar edelim: Bu derslerin
amac programclk ve C# renmek isteyenlere ilk renmeleri gereken
konular anlatmaktr. C# ile almaya bu dersleri okuyarak balayanlarn
C# renme sreleri ksalacaktr, C# kitaplarnda yazlanlar, C# derslerinde
anlatlanlar anlamalar kolaylaacaktr. Bu nedenle elinizdeki C# konulu
kitaplar okumadan, dokmanlar incelemeden nce bu dersleri okumanz
neriyorum.
Select a Language liste kutusunda ngilizce veya baka bir dili setiinizde
veya Download linkini tkladnzda yaklak 2.5 MBlk vcssetup.exe
dosyas indirilmek zere sizden izin istenir. C# yerine Visual Basic ile
ilgileniyorsanz Visual Basicle ilgili Download linkini tklamalsnz.
Memik Yank - C#a Balang Kitab 41
Bu srada nasl proje hazrlanp nasl kod yazld ayr bir konudur. leriki
sayfalarda bu konu ilenecektir. Eski Trk filmlerindeki gibi 30 gnn gz
ap kapayncaya kadar getiini varsayp hemen Register etmeye alalm.
Bu amala Help mensnden Register Product komutunu verelim. Help
mensnden bu komutu verdiinizde ekrana aada verilen diyalog kutusu
gelir. Bu diyalog kutusunda sizden register anahtar isteniyor.
46 Memik Yank - C#a Balang Kitab
Gerek olmamasna ramen bu ilem iin baka bir mail adresini kullanmak
istiyorsanz veya mail adresiniz yoksa Sign up now dmesini tklayp
Hotmailden yeni bir adres edinebilirsiniz. Mevcut mail adresinizi ve
parolanz girip Sing in dmesini tkladnzda ekrana aada verilen
sayfa getirilerek sizden baz ek bilgiler istenir.
Memik Yank - C#a Balang Kitab 47
Proje Hazrlamak
Save Project diyalog kutusuna ayrca Solution Name balkl bir metin
kutusu bulunmaktadr. C# iin hazrlanm Express Edition veya Visual
Studio sayesinde hazrlanan bir veya birden fazla proje bir araya getirilerek
Solution hazrlanmaktadr. Balangta proje ad ile proje grubu ilevi gren
Solution adnn ayn olaca varsaylmaktadr. Projenin kayd srasnda
hazrlanan dosya veya klasrleri sizlere gstermek iin Solutiona farkl bir
ad verdim.
C# projesi hazrlanrken belirtilen klasrn altnda nce Solution ile ayn ada
sahip bir klasr hazrlanyor. Ardndan Solutiona ait klasrn iinde proje
iin ayr bir klasr hazrlanmaktadr. nk Solutionlar ok sayda projeye
sahip olabilirler. Proje iin hazrlanan klasr ve dosyalar aada
grebilirsiniz.
using System;
using System.Collections.Generic;
using System.Text;
namespace Proje1
{
class Program
{
static void Main(string[] args)
{
System.Console.WriteLine("www.memikyanik.com");
System.Console.Write("kmak iin bir tua basn");
System.Console.ReadKey();
}
}
}
Frsattan istifade hemen ksa bir reklam aras vereceim: Daha nce Visual
Studio veya Express Edition temel alan programclk kitab incelemi
olanlarn malumu olduu gibi dnyann hibir yerinde hi kimse Visual
Studio veya Express Edition byle anlatmyor. Hele hele biraz sonra
anlatacaklarm hibir kitabn balang sayfalarnda bulamazsnz. C# veya
.NET uyumlu baka programlama dili hakknda kitap veya makale yazanlar
burada anlattklarm bilmiyorlar m? Bilmez olurlar m? Mutlaka bilirler, belki
de bazlar Memik YANIKtan daha iyi biliyorlardr. O zaman neden
anlatmazlar bunlar? Nedeni ok basit: Onlarn Memik YANIK gibi ilk
okumada anlalma gibi bir kayglar yoktur. Tabii Memik YANIK ilk okumada
56 Memik Yank - C#a Balang Kitab
mutlaka anlalacam dedii iin veya byle bir tercihi olduu iin baka
yazarlarn 10 sayfada anlattklarn Memik YANIK en fazla 12 sayfada anlatr.
Bu nedenledir ki bazlar her frsatta Memik YANIK kitaplarn ekran
grntleri ile doldurup iiriyor diye beni sularlar. Bu derslerde yer ve
sayfa sorunu olmad iin kitaplarda kullandmda ok daha fazla ekran
grntsne yer verdim.
Buradaki csproj uzantl dosya ise proje dosyasdr. csproj uzantl proje
dosyalarnda projedeki form ve classlar hakknda bilgi bulunmaktadr.
Express Edition tarafndan hazrlanan proje dosyasnn ieriini size
gstermek iin Not Defterinden yararlandm. XML formatndaki bu dosyaya
ilgisiz kalabilirsiniz.
using System;
using System.Windows.Forms;
namespace Proje1
{
class Program
{
static void Main(string[] args)
{
Form Form1;
Form1 = new Form();
Form1.Text = "memikyanik.com";
Application.Run(Form1);
}
}
}
Her ne kadar bu dosya nemlidir desem bile bu dosyaya kaytsz kalp usta
ii programlar yazmak mmkndr. Ne ki iin geri plannn anlalmas iin
bu dosyann zerinde biraz durmak bir zorunluluk. Solution Explorer
penceresinde Program.cs dosyasn ift tklarsanz bu kod dosyasnn
ierii grntlenir.
Application.Run(new Form1());
Bu satr daha nce grm olanlar yle bir aklamay okumu olabilirler:
Uygulama Run() metodu ile balatlmaktadr. Aslnda bu tek cmlelik
66 Memik Yank - C#a Balang Kitab
Konunun devamnda anlatlaca gibi Express Edition ile bir Windows Forms
uygulamas hazrlandnda System.Windows.Forms adl Namespaceteki
Form adl Classn mirass Form1 adnda bir Class hazrlanmaktadr. te
bu satrda Form1 adl Classn rnei alnp Application nesnesinin Run()
metoduna parametre olarak verilmektedir. Yeterince ak olmayan bu 2
cmlenin aklamasn bir sonraki derse brakyorum.
BLM 5
VISUAL STUDIO LE PROGRAM GELTRMEK
Visual Basicin varsaylan ayarlar ile Visual C#n ayarlar arasndaki nemli
farklardan birisi udur: Visual Basic ayarlar geerli iken Visual Studio sizi
hazrladnz projeyi hemen kaydetmek zorunda brakmyor. Tabii bu
diyalog kutusunda hangi dilin varsaylan ayarlarn seerseniz sein
sonradan Tools mensnden Options komutu ile ekrana getirilen diyalog
kutusunda ortam ayarlarnda istediiniz deiiklii yapabilirsiniz. 2004
ylnda yaynlanan C# kitabmda Data Adapter Configuration Wizard ile
DataAdapter nesnesinin zelliklerini ayarladm diye yarglandma gre
yarn bir gn yerli yazarn birisi kp bu Import and Export Settings
Wizard kullanmay ilk ben akl ettim derse sorumluluk kabul etmem.
Ayrca bu memlekette Wizard tarafndan ekrana getirilen diyalog kutularnn
birden fazla kitapta ayn srada olduunu rapor edecek ok sayda bilim
adam(!) olduuna gre bu Wizarddan yararlanmak risk tekil edebilir.
Visual Studio 2003 veya 2005 ile C# projesi hazrlanmak istendii zaman
ekrana getirilen New Project diyalog kutusunda .NET Framework
srmn tercih etme imkan yoktu. Visual Studio 2003 ile .NET Framework
1.1 uyumlu projeler hazrlanabilirken Visual Studio 2005 ile .NET 2.0
uyumlu projeler hazrlanabiliniyordu. Visual Studio 2008de ise proje
hazrlarken .NET Frameworkn 2.0, 3.0 veya 3.5 srmlerinden birisini
seme imkann bulunmaktadr. New Project diyalog kutusunda seilen
.NET Framework srmne gre Templates liste kutusunda listelenen
ablonlar deimektedir.
Proje hazrlanrken belirtilen klasrn altnda proje ile ayn ada sahip bir
klasr hazrlanyor. Buna gre her Visual C# projesi iin ayr bir klasr
hazrlanmaktadr. Proje iin hazrlanan klasr ve dosyalar aada
grebilirsiniz.
Studio ile gelen Class Library ablonu ile kolayca DLL dosyalar hazrlayp
.NET Framework ile gelenlerde oluu gibi bu DLL dosyalarndan
yararlanabilirsiniz.
Ak olan her form veya kod dosyas iin Windows Form Designer
penceresinin st ksmnda bir sekme hazrlanmaktadr. Bu srada Solution
Explorer penceresinde Form2.csnin zerinde ift tklama yaparsanz bu kod
dosyas dahilinde hazrlanan Classn yani Form2nin grsel yaps
grntlenir. Ak olan formlardan birisine ait kodlar grmek istiyorsanz o
formu seip View mensnden Code komutunu vermelisiniz.
Form2 aktif form iken View mensnden Code komutu verilirse bu formu
oluturan kodlar grntlenir. Aada verilen ekran grntsn almadan
nce Solution Explorer ve Properties pencerelerini gizledim. Bu kodu
yakndan incelediinizde Form2 adnda ve .NET Framework ile gelen Form
snfnn mirass bir Classn hazrlandn grrsnz.
82 Memik Yank - Visual C#a Balang Kitab
Projedeki 2. formu temsil eden Form2 snfna ait kodlarn bir ksm bu
dosyada iken dier yars Form2.Designer.cs dosyasnda bulunmaktadr.
Projedeki mevcut kod dosyalarn amak iin Solution Explorer penceresine
bavurmak yerine File mensnden Open-File komutunu verebilirsiniz.
ToolBox Penceresi
.NET Framework ile birlikte Toolboxta birer dme ile temsil edilenlerden
ok daha fazla kontrol verilmektedir. zerinde altnz forma
yerletirmek istediiniz kontrol Toolboxta yer almyorsa Tools mensnden
Choose Toolbox Items veya Toolboxa ait ksayol mensnden Choose Items
komutunu verebilirsiniz.
dnda ak olan her form iin Visual Studio penceresinin orta ksmnda bir
sekme hazrlanmaktadr. Programc ak olan hangi formla ilgileniyorsa o
formu temsil eden sekmeyi tklar. Aada verilen ekran grntsn
aldm srada ak durumda olan 3 form vard ve Form2nin grsel yaps
grntleniyordu.
Projelerinin Bileenleri
.NET Framework ile gelen Form snfnn mirass snflar kendiniz kod
yazarak hazrlayabilirsiniz ancak bu durumda Visual Studio penceresi iinde
formlarn grsel yapsnn grntlenmesinde sorunlar yaanr.
leri ki sayfalarda deinilecei gibi Visual Studio ile yeni bir proje
hazrland zaman ayrca sln uzantl bir Solution dosyas hazrlanyor.
Visual Studio ile hazrlanan C# projelerinde yukarda sz edilen dosyalara
ek olarak Properties ad altnda gruplanan 5 dosya daha bulunmaktadr. Bu
5 dosya sayesinde projenin zellikleri ayarlanmaktadr. rnein uygulama
dahilinde kullanlan resim dosyalar Resources.resx dosyasna dahil
edilebilmektedir. Bu 5 dosya projeye ait klasrn iinde Properties
klasrnde saklanmaktadr.
Visual Studio veya Express Edition ile hazrlanan projeler hakknda bilgi
sahibi olmanz iin New Project diyalog kutusunu ekrana getirip Empty
Project ablonu ile bir proje hazrlayp kaydettim. Aada verilen ekran
grntsnden tespit edeceiniz gibi Solution Explorer penceresinde
herhangi bir klasr veya dosya listelenmiyor.
Blm 6: Windows Forms Uygulamalar 91
Solution Hazrlamak
Yukarda belirtildii gibi Visual Studio ile yeni bir proje hazrladnzda
ayrca bir Solution hazrlanmaktadr. Bu konuda adm adm bilgi vermek
iin Visual Studionun File mensnden komut verip New Project diyalog
kutusunu ekrana getirdim.
Herhangi bir proje iermeyen yeni bir Solution hazrlamak iin Project
Types liste kutusunda Visual Studio Solutions ve Templates kutusunda
ise Blank Solution ablonunu seip solution iin klasr seip OK dmesini
tklarsanz aadaki gibi Visual Studio penceresi ile karlarsnz. Bu srada
Solutiona dahil edilmi olan herhangi bir proje olmad iin Solution
Explorer penceresinde yalnzca Solution ad listelenir.
Ayrca New Project diyalog kutusunda Create directory for solution onay
kutusu pasif duruma getirip proje hazrlanrken otomatik olarak hazrlanan
Solutionla ilgili dosyann ayr bir klasre konulmasn engelledim. Program
gelitirme arac yani IDE olarak Visual Studio yerine C# iin hazrlanm
Express Edition kullananlar iin unu sylemek isterim: Projeleri
altrmak balamnda Visual Studio ile Express Edition birbirinden pek
farkl deildir.
alr durumdaki projeye ait ilk formu Kapat dmesi ile kapatp projenin
almasn sona erdirip tasarm moduna geebilirsiniz. Projenin almasn
sona erdirip Design moduna geilirse Visual Studionun Toolbox ve
Properties gibi pencereler tekrar grntlenir.
Yukarda belirtildii gibi Visual Studio ile bir Windows Forms Application
hazrlayp bu uygulamay kaydedip sonrada Debug mensnden Start
Debugging komutunu verdiinizde Visual Studio sz konusu uygulamay
nce derlemektedir. Tabi Visual Studio bu ilemi yaparken .NET Framework
ile gelen C# derleyicisini kullanmaktadr. Derleme ilemi srasnda
hazrlanan dosyalar \uygulama\obj\Debug klasrne yerletirilmektedir.
Derleme ileminin ikinci aamasnda birisi EXE olmak zere birka dosya
hazrlanp Uygulama ad\Bin\Debug klasrne yerletirilir. EXE dosyay ift
tklayp veya Balat mensnden altr komutunu verip projenizi
altrabilirsiniz. Tabii profesyonel programclar projeleri iin kurma CDsi
hazrlayp uygulamalarn yle datrlar. Kurma CDsini Visual Studio ile
gelen Setup Wizarddan yararlanarak hazrlayabilirsiniz.
C# iin hazrlanan Express Edition ile hazrlanan projelerde New Project diyalog
kutusunda projeye verilen ad sonradan deitirilebilmektedir. Projeye vermek
istediim ad Name kutusuna yazp OK dmesini tklaynca aadaki gibi bir
Visual C# 2008 Express Edition penceresi ile karlatm.
Blm 6: Windows Forms Uygulamalar 103
Application.Run(new Form1());
Express Edition veya Visual Studio ile yeni bir proje hazrlandnda projeye
Form1 adnda bir formun dahil edildiini biliyorsunuz. Formu oluturan
kodlar grntlemek iin Solution Explorer penceresinde sz konusu form
seili iken View mensnden Code komutunu verebilirsiniz. Aadaki
ekran grntsn incelediinizde projedeki her form iin hazrlanan CS
dosyalarnn ilkinde en bata kullanlmas muhtemel snflarn yer ald
namespaceler iaret edilmektedir. Ardndan form ile ayn ada sahip bir
Class hazrlanmaktadr.
Devamnda Form1 snfnn yapc metoduna yer verilmi. Class ile ayn
ada sahip metotlara yapc veya constructor metot ad verilmektedir.
Form1 ad verilen Classn yapc metodunda yalnzca
InitializeComponent() metodu iletilmektedir. Form1 snfyla ilgili
108 Memik Yank - Visual C#a Balang Kitab
7
Classlarn birden fazla kod dosyas veya para eklinde dzenlenmesine
Partial Class denilmektedir. Bu nedenle Form1.cs veya Form1.Designer.cs
dosyalarndaki partial anahtar kelimeleri silinirse hata meydana gelir.
Form1 adl Class iin Visual Studio tarafndan hazrlanan
Form1.Designer.cs dosyasna bakarsanz Dispose() adnda bir metodun
olduunu grrsnz. Bu metot, snfla ilgili olarak hazrlanan nesnelerin
zaman gelince bellekten silmesiyle ilgilidir.
imdi Form1 iin Visual Studio tarafndan hazrlanan satrlar ve bu
satrlarda kullanlan metot ve anahtar kelimelerin bazlarndan sz
edeceim. Visual Studio her form iin Form1.Designer.cs dosyasnda
yukarda verilen satrlardan daha fazlasn hazrlamaktadr. Tasarm annda
Properties penceresinde yaplan deiiklilere programc dorudan mdahale
etmeyi tercih etmeyecei iin bu satrlar Windows Form Designer
generated code adl altnda gruplanp gizlenmektedir. Aada verilen
kodda bu blgeye yazlan satrlar grebilirsiniz.
Blm 6: Windows Forms Uygulamalar 109
namespace Project1
{
partial class Form1
{
private System.ComponentModel.IContainer components=null;
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Text = "Form1";
}
}
}
imdi gidip bakalm Express Edition bizim iin projedeki ilk formun
Form1.Designer.cs dosyasna neler yazm? Form1.Designer.cs dosyasnda
aada verilen ekran grntsnde grlenlerden daha fazla satr olmasna
ramen ekran grnts kk olsun diye yalnzca button1 nesnesiyle ilgili
satrlarn grnmesine izin verdim.
Blm 6: Windows Forms Uygulamalar 111
Bu ekilde bir snfa ait kodlarn birden fazla kod dosyas arasnda
paylalmasna Partial Class(paral snf) denilmektedir. Form1.cs
dosyasna dikkatli baktnzda InitializeComponent() metodunun
iletildiini grebilirsiniz. Bu metodun yani InitializeComponent
metodunun Form1.Designer.cs dosyasnda olduunu biliyorsunuz.
Bu metot button1 nesnesinin Click olayn temsil etmesi iin hazrland iin
Express Edition metoda ad seerken nesnenin ve olayn adn kulland. Tabii
bu art deildir. Anlatlan ekilde hazrladnz metoda istediiniz ad
verebilirsiniz.
imdi ise forma bir TextBox yerletireceim. ncelikle forma daha nce
yerletirdiim button1 ve button2 adl dmeleri sileceim. Forma
yerletirdiiniz dmeleri seip Delete tuuna basarsanz Express Edition
gider Form1.Designer.cs dosyasnda bu dmelerle ilgili ne var ne yok her
eyi siler. Ancak tasarm annda dmeyi ift tklayarak veya kendi
hazrladnz bir metot varsa Form1.cs dosyasndan silinmez. Sz konusu
metoda gerek duymuyorsanz kendiniz silebilirsiniz.
Bu metotta if deyimi ile en son baslan tuun ASCII kodu 13 olan Enter
olup olmad aratrlyor. En son baslan tuun kodu 13 ise MessageBox
Blm 6: Windows Forms Uygulamalar 119
Tabii yarn bir gn yerli yazarn birisi ortaya kp TextBoxlarn Enter olayn
temsilen metot hazrlamay ilk ben akl ettim, dolaysyla fikri haklarma
tecavz ettiniz buyurun mahkemeye derse hi armamak gerekir. Zira bu
memlekette bu byle bir iddiay onaylayacak ok sayda bilim eri vardr.
Yukardaki sayfalarda iaret edildii gibi Express Edition ile gelen Windows
Forms Application ablonu ile hazrlanan projeler Form1 adnda bir
forma sahip olmakta ve bu form projenin balang formu olmaktadr.
Projenizde 2. bir formun olmasn istiyorsanz Express Editionnn Project
mensnden Add Windows Form komutunu verip ekrana aada verilen
Add New Item diyalog kutusu getirmelisiniz.
deiken nasl tanmlanr sorusu gelmi olabilir. Size bir tiyo: Dnyann en
zor ilerinden birisi nesneye ynelik programclk kavramlarna sahip
olmadan C# gibi %100 nesneye ynelik programlama dilini anlatmaya
soyunmaktr.
Bu sorunun nne gemek, baka bir deyile hem 2. formu Show() metodu
ile ekrana getirmek hem de ekranda ayn anda 2. kopyasnn olmasn
engellemek iin deiken tanmlama satr dmeye ait Click() metodunun
dna alnabilinir. Aada verilen kodda bu ilemi nasl yaptm
grebilirsiniz.
Form2 ikinci_form;
private void button1_Click(object sender, EventArgs e)
{
if (ikinci_form == null || ikinci_form.IsDisposed)
{
ikinci_form = new Form2();
ikinci_form.Show();
}
}
PictureBox Konrol
Bu kitab yazarken arlkl olarak Visual Studio kullanm olsam bile Visual
Studio yerine C# iin hazrlanm olan Express Edition kullananlar
herhangi bir zorluk ekmezler. tesi baz yksek okullarda verilen C#
Blm 6: Windows Forms Uygulamalar 133
imdi srada bu kitapta toplam 8 sayfa yer tutan Operatrler adl blm
var. Tabi hemen baz arkadalar 8 sayfa boyunca art(+), eksi(-), blme(/)
vs.. operatrlerinden sz etmi olduumu dnebilirler. Bu blmde bu
operatrlere ksaca deinilmi olsa bile asl arlk Kaydrma Operatrleri
ile as ve is operatrlerine verildi. nk as ve is operatrleri ok sk
kullanlmaktadr. Devamnda 3 sayfa boyunca bit dzeyinde ilem yaplrken
kullanlan operatrlerden sz edildi. Matematiksel ilemlerde kullanlan
operatrler hakknda bu kitapta yazlanlar karlsa bile sayfa says
deimiyordu. Bit dzeyinde ilem yaplrken kullanlan operatrlerden
yararlanmak son derece teknik bir ilem olmasna ramen konular yle
hikaye edildi ki ilk okumada mutlaka anlalacak yalnlktadr.
Bu kitabn Blok Kontrol adl blmnde 10 sayfa boyunca if, while, for,
foreachten sz edildi. Bu kitabn bu blm balamnda dier kitaplara bir
arts pek yoktur. Ancak balangta zor anlalan foreach dngsn daha
nce hi duymam olanlar bile bu kitabn ilgili sayfalarn okuduklarnda
foreach dnglerine hemen hakim olabilirler.
11. blmde 16 sayfa boyunca tarih ve zaman bilgileri btn ayrntlar ile
anlatlmaktadr. Baka bir deyile bu kitab okuyan birisi iin tarih ve zaman
bilgileri zerinde yaplan ilemler balamnda bilmedii hibir ayrnt kalmaz.
Ayrca bu blm okuyanlar Ticks zellii ve TimeSpan yaps hakknda
bilgi sahibi olurlar. Baz arkadalar yine itiraz edip Tarih ve zaman bilgileri
zerinde yaplan ilemleri anlatmak iin 16 sayfa fazla deil mi? Bir gre
gre evet. artlar zorlayp bu blmn sayfa saysn 12 veya 14e indirmek
mmknd. tesi birok kitapta bu konuya ayrlan sayfa says betir.
Buna ramen neden mi bu konuyu btn ayrntlar ile anlattm. nk
138 Memik Yank - Visual C#a Balang Kitab
Gelelim bu kitaba. ADO.NET hakknda bilgi iermeyen bu kitap 1070 sayfa olmasna
ramen, ileri dzey diye anlan bir ok konuda ayrntl bilgi iermesine ramen
kaleme alp bu kitapta kullanmadm elimde yaklak 300 sayfalk metin
bulunmaktadr. Baka bir anlatmla 2005 yl sonunda yaynlanan ve C# 2.0
anlatmak kaygs ile kaleme aldm kitabmn 1. cildinin zerine 300 sayfay
ekleyince bu kitap kt. Tabii bunu yaparken blmleri yeniden kaleme alp C# 3.0
ile gelen yeni zelliklerden sz ettim.
Bu kitaba nsz yazarken C# kitabmn 1. cildi iin hazrladm nszn bir ksmn
buraya alacam: Bir programlama dilini anlatma kaygs ile yazlan kitaplarla ilgili
olarak Balang Dzeyi ile Balang Konular kavramlar bazen birbirine
kartrlyor. rneklemek gerekirse; balang dzeyi bir kitapta deikenler
hakknda bilgi ieren sayfalarda Pointer deikenlerden sz edilmez. tesi balang
dzeyi kitaplarda deikenler hakknda bilgi verilirken ayrntlara inilmez.
Dzeyi balang olmayan kitaplar ise balang konularn ierebilir. Bu adan bir
deerlendirme yapmak gerekirse, bu kitap ister istemez baz balang konularn
iermektedir. Ancak bu kitapta ileri dzey diye deerlendirilen kitaplardaki birok
konu hakknda ayrntl bilgi bulunmaktadr. rnein usta bir programcnn
deikenler hakknda ne bilmesi gerekiyorsa hepsi bu kitapta bulunmaktadr. Buna
ramen bu kitapta her konu balang dzeyi kitaplarnn basitliinde anlatld. Yine
rneklemek gerekirse bu kitapta Pointer deikenler ve Attributeler hakknda bilgi
ieren sayfalar ilk okumada anlalacak yalnlktadr.
Bu kitab kaleme alrken beni en ok zorlayan alma, kitapta hangi konulara yer
yerip, kitap iin setiim konulara ayrlacak sayfalarn saysn tespit etmek oldu.
rnein Assembyller hakknda mutlaka bilgi vermek gerekiyordu. tesi Assembly
kavram hakknda bilgi sahibi olmayan birisine mevcut assemblylerden sz etmenin
zorluu ortadadr. te asl zorluk burada balyor:nk Assembly ok geni bir
Blm 6: Windows Forms Uygulamalar 143
Benzer orta yol tercihini Attributeler, Generic snflar, Windows Mesajlar, Reflection
iin de yaptm. Gelelim bu kitapta torpil getiim konulara: 2004 ylnda yazdm
C# kitabn kaleme alrken baka bir C# kitabndan alnt yapmakla sulandm.
Sulamalarn asl dayanak noktas deiken ad benzerliiydi. Deiken ad
benzerliine sfra blme hatasnn, Selection Sort ileminin ve Word belgeleri
zerinde nasl ilem yapldnn anlatld sayfalarda vs. rastlanmt. Her ne kadar
benzer olduu sylenen deikenlerin adlarnn bir ounu 1994 ylnda yaynlanan
Clipper kitabmda yllar nce kullanm olsam bile alnt yapmakla sulandm
konulara bu kitapta torpil geip daha ayrntl bir ekilde ele aldm. Belki bu ekilde
bu konular bildiime bir ka kiiyi inandrm olurum. tesi deiken ad
benzerliinden dolay tekrar sulanmamak iin Osmanlca bir szlk edinip baz
deikenlere Osmanlca adlar verdim.
144 Memik Yank - Visual C#a Balang Kitab
Bir sre sonra dBASEin o gnlerdeki sahibi A. Tate firmas byk grltlerle
dBASE IV kard. Clipper ise dBASE IV uyumlu olmay brakp Clipper 5.0 ile kendi
yoluna devam etti. Clipper ile veritaban ilemleri son derece kolay olduu iin
binlerce yerli yazlm firmas uygulamalarn Clipper ile gelitiriyordu. Clipper ile
almay sevince bir sre sonra Clipper zerine yazlar yazmaya baladm. 1992
ylnda o zamann bilgisayar dergilerinde Clipper konulu ok sayda yazm
yaynland. O gnlerde Clipper konulu bir tek Trke kitap vard. Bu kitap ise Ankara
merkezli Ekonomist yaynevinden kan eviri bir kitapt. Yani anlayacanz Clipper
konulu Trke kaynak yok gibiydi. Bu nedenle Clipper konulu kitap yazmaya karar
verdim. u aralar Memik Yank deikenlerini almakla itham edenler belki o
gnlerde yalar itibar ile bilgisayarla henz tanmamt. stelik Memik Yank
bugnlerde almakla itham edildii deikenlerin adlarn Clipper kitabnda
kullanmt.
Tekrar etmek gerekirse; Clipper kitabn kaleme alrken yl 1993, internet yok,
Trke yaynlanm bir tek Clipper kitab var. Ki bu kitap kapsaml deildi. Bu
artlarda son derece kstl ngilizcesi ile Memik Yank tarafl tarafsz herkes
tarafndan beenilip ok satan Clipper 5.2 kitabn yazp yaynlyor. stelik
bugnlerde deiken almakla itham edilen Memik Yank bu kitabnda verdii
kodlarda i, j, sayi, dosya vs adnda deikenler tanmlayp kullanyor(!). Bir Allahn
kulu kp Memik Yank bu kitab yani Clipper kitabn evirmitir demiyor.
Diyemezlerdi nk kitabn ieriinin bir ksmn daha nce dergilerde
yaynlamtm. Neyse uzatmayaym; Memik Yank 1993 ylnda Internetin olmad
gnlerde bir tek Trke kaynan olduu gnlerde Clipper 5.2 adnda sper bir
programclk kitab yazd m? Yazd. Bu kitap sayesinde binlerce kii programc oldu
mu? Cevap net:Oldu. Bu yllarda insanlar Clipper ile harl harl program yazarken
hibir niversite ve yksek okulda Clipper dersleri verilmiyordu.
1995 ylnca gece gndz alp dBASE IV Compiler adnda bir kitap hazrladm. O
gnlerde dBASE IV Compiler hakknda brakn Trke kayna yabanc kaynak
bulmak bile Trkiye artlarnda imkansz gibiydi. Yabanc kaynak olsa bile benim
iin deien bir ey olmazd. nk Clipper ve dBASE IV Compiler kitaplarn kaleme
alrken programclarn ihtiyalarn gzetiyordum. Clipper ile program gelitiren birisi
ne biliyorsa, neleri kullanyorsa kitaplarda o konulara yer veriyordum. Bir sre
sonra Windows uyumlu programclk yaygnlamaya balaynca Borland firmas
dBASEin Windows uyumlu srmn kard ama fazla tutulmad. nk bu srada
Microsoft firmas Accessi piyasaya vermiti. Ksaca zetlemek gerekirse dBASE
Compiler zerine yazdm kitap alannda tek kald. Yani dBASE IV Compiler kitab
dolaysyla Memik Yankn dava edilmesi mmkn deildi.
Sanrm FoxPro 2.6 kitabm ok iyi olmutu ki o zamann Microsoft genel mdr
beni telefonla arayp teekkr etmiti. zin verin 2 cmle daha ekleyeyim: Yani daha
nce hakknda kitab brakn makale bile yazlmam bir konuda Memik Yank kitap
yazyor, hem de o gnn artlarna gre ok iyi bir kitap yazyor. Sonra aradan tam
10 yl geiyor birileri kyor Memik Yank sfra blme hatasn anlatmak zere
yazd 3 satrlk kodun kendi kitaplarndan alnt olduunu iddia ediyor. Kant ise
bu 3 satrlk kodda kullanlan sayi1, sayi2 ad verilen deikenlermi. Yani Memik
Yank snfa blme hatasn anlatmak iin yazd kodda tanmlad deikenlere
sayi1, sayi2 yerine number1, number2 adlarn vermi olsayd kitabnda verdii 3
kod deerinden ok ey kaybedecekti(!).
Gelelim Visual Basic 3.0 kitabna. Microsoft firmas daha nce Visual Basicnin 2
srmn karm olsa bile ilgi 3.0 srm ile geldi. Visual Basic 3.0 piyasaya
verildikten sonra bir sre sonra Microsoft Press tarafndan yaynlanm kitap
Trke olarak yaynland. Son derece kstl bir ierii sahip bu kitab grnce Visual
Basic konulu kitap yazmaya karar verdim. Uzun uralar sonucu Visual Basic 3.0
kitabm kt. Bu kitap ok beenildi. nk Visual Basic konusu ilk kitabm o gnn
artlarna gre ok sayda ileri dzey konu ieriyordu. rnein kod yazarak alma
annda Access veritabannn nasl hazrlandn adm adm ilk anlatan Memik
Yanktr. Bilmeyenlere hatrlatmak isterim: Visual Basic 3.0 Windowsun 3.1
srmne gerek duyuyordu. tesi Visual Basic 3.0 piyasaya verildii gnlerde
insanlar Windowsu yeni yeni kullanmaya balamlard. Dolaysyla programcla
ok sonra balayp uzman programc olan baz arkadalar Memik Yankn 1995
ylnda yazd Visual Basic kitabn bugnn artlarna gre deerlendirip yorum
yapyorlar. Bu arkadalar son birka yl iinde yaynlanan ADO.NET, Delphi 2007,
C# 3.0 ve Visual Basic 9.0 kitaplarm artk 5-6 yl sonra gncelliklerini
kaybettiklerinde zahmet edip deerlendirirler.
146 Memik Yank - Visual C#a Balang Kitab
C# 1.0 kitabm kaleme aldm gnlerde birka yerli web sitesinde yukarda
szn ettiim sorularn cevaplar zaten vard. Buna ramen birileri kp
Memik Yank kitabnda Word ve Excelle ilgili olarak yazdklarn bizim
kitaplar okumadan renmi olamaz dediler. Sanki sz konusu olan bir pop
mzik sanats ile yaplm zel bir syleiymi, sanki ikinci bir kaynan
olabilme ihtimalinin sfr olduu zel bir aratrmaym sz konusu olan. Hal
bu ki Microsoft gibi derleyici reten firmalar derleyicileri hakknda en kk
ayrntlar bile derleyiciyi piyasaya vermeden ok nce aklyorlar. Yoksa
insanlar nasl program yazarlard, yazarlar nasl programclk kitaplar
yazarlard? Yaynlanp piyasada satlan bir programclk kitabn edinip bir
konuyu renmek doal olmasna ramen C# kitabmn Word ve Excelle
ilgili blmn yazarken yerli web sitelerindeki 2 yazy ve MSDNde birka
metodun orijinal yapsna bakmakla yetinmitim.
duyarlar. Ksa bir sre sonra bu metni nasl kaleme aldm adm adm
akladm bir makale hazrlayp Programclar in Yazarlk Dersleri 4
adyla yaynlayacam.
2003 iinde ilk C# kitabm kaleme alrken Add Reference diyalog kutusunda
aratrmaya kp acaba Word belgeleri zerinde ilem yaparken hangi
referans kullanmak gerekiyordur sorusuna kendimce cevap arasaydm
bulmak zor olmazd. Ancak ok daha nce birka yerli web sitesinde bu
konu zerine yazlm makaleler ilk yaynlandklarnda okuduum iin Word
belgeleri zerinde ilem yaparken gerek duyulacak snflarn hangi
namespacelerde, bu namespacelerin ise hangi referanslarda yer aldn
biliyordum.
using Microsoft.Office.Core;
using Microsoft.Office.Interop.Word;
Projeyi altrp bu metodu iletince aadaki gibi bir sonu elde ettim. Bu
ekilde alan Word penceresinde herhangi bir belge olmaz. Bu srada komut
verip Word penceresinde yeni belge hazrlayabilir veya mevcut belgeleri
aabilirsiniz. Daha ak bir anlatmla yukarda hazrladmz
ApplicationClass nesnesi Balat mensnden komut vererek ekrana
getirdiimiz Word penceresini temsil ediyor.
Belge1 adnda bir belge hazrlanm olunur. Bu belgeye istenildii gibi bilgi
girilip kaydedilebilir.
Word_nesnesi.Visible = true;
Belge1 = Word_nesnesi.Documents.Add(ref sablon,
ref yeni_sablon, ref missing, ref missing);
}
ye ad levi
wdNewEmailMessage E-mail
wdNewFrameset Frameset
Hazrlayp geri planda kod yazarak bilgi aktarp sonra kaydetmek istediiniz
Word belgesinin ekranda grnmesini istemeyebilirsiniz. Tabii
ApplicationClass nesnesinin Visible zelliini false yapp Word penceresini
grnmesini engellediyseniz Add() metodunun 4. parametresinin false ya da
true olmasnn bir nemi olmuyor.
Yine Word ile alrken arka arkaya birden fazla belgeyi hazrlayp birden
fazla belge zerinde almak mmkndr. imdi yukarda verdiim koda
ekleme yapp arka arkaya 2 Word belgesi hazrlayacam.
Blm 6: Windows Forms Uygulamalar 157
Bildiiniz gibi yeni bir Word belgesi hazrland zaman belge ierii bo bir
paragrafa sahip olmakta ve Enter tuuna her baslta yeni bir paragraf
hazrlanmaktadr. Bu artlarda yani C# uygulamas dahilinde ierii bo bir
belge hazrlanp imle belgenin balang noktasnda iken InsertAfter()
yerine InsertBefore() metodu kullanlm olunsayd ayn sonu alnrd.
imdi bu Word belgesine kod yazarak bir paragraf ekleyip tekrar bilgi
gireceim. Belgeye paragraf ekleme ilemi, yani Paragraphs koleksiyonuna
eleman ekleme ilemi Add() metodu ile yaplmaktadr. Bu metodun nasl
kullanldn aada grebilirsiniz. Document nesnesinin Paragraphs
koleksiyonundan yararlanp her trl paragraf ilemlerini yapmak
mmkndr.
Bu ekilde dzenlenen kod iletilirse aadaki gibi bir sonu alnr. Bu srada
Word belgesi 2 paragrafa sahiptir. Ayn ekilde Word belgesine istediiniz
gibi bilgi girebilirsiniz.
Blm 6: Windows Forms Uygulamalar 159
imdi rnek olmas iin Word belgesine mevcut bir ListBoxn elemanlarn
aktaracam. Bu ilemi yapmak zere hazrladm kodu aada verdim.
Benzer mantkla veritabanndan okunan kaytlarn her birisi Word belgesine
ayr bir satr olarak aktarlabilinir.
Bu 2 satrlk kod ile Word belgesine TextBox aracl ile bilgi aktarrken
TextBoxn MutliLine zellii True iken Enter tuuna baslp bir alt satra
inildiinde Word belgesinde yeni bir paragrafa geilmi olunur. Aktif Word
belgesine paragraf eklerken Selection snfnn TypeParagraph()
metodunu kullanabilirsiniz.
textBox1.Text = Word_nesnesi.ActiveDocument.Words[1].Text;
Baka bir deyile cmle sonunu iaret etmek zere yazlan noktadan sonra
bolua yer verilmezse Word cmlenin devam ettiini sanyor.
richTextBox1.Text = Word_nesnesi.ActiveDocument.Sentences[2].Text;
richTextBox1.Text= Word_nesnesi.ActiveDocument.Paragraphs[1].Range.Text;
Aktif belgenin btn ieriini okumak istemi olsaydm aadaki gibi kod
yazardm.
Bildiiniz gibi Word ile alrken imlecin bulunduu noktann biim zellikleri
naslsa yeni girilen karakterler de ayn biim zelliklerine sahip olmaktadr.
Bu nedenle kullanclar ounlukla metnin genellinde kullanacaklar biim
zelliklerini ayarlayp yle bilgi girerler. Benzer ekilde C# uygulamas
dahilinde hazrladnz Word belgesine kod yazarak aktarmak istediiniz
metin iin nceden biim zelliklerini ayarlayabilirsiniz. Bu ilemin nasl
yapldn aada grebilirsiniz.
Word belgesinin seili durumda olan ksmn alt izili yapacak kodu button
nesnesinin Click olayn temsil eden metoda yazmak yerine CheckBox
nesnesinin CheckedChanged olayn temsil eden metoda aadaki gibi
yazabilirsiniz.
mlecin zerinde bulunulan satrdaki bir sonraki kelimenin bana veya bir
nceki kelimenin sonuna gitmesini istiyorsanz bu kodda unit adn
verdiimiz object tipindeki deikene WdUnits.wdWord sabitini
aktardktan sonra Word uygulamasn temsil eden nesneye MoveLeft()
veya MoveRight() metodunu uygulamanz gerekir. Bu metotlarn nasl
kullanldn aada grebilirsiniz.
Word_nesnesi.ActiveDocument.Select();
object ilk = 0;
object son = Belge1.Characters.Count;
Range erim = Belge1.Range(ref ilk, ref son);
erim.Bold = 1;
object ilk = 0;
object son = Word_nesnesi.ActiveDocument.Characters.Count;
Range erim =Word_nesnesi.ActiveDocument.Range(ref ilk, ref son);
erim.Bold = 1;
zerinde etkili olur. rnein imle belgenin bir satrn orta ksmnda iken
aada verilen kod iletilirse 1.5 satr kadar seimi yaplm olunur.
Belgenin aramaya konu edilecek ksm bu ekilde tespit edildikten sonra sra
arama yaplrken kullanlan ve Microsoft.Office.Interop.Wordde yer alan
Find arayznn rneini almaya gelir. Find nesnesini nasl hazrladm
aada grebilirsiniz.
Yukarda sylendii gibi arama ilemi belgenin Range nesnesi ile iaret
edilen ksmnda yaplabildii gibi Selection nesnesinden yararlanlabilir.
Selection nesnesinden yararlanlarak nasl arama yapldn aada
grebilirsiniz. Bu kitab Word kitabna evirmemek iin Execute()
metodunun parametreleri hakknda bilgi vermedim.
Microsoft.Office.Interop.Word.Find arama_nesnesi;
arama_nesnesi = Word_nesnesi.Selection.Find;
bool sonuc = arama_nesnesi.Execute(ref aranan_str, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing);
if (sonuc)
MessageBox.Show("Aranan Bilgi Bulundu");
}
Yukardaki sayfalarda nce Word balattk. Sonra Add() metodu ile yeni
belge hazrlayp Word penceresine getirip bilgi girip biimlendirdik. Ardndan
bu belgeleri kaydetmeyi denedik. imdi srada mevcut Word belgelerini
174 Memik Yank - Visual C#a Balang Kitab
amak var. Tabi Word ile mevcut belgelerini aabilmek iin daha nceden
ApplicationClass snf ile Word balatm olmak gerekir. Yukardaki
sayfalarda Wordn varsaylan ayarlarna bal kalp Word balatld zaman
ekrana ierii bo bir belge getirdik.
Document Open(
[In] ref object FileName,
[In, Optional] ref object ConfirmConversions,
[In, Optional] ref object ReadOnly,
[In, Optional] ref object AddToRecentFiles,
[In, Optional] ref object PasswordDocument,
[In, Optional] ref object PasswordTemplate,
[In, Optional] ref object Revert,
[In, Optional] ref object WritePasswordDocument,
[In, Optional] ref object WritePasswordTemplate,
[In, Optional] ref object Format,
[In, Optional] ref object Encoding,
[In, Optional] ref object Visible,
[In, Optional] ref object OpenAndRepair,
[In, Optional] ref object DocumentDirection,
[In, Optional] ref object NoEncodingDialog,
[In, Optional] ref object XMLTransform);
ApplicationClass Word_nesnesi;
Document Belge1;
private void Dosya_open_Click(object sender, EventArgs e)
{
Belge1 = new DocumentClass();
Blm 6: Windows Forms Uygulamalar 175
ApplicationClass Word_nesnesi;
Document Belge1;
private void Dosya_open_Click(object sender, EventArgs e)
{
Belge1 = new DocumentClass();
Word_nesnesi = new ApplicationClass();
Word_nesnesi.Visible = true;
openFileDialog1.ShowDialog();
object kutuk = openFileDialog1.FileName;
object missing = System.Reflection.Missing.Value;
object yalniz_read = true;
Belge1 = Word_nesnesi.Documents.Open(ref kutuk, ref missing,
ref yalniz_read, ref missing, ref missing,
ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing,
ref missing, ref missing);
}
176 Memik Yank - Visual C#a Balang Kitab
ApplicationClass Word_nesnesi;
Document Belge1;
private void Dosya_open_Click(object sender, EventArgs e)
{
Belge1 = new DocumentClass();
Word_nesnesi = new ApplicationClass();
openFileDialog1.ShowDialog();
object kutuk = openFileDialog1.FileName;
Word_nesnesi.Visible = true;
object missing = System.Reflection.Missing.Value;
object izin_iste = true;
object yalniz_read = false;
Belge1 = Word_nesnesi.Documents.Open(ref kutuk,
ref izin_iste, ref yalniz_read, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing,
ref missing, ref missing);
}
Aktif belgenin seili ksm yerine geerli sayfay yani belgenin o srada
zerinde olunan sayfasn yazdrmak istemi olsaydm secim adn vermi
olduum deikenin ieriini aadaki gibi ayarlardm.
Bu kitap SQL Server konulu bir kitap olmamasna ramen daha nce SQL
Server hi kullanmam olanlarn kitaptan yararlanmasn salamak iin yer
yer SQL Serverdan sz ettim. Hemen soranlar olacaktr: Bu kitapta
ADO.NET hakknda her konuda bilgi var m? Bu soruya vereceim elbette
hayrdr. Tam 420 sayfa boyunca ADO.NET anlattm. Bu kitap 300 sayfa
olsayd baz konular kitapta yer almazd. Kitab 420 yerine 500 sayfa olarak
dzenlemi olsaydm kitaba baka konular ekler, mevcut konulardan
bazlarn ise daha ayrntl anlatrdm. rnein C# uygulamas dahilinde C#
kodu yazarak SQL Server iin Store Procedure veya kullanc tanml
fonksiyon hazrlama gibi konular daha ayrntl anlatrdm, ClickOnce iin
ayrlan sayfalarn says iki katna kard.
Yakn bir zamana kadar kitaplarmda kullandm 3-5 satrlk kodlar bazen
ekran grnts olarak kitap metni iinde kullanrdm. Bu sayede kodu
incelemek daha kolay oluyordu. Bazlar bu ekran grntlerini kitap
iirme olarak deerlendirip Memik YANIKn kitaplarn eletiriyorlard. Hal
bu ki kitap metni iinde direk kod yerine, kodun olduu ekran grntsn
kullanmann kitabn sayfa says zerinde etkisi ok snrlyd. Bunu
kantlamak iin oturup alp bir yaz hazrlayp kiisel sistemde yaynladm.
Bu kitapta kod ieren ekran grntlerinden mmkn mertebe kandm.
Tabii ki bu demek deildir ki bu kitapta hi ekran grnts yoktur. Zaten
ekran grnts kullanmadan baz konular anlatmak mmkn deildir.
rnein Setup Wizard anlatrken ekran grnts kullanmak
zorundasnz.
gelitirme arac olarak ister Visual Studio 2005 ister Visual Studio 2008
kullanlsn herhangi bir uyum sorunu yaanmaya ihtimali dktr. Benzer
ekilde bu kitabn ierii bakmndan veritabann SQL Server 2005 veya SQL
Server 2008 olmasnn nemli bir etkisi yoktur. www.memikyanik.comdan
mail ve MSN adresimi alp her trl sorununuzu yazabilir veya direk benimle
balant kurabilirsiniz.
Blm 6: Windows Forms Uygulamalar 181
Neyse uzatmayalm; 7-8 aylk youn bir almann sonucu Delphi kitabn
hazrladm. Daha sonra bu Delphi kitabna eklemeler yaptm. En son Ezel
Balkan adyla yaynladm Delphi 7 kitab 920 sayfa olup potansiyel
okurlarn beklentilerinin byk bir ksmn karlayacak bir ierie sahipti.
Aka belirtmek gerekirse 2006 yl ortalarnda elimde okurlardan ilgi
grd iin 3 bask yapan 920 sayfalk kitap varken tam 10 ay boyunca
Delphi zerinde alp Delphi 2007 for Win32 kitabn yazdm. Bundan u
sonucu karabilirsiniz: Ezel Balkan adyla yaynladm 920 sayfalk Delphi
kitabmla burada szn ettiim kitap arasnda dalar kadar fark var.
182 Memik Yank - Visual C#a Balang Kitab
Bunu fark edince bendeki mevcut kitaplara baktm. Birisi Microsoft Pressten
km 1000 sayfalk kapsaml kitap olmakla birlikte dier 3 kitapta
yazlanlar yanl olmamakla birlikte hi birisi Access veritaban kullanan
programcnn gvenlikle ilgili olarak gerek duyaca bilgileri iermiyordu.
Ayrca yazlanlar anlamak kolay deildi. Kitabn birisinde yazar aklama
yapmadan okuru ikna etmeden direk Wizard hakknda bilgi veriyordu. Ben
ne mi yaptm? nce okuru karlaaca muhtemel sorunlar hakknda
bilgilendirdim. Devamnda onu ikna ettim. Sra Wizarda geldiinden okur ne
yapacan zaten biliyordu. imdi soraym: ne yazd belli olmayan kolay
okunmayan kitap ileri dzey oluyordu da konunun ilk okumada anlalmas
iin baka yazarlarn 3 sayfada anlattklarn 4 sayfada anlatan Memik
Yankn kitab neden balang dzeyi oluyor? Kiisel grme gre bir
kitapta yazlanlar zor anlalyorsa ya okur yanl bir kitap semitir ya da
kitap kt kaleme alnmtr.
ok sayda forum sitesinde Delphi ile ilgili olarak daha nce sorulmu ve
cevaplanm binlerce soru vardr, yaynlanm yzlerce makale vardr. Bu
artlarda kalkp Memik Yankn 1100 sayfalk Delphi kitabna 49 YTL
demek caiz midir? Delphiye merak sarsaydnz bu kitaba 49 YTL der
miydiniz? Baz arkadalar bu soruya hayr diye cevap vereceklerdir. nk
merak ettii konular forumlara soracan, Delphi hakknda sitelerde
yzlerce makalenin olduunu, hatta yerli yabanc ok sayda E-Book bile
bulabileceini syleyeceklerdir.
Tecrbe asndan orta dzeydeki bir programcnn Delphi ile ilgili olarak
imdiye kadar merak edip cevabn arayp bulduu 100 sorunun olduunu
varsayalm. Delphi ile program yazmaya karar veren birisinin bu sorularn
hepsini bir veya birden fazla kitapta cevap bulmas, bu sorularn hepsinin
cevabn okuldaki veya kurstaki hocasndan almas veya gece gndz
Blm 6: Windows Forms Uygulamalar 185
Memik Yankn Delphi kitabn okuyan kii temel konulara vakf olduu iin
soru sormasn biliyordur, verilen cevaplar anlyordur. Forum yneticileri
foruma soru yazanlarn dertlerini net olarak yazamadklarndan, sorularn
ak olmadndan srekli dert yanarlar. Sorularn(Delphi konusundaki
sorularn diyelim) anlalmaz olmasnn nedeni o kiinin Memik YANIKn
Delphi kitabn okumam olmas ve o programla dili ile ilgili temel
kavramlara sahip olmamasdr.
Her ne kadar bu kitabn kapanda srayla Delphi 20007 for Win32, Turbo
Delphi ve Delphi 2006 olmakla birlikte Delphi 7 ve Delphi 2005 kullanclar
da bu kitaptan yararlanabilir. Bu kitabn ieriinin byk bir ksm Delphi 7
iin de geerlidir. Bir dier konu udur: Borlandn C++ Builder derleyicisini
kullanarak C++ hakknda bilgi sahibi olduysanz C++ Builder ile gelen
grsel kitaplk ve kontroller hakknda(zellikle veritaban ilemleri) bilgi
edinmek isteyenler bu kitaptan belli oranda yararlanabilirler.