Mega Code Archive

 
Categories / Delphi / Strings
 

Actionlist

TActionList : Bir çok Bileşeni merkezi bir noktadan kontrol etmek için geliştirilmiş bir elemandır. Özellikle bazı durumlarda kod yazarak kontrol etmek yerine otomatik olarak bazı işlemleri kontrol edebilen bir bileşendir. Örneğin kesme, kopyalama, ve yapıştırma metotlarını ele alalım. Eğer ilgili yerde seçili veri varsa o zaman kes ve kopyala seçenekleri aktif hale gelecek aksi halde pasif durumda olacaklardır. Eğer panoda veri varsa yapıştır seçeneği aktif hale gelecek yoksa pasif durumda olacaktır. İşte TActionList bileşeni bu ve buna benzer işlemleri kodsuz yapabilen bir özelliğe sahiptir. Şimdi form üzerine ActionList1, Memo1, PopupMenu1, bileşenlerini alarak işe başlayalım. Ve Memo1 in Align özelliğini AlClient, PopupMenu özelliğini de PopupMenu1 yapalım. Şimdi ActionList1 bileşenine çift tıklayarak ActionList1 editörüne ulaşalım. Yada sağ tıklayarak çıkan menü seçeneklerinden Action List editörü tıklayalım. Bu her iki işlemden sonra karşımıza aşağıdaki pencere çıkacaktır. Karşımıza çıkan ActionList editörü sağ tıklanarak açılan menülerden New Standart Action seçeneği seçilir. Bu işlemden sonra karşımıza Standart Actions adını taşıyan aşağıdaki pencere çıkacaktır. Bu pencerede yer alan her bir seçenek herhangi bir program koduna gerek duyulmadan temsil ettiği görevi yerine getirir. Biz burada ilk olarak TEditCopy, TEditPaste ve TEditCut seçeneklerine tıklayarak ActionList editöre alalım: Buradaki seçenekleri istediğiniz gibi isimlendirebilirsiniz. Bunun için değiştirmek istediğiniz seçeneği seçin ve buna karşılık gelen Object Inspector penceresindeki Caption özelliğini kullanın: Şimdi form üzerindeki TPopupMenu seçeneğini tıklayarak karşımıza çıkacak olan menü tasarım penceresine ulaşalım: Burada yeni menüler oluşturmak yerine TActionList bileşenine ait Action bileşenlerini kullanacağız. Ve seçili menüye karşılık gelecek Object Inspector penceresindeki Action özelliğini kullanacağız: Bu işlem yapıldığında bir önceki adımda tasarladığımız action bileşenlerinin PopupMenu1 in bir elemanı olarak yer aldığını göreceğiz. Ve bunlara ait olan özelliklerin tamamı Popupmenu1 seçenekleri tarafından kullanılabilecektir. Şimdi F9 tuşu ile programımızı çalıştıralım ve farenin sağ tuşunu kullanalım. Karşımıza çıkan menülerin tamamının pasif durumda olduğunu görmekteyiz. Bir şeyler yazdıktan sonra onu seçtiğimizde(blokladığımızda) ilk iki seçeneğin aktif olduğunu görmekteyiz: Görüldüğü gibi TActionList bileşeni kullanıldığında birçok işlem otomatik olarak ve yerine göre aktif ya da pasif duruma gelmektedir. Şimdi aynı form üzerine 3 tane Button yerleştirelim. Buttonların Action özelliklerini sırasıyla Cut, Copy ve Paste Action seçeneklerini atayalım: Programımızı tekrar çalıştıralım ve menülerin yüklendiği aksiyonun buttonlar tarafından da yüklendiğini görelim: Burada önemli bir noktayi açığa kavuşturmanın zamanı geldi. Yukarıda verdiğimiz ve duruma göre hareket eden menüleri kullandığınızda temsil ettikleri işlemleri yapmadıkları ortaya çıkmaktadır. Bunun için ilgili olaylara program kodu yazmak gerekmektedir. Bunun için TActionList bileşenine ait Editöre ulaşalım. Buradaki seçeneklere ait olan OnExecute olaylarına gerekli kodu yazalım: TFrame (Şablon Çerçevesi) : Bileşen şablonlarını oluşturmak için kullanılır. Bu bileşeni kullanabilmek için öncelikle File - New - Frame seçenekleri ile projeye frame eklemek gerekir. Projeye frame eklendikten sonra üzerine istenilen bileşenler getirilerek tasarım yapılabilir. Çerçeve üzerinde tasarım yapıldıktan sonra yapılacak işlem ile ilgili program kodu yazılır: Form üzerine Standart bileşen grubunda yer alan Frames bileşeni çizildiğinde açılan pencereden hangi Frame elemanının form üzerinde çizileceği belirlenir. Çünkü projeye birden fazla Frames eklenebilir. Kutudan Frame1 seçildiğinde önceki adımlarda tasarlanan frame1 üzerindeki bileşenlerin form üzerinde yer aldığını göreceksiniz. Düğmeye ait kod penceresine bakıldığında ise şablonda yer alan kodun çalışması için gerekli satırın bulunduğunu göreceksiniz. q Frame üzerinde yapılan herhangi bir değişiklik, anında form üzerindeki frame'e yansıtılmaktadır. q Bir form üzerine birden fazla frame bileşeni almak mümkündür. TScrollBar (Kaydırma Çubuğu) : Yatay veya dikey olarak konumlandırılabilen kaydırma çubuklarının kullanım amacına göre işlevleri de değişir. Örneğin bir veritabanında kayıtlar arasında ileri ve geri gitmek için kullanılabileceği gibi bir metinde veya resimde de kaydırma için kullanılabilir. Properties: Ø Kind : · Kind özelliği kaydırma çubuklarının tipini belirler. Şu iki değerden birini alır: sbVertical Dikey kaydırma çubuğu. SbHorizontal Yatay kaydırma çubuğu. Ø Min, Max : · Min ve Max özellikleri kaydırma çubuklarının alabileceği minimum ve maximum değerleri belirler. Ø Position : Kaydırma çubuğunun temsil ettiği değeri gösterir, bu değer Max ile Min arasında bir sayıdır. Ve kaydırma çubuğu üzerinde değişik şekillerde değiştirilebilir. q Kaydırma çubuğunun uçlarındaki iki ok ile azaltılıp çoğaltılabilir. Bu olay SmallChange olarak adlandırılır. q Direk kaydırma çubuğu üzerine mouse ile tıklanarak değer artırılıp azaltılabilir. Bu olay LargeChange olarak adlanrılır. q Kaydırma çubuğu üzerindeki hareket eden kutucuk mouse ile istenen konuma getirilerek değer azaltılıp çoğaltılabilir. Bu olay da ScrollChange olarak adlandırılabilir. Ø LargeChange : Kaydırma çubuğu üzerine tıklanması durumunda Scroll.Position'un ne kadarlık bir değişime tabi tutulacağını belirler. Ø SmallChange : Kaydırma çubuğunun iki kenarındaki oklarla Scroll.Position'nun ne kadarlık bir değişime tabi tutulacağını belirler. Methods Ø SetParams(Apositions,Amin,AMax): Max, Min, Position özelliklerinin üçünü birden değiştirmek için bu yöntem kullanılabilir. ScrollBar1.Max := 100; ScrollBar1.Min := 50; ScrollBar1.Position := 55; Satırları yerine SetParams metodu ile her üç işlem tek satırda yapılabilir. ScrollBar1.SetParams(55,50,100); Events Ø OnScroll(Sender:TObject; ScrollCode:TScrollCode; Var ScrollPos:Integer): Kaydırma işlemi gerçekleştiğinde bu olay meydana gelir.(Kaydırma işleminde Change olayıda meydana gelir, Ancak Scroll olayı kaydırma hakkında daha detaylı bilgi verir.) ScrollCode: Bu parametre kullanıcının kaydırma çubuğu üzerinde nasıl bir işlem yapmaya çalıştığını verir. Alabileceği değerler ve anlamları şöyledir: · ScLineUp Kaydırma çubuğunun sol / üst ucundaki ok tıklandı(Yukarı tuşu da aynı işi yapar.) · ScLineDown Kaydırma çubuğunun sağ / alt ucundaki ok tıklandı(Aşağı tuşuda aynı işi yapar.) · ScPageUp Kaydırma çubuğundaki kutucuğun sol / üst kısmında bir yer tıklandı(PageUp tuşuda ayni işi yapar.) · ScPageDown Kaydırma çubuğundaki kutucuğun sağ / alt kısmında bir yer tıklandı(PageDown tuşuda ayni işi yapar.) · ScPosition Kullanıcı kutucuğu taşıyarak değişimi gerçekleştirdi. · ScTrack Kullanıcı kutucuğu taşıyor. · ScEndScroll Kullanıcı kaydırma işlemini bitirdi. · ScTop Kullanıcı kutucuğu en üste / sola taşıdı. · ScBottom Kullanıcı kutucuğu en alta / sağa taşıdı. ScrollPos: Kaydırma çubuğunun şu andaki konumunu verir. Var olarak tanımlandığı için bu parametreye atanacak değer. Position'un değişmesine neden olur. Örnek: Örnek olarak kullanıcının kırmızı, yeşil ve mavi renklerin karışımından oluşan 16milyon renkten birini seçme imkanı verecek bir program yazalim. Önce RGB renkler(Red-Green-Blue) nasıl temsil edilir onu görelim. RGB 12basamakli bir Hexadesimal bir sayı ile temsil edilir. Bu 12 basamaklı yani 3bytelık sayının her 1byte'ı bir rengi temsil eder. Bu Hexadesimal sayının dijitleri şöyledir. MMYYKK, örneğin en koyu kırmızı 0000FF, en koyu mavi FF0000 ve en koyu yeşil de 00FF00 ile temsil edilir. Herbir renk iki dijitle ifade edildiği için 256 değişik ton oluşturulabilir. Bu üç rengin karışımı da 256*256*256 = 16.777.216 değişik renk elde edilir. Bu renkler değişik tonlarda kullanılarak da değişik renkler elde edilebilir. Örneğin beyaz rengi elde etmek için her üç renk en koyu oranda karıştırılır. Yani FFFFFF verilir. Siyahı elde etmek içinse 000000 kullanılır. Bu üç rengi temsil etmek için 0-255 arası değer alabilen üç tane ScrollBar yerleştirelim bunların üçünün de OnScroll olayına ScrollBar1 in , OnScroll olayını vererek her üçü için de aynı kodun çalışmasını Object-Inspector-Events tabıyla sağlayalım. Örneğimiz için aşağıdaki formu bu şartlarda oluşturun. Memo1'in rengini bu scrollbarlarla değiştireceğiz. TSpeedButton : TspeedButton kontrolü tek başına kullanıldığı zaman TButton kontrolünden farklı bir durum arz etmez. Bu kontrol RadioButton düğmeleri gibidir. Gruptaki bir düğme basili iken ikinci bir düğmeye basıldığında basılı olan düğme kendiliğinden kalkar son basılan düğme basılı durumuna geçer. Yani bir grupta ancak bir düğme basılı olabilir. Diğer komut düğmelerinden farkli olarak basılan düğme basılı olarak kalır. Bu düğmeleri gruplamak için GroupBox kontrolleri değil bu kontrollerin GroupIndex özellikleri kullanılır. GroupIndex özellikleri ayni olan kontroller birlikte hareket eder. Ayrıca BitBlt düğmesinde olduğu gibi bu düğmeye de resim verilebilir. Bu tip düğmeleri birçok popüler windows programında görebilirsiniz. ToolBar'lar üzerinde bulunan düğmeler bu tipten düğmelerdir. Properties Ø GroupIndex Bu kontrolün diğer bir özelliği de grup halinde çalıştırılabilmesiydi. GorupIndex özelliği aynı değerde olan düğmeler birlikte hareket eder. Yani bu düğmelerde ancak biri basılı kalabilir. Gruptaki bir düğmeye basıldığında gruptaki basılı olan diğer düğme kendiliğinden kalkar. Bu düğmeleri birçok programda görebilirsiniz. Örneğin kelime işlemcilerde sola, sağa, ortaya ve iki yana yasla düğmelerinden birini seçtiğimizde diğerleri bundan etkilenir. Bu özelliğin etkisini görmek için form üzerine beş tane SpeedButton yerleştirin ve düğmelerin basılı olup olmadıklarını daha rahat görebilmek için Glyph özelliklerine bir resim atayın ve ilk iki düğmenin GroupIndex özelliklerini 1, diğer üç düğmeninkini de 2 yapın ve programı calıştırın. Örneğin bir yazının kalın, eğik, altçizgi, sola, sağa ve ortaya özelliklerini temsil edecek 6 tane SpeedButton kontrolümüz olsun. Yazının kalın, eğik ve altçizgi özellikleri birbirinden bağımsız özellikler oldukları yani bir özellik diğerini etkilemediği için GroupIndex leri birbirinden farklı olmalıdır(1, 2, 3, gibi). Sola, sağa ve ortaya özellikleri ise ayni anda bulunamaz. Bunlardan biri seçildiğinde diğerinin seçilmişliğinin kalması gerekeceği için bu üçünün GroupIndex özellikleri ayni ve diğerlerinden farklı olmalıdır(4, 4, 4, gibi). Ø AllowAllUp True ise gruplandırılmış düğmelerin hiçbiri basılı konumda bulunmayabilir. Basılı düğme üzerine basılarak düğme kaldırılabilir. False ise gruptaki düğmelerden biri mutlaka basılıdır. Basılı bir düğmeyi kaldırabilmek için gruptaki diğer düğmeye basmak gerekecektir. Eğer grupladığınız düğmelerin temsil ettikleri değerlerden birinin mutlaka aktif olması gerekiyorsa bu özelliğin False yapın. Örneğin bir kelime işlemcide; Yazılı kısım sağa, sola, ortaya veya iki yana konumlarından mutlaka birinde bulunmasi gerekir. Yani AllowAllUp özellikleri False olmalidir. Ø Down Düğmenin basılı olup olmadığı bu özellikle öğrenilir. Ayrıca AllowAllUp özellikleri False olan düğmelerin bulunduğu grupta düğmelerden birinin mutlaka basılı olması gerektiği için başlangıçta hangi düğmenin basılı olması isteniyorsa o düğmenin Down özelliği True yapılır. Ø Flat True ve False değerlerinden birini alan bu özellik düğmenin calişma zamanındaki görünüşünü belirler. True olduğu zaman düğme gözükmez. Farenin düğme üzerine gelmesi ile ortaya çıkar. Örnek : Örnek olarak basit bir kelime işlemci programı yazalım. q Örneğimizde Toolbar olarak kullanılmak için form üzerine Align özelliği alTop olan bir Panel yerleştirin. q Ve bu Panel içine yan yana altı tane SpeedButton yerleştirin. Bunları yazının Kalın, Eğik, Altçizgi, Sola, Sağa ve Ortaya özellikleri için kullanacağız. q Birinci, ikinci ve üçüncü düğmelerin GroupIndex özelliklerini sırası ile 1, 2 ve 3 yapın diğer üç düğmenin GrouptIndex ini ise 4 yapın. q İlk üç düğmenin AllowAllUp özelliklerini True yapın. q Font ismi ve büyüklüğünü seçmek için de iki tane ComboBox kontrolünü yine panel içine yerleştirin. q Yaziyi yazabilmek için de bir Memo kontrolü yerleştirin ve formu kaplaması içinde Align özelliğini alClient yapın. q Aşağıdaki resimleri bulabiliyorsanız bu resimleri düğmelere yükleyerek daha güzel bir görüntü oluşturmasını sağlayın, bulamıyorsanız da Caption özelliklerini uygun açıklamaları yazarak formu yukarıdaki şartlarda hazırlayın. TStringGrid (Izgara Kontrol Elemanı) : Satır ve sütunlardan oluşan tablo türü bilgileri oluşturmak için kullanılan bir kontroldür. Izgara kontrol elemanı satır ve sütunlardan meydana gelmekte, her bir satır ve sütunun kesişimi bir hücreyi meydana getirmektedir. Hücrelerin adreslerini satır ve sütun başlıkları belirlemektedir. Kullanıcı programlama metodları ile istenilen hücrelere metin veya resim yerlestirebilir. Properties Ø ColCount, RowCount Bu özellikler grid de bulunması gereken satır ve sütun sayılarını belirtirler. Ø DefaultRowHeight, DefaultColWidth Hücrelerin varsayılan yüksekliğini ve genişliğini belirler. FixedCols := 0 DefaultRowHeight := 15 DefaultColWitdh := 45 ColCount := 6 RowCount := 10 Ø FixedCols,FixedRows Tablo üzerinde kullanıcıların erişemediği ve sütun ve satırların başlığı olarak kullanılan sütun ve satır sayısını belirler. Normalde her ikisininde değeri bir dir. Bu tablo üzerinde gri renkli gördüğümüz kısımdır. Bu sayıyı artırabilir veya sıfır yaparak kaldırabilirsiniz. FixedRows := 2 ve FixedCols := 3 olan grid. Fixed olarak belirlenen hücreler ekranda her zaman görülürler. Yani bir satır ve sütun başlığı gibidirler. Ø Options Gridin özelliklerini belirler. Şu değerleri alabilir. · goFixedHorzLine true ise Fixed satırlardaki satır arası çizgileri çizilir. · goFixedVertLine true ise Fixed sütunlardaki sütunlar arasındaki çizgileri çizilir. · goHorzLine true ise normal satırlardaki satır arası çizgileri çizilir. · goVertLine true ise normal sütunlardaki sütunlar arası çizgileri çizilir. · goRangeSelect true ise kullanıcı birçok hücreyi seçebilir. GoEditing özelliği true ise bu özellik true da olsa false da olsa kullanıcı birçok hücreyi seçemez. · goDrawFocusSelected true ise seçili olan hücrelerdeki ilk hücre siyahlaştırılır, false ise siyahlaştırılamaz. Sadece görsel bir etkisi vardır. · goRowSizing true ise kullanıcı satır yüksekliklerini fare ile değiştirebilir.(Fixed kısmındaki bir satır çizgisi üzerinde durunca fare değiştirme moduna geçer. Bu anda basılarak aşağıya veya yukarıya çekilerek büyültülüp küçültülebilir.) · goColSizing true ise kullanıcı sütun genişliğini fare ile değiştirebilir. · goRowMoving true ise kullanıcı fare ile taşıyarak satırların yerini değiştirebilir.(Fixed kısımdaki bir satır tutulup aşağıya veya yukarıya taşınır.) · goColMoving true ise kullanıcı fare ile taşıyarak sütunların yerini değiştirebilir. · goEditing true ise kullanıcı hücre içeriklerini değiştirebilir. · goAlwaysShowEditor goEditing özelliği verilmişse kullanıcı hücreleri değiştirebilmekteydi. Bu durumda goAlwayShowEditor özelliği false ise kullanıcı hücreyi seçip bir tuşa bastıktan sonra edit moduna geçer, true yapılırsa direk edit moduna geçer. · goTabs tab tuşunun kontroller arasında geçiş yapmak için kullanıldığını biliyorsunuz. Bu özelliğe true verilirse tab tuşu bir sonraki kontrole geçmez, bunun yerine grid içinde bir sonraki hücreye geçer. · goRowSelect true ise kullanıcı tek bir hücreyi değil bir satırın tamamını seçebilir. Ø Cells[Sütun,Satır] Satır ve Sütun parametreleri ile verilen hücrenin içeriğini öğrenmeye ve değiştirmeye yarar. İlk satırın ve sütunun numarası sıfırdır. Ø ColWidths[SütunNo], RowHeights[SatırNo] SütunNo ve SatırNo ile belirlenen satır ve sütunların boyutları bu özelliklerle öğrenilip değiştirilebilir. Options özelliğine goColSizing ve goRowSizing değerleri verilmişse bu boyutları kullanıcı da değiştirebilir. Örnek: Örnek olarak kullanıcının ders programını girebileceği bir program yazalım. Formunuzun üzerine bir StringGrid kontrolü koyun ve aşağıdaki kodu yazın. Ø GridLineWidth Hücreler arasındaki çizgilerin kalınlığını belirler. Default olarak 1 pixeldir. Ø Cols[SütunNo],Rows[SatırNo] Bu iki özellikte TStrings tipinden tanımlanmıştır. Tstrings üzerinde uygulanabilecek bütün işlemler bu özellik içinde uygulanabilir(Memo kontrolünün Lines, ListBox kontrolünün Items özelliği gibi). Örnegin üçüncü sütuna bir eleman eklemek için StringGrid1.Cols[2].Add('Merhaba'); veya üçüncü sütundaki elemanları bir dosyaya kaydetmek için StringGrid1.Cols[2].SaveToFile('\xx.xx'); dosyadan yüklemek için StringGrid1.Cols[2].LoadFromFile('\xx.xx'); şeklinde kullanılabilir. Ø Row, Col Aktif olan hücrenin satır ve sütun numaraları bu özelliklerle öğrenilip değiştirilebilir. Ø LeftCol, TopRow Gridin içindeki hücre sayısı fazla ise gride kaydırma çubukları ekleneceği için en üstte ve en solda bulunan normal satır ve sütunlarda ilk satır ve sütun olmayabilir. Bu özelliklerle o anda görülen en soldaki ve en üstteki fixed olmayan satır ve sütunun numarası öğrenilebilir. Ø FixedColor Fixed kısmının rengini belirler. Ø Selection Seçili olan hücreler bu özellikle öğrenilebilir veya seçilebilir.Bu özellik TGridRect tipinden tanımlanmıştır ve seçili olan ilk hücrenin ve son hücrenin satır ve sütun numarasını verir. Örneğin 3.satırdan 11.satıra ve 4.sütundan 6..sütuna kadar olan kısmı seçmek için: Var S : TGridRect; Begin S.Top := 2; S.Left := 3; S.Bottom := 10; S.Right := 5; StringGrid1.Selection := S; End; (Satır ve sütun numaraları sıfırdan başladığı için bir eksiğini verdik) Methods Ø CellRect(Sütun, Satır) Satır ve sütun parametreleri ile belirlenen hücrenin koordinatlarını Trect yapısına verir. Var R : TRect; Begin R := StringGrid1.CellRect(1,1); Label1.Caption := IntToStr(R.Left) + 'X' + IntToStr(R.Top) + 'üst köşe' Label2.Caption := IntToStr(R.Right) + 'X' + IntToStr(R.Bottom) + ' alt köşe' End; Ø MouseToCell(X, Y, Sütun, Satır) X, Y koordinatlarındaki hücrenin satır ve sütun numarasını verir. Daha çok mouse olaylarında farenin bulunduğu koordinatlardaki hücrenin satır ve sütun numarasını verir. O koordinatlarda bir hücre yoksa satır ve sütun parametreleri -1 değerini alır. Örneğin fare grid üzerinden geçerken üzerinden geçtiği hücrenin satır ve sütun numarasını bir label içerisinde gösterelim. Events Ø OnColumnMoved, OnRowMoved(Sender: TObject; FromIndex, ToIndex: Longint) Options özelliğine goRowMoving, goColMoving değerleri verilmişse, bir sütun veya satır taşındığında bu olay meydana gelir. FromIndex parametresi hangi sütun ve satırın taşındığını ToIndex ise nereye taşındığını belirtir. Ø OnSetEditText(Sender: TObject; ACol, ARow:LongInt; Const Value:String) Bir hücrenin içeriği değişirken bu olay meydana gelir. ACol ve ARow parametreleri değişen hücrenin satır ve sütun numarasını Value'de o anki içeriğini verir. Örnek: Örnek olarak bir işyerinde çalışan personellerin yevmiye ve çalıştıkları gün sayılarının girilerek maaşlarının hesaplanabileceği bir program yazalım. Örneğimiz için aşağıdaki formu oluşturun. Hücrelerde bir değişiklik olduğunda sonucun yeniden hesaplanabilmesi için kodu OnSetEditText olayına yazacağız. Ø OnGetEditText(Sender: TObject; ACol, ARow:LongInt; Var Value:String) OnSetEditText olayı değişirken meydana geliyordu. Bu olay ise hücrenin içeriği değiştirilmek istendiğinde, yani bir değişim yapılmadığında meydana gelir. Value parametresi ile hücre değiştirilmeden önce hücrenin içeriği belirlenebilir. Ø OnGetEditMask(Sender: TObject; ACol, ARow:LongInt; Var Value:String) Options özelliğini goEditing değeri verilmişse kullanıcı bir hücrenin içeriğini değiştirebilir. Bu olay kullanıcı bir hücreyi değiştirmek istediğinde o hücreye girilebilecek değerin formatını belirlemeye yarar. ACol ve ARow parametreleri hangi hücrenin değiştirilmek istendiğini verir. Bu hücreye kullanıcının girebileceği değerin formatı ise Value parametresi ile belirlenir. Örneğin birinci sütunun isim girişi için ikinci sütunu da telefon numarası girişi için kullanacağımızı düşünelim. Kullanıcı birinci sütuna giriş yaparken ismin ilk harfi büyütülsün. Son ismin ise tamamı büyütülsün. Ayrıca telefon numarasını ise (xxx) xxx-xx-xx şeklinde ve sadece rakam girebilsin. Value parametresine > karakteri bundan sonraki karakterlerin büyük harfe, < ise küçük harfe çevrilmesini sağlar. Value := '>a<aaaaa >aaaaaaaaaaa'; satırındaki >a işareti ile ilk harfin büyük, <aaaaa ile sonraki 5 harfin küçük, >aaaaaaaaaaa ile de boşluktan sonraki 11 harfin büyük olduğunu belirtiyoruz. İlk sütuna yazıyı nasıl girerseniz girin ismin ilk harfi büyük, diğerleri küçük ve soy ismin bütün harflerinin büyük yazıldığını göreceksiniz. İkinci sütun için yazdığımız '\(999\)999-99-99' değeri bütün karakterlerin rakam olacağını, \( ve \) karakterleri ile ilk üç rakamı parantez içine yazılacağını belirtiyoruz. Özel karakterleri yazdırmadan önce \ karakteri kullanılır. Ø OnTopLeftChanged(Sender: TObject) En üstteki veya en soldaki hücre değiştiğinde bu olay meydana gelir. Yani grid kaydırıldığında bu olay meydana gelecektir. Ø OnSelectCell(Sender: TObject; Col, Row:LongInt; Var CanSelect:Boolean) Bir hücre seçilmek istendiğinde bu olay meydana gelir. CanSelect parametresine False değeri atanırsa kullanıcı o hücreyi seçemez. If Col = 1 then Begin Label1.Caption := '1 nolu sütunu seçemezsiniz'; CanSelect := False; End; Örnek : (StringGrid içeriğini bir dosyaya kaydetme); StringGride ait Cols.SaveToFile veya Rows.SaveToFile metotları ile bir sütun yada satırdaki bilgileri dosyaya kaydede bilirsiniz. Ancak gridin tamamını kaydetmek istediğinizde her satır veya her sütunu ayrı ayrı dosyalara kaydetmek çok anlamsız olur. Bunun yerine bir text dosyasını hücrelerdeki bütün satırlar kaydedilebilir. Aşağıda verilen örnekte StringGrid bileşeninin içeriği bir dosyaya kaydedilmekte ve tekrar kullanıma açılmaktadır. TCoolBar : Bir çok modern program araç çubuklarını kullanıcının istediği gibi düzenlemesine imkan verir. Kullanıcı istediği araç çubuğunu alıp diğer çubukların istediği yerine bırakabilir işte bu işleme hiç koda gerek kalmadan yapacak kontrol CoolBar kontroldür. Bu işlemi sadece araç çubukları için değil hemen hemen bütün kontroller için yapabilmektedir. Bu kontrol üzerine yerleştirdiğiniz kontrollerin genişlikleri otomatik olarak CoolBar genişliğine getirilecek ve yerleştirdiğiniz diğer kontrollerde alt alta yerleştirilecektir. Bir çok kontrolü aynı satırda bulundurabilmek için onları gruplama yapabilen bir kontrol içine yerleştirmeniz gerekir. Properties Ø Align Bu özelliği kullanarak CoolBar kontrolünü formun istediğiniz bölgesine yerleştirebilirsiniz. CoolBar1.Align := alLeft; Ø AutoSize Bu özellik normalde False dur. Kullanıcı CoolBar içindeki kontrolleri istediği yere yerleştirebileceği için bu özelliği true yapmanız iyi olur. Ø Bands CoolBar elemanını meydana getirecek bandları belirler. Normal siz yeni kontroller ekledikçe otomatik olarak yeni bandlar oluşturulur. İsterseniz bu özelliği kullanarak da bandları oluşturabilirsiniz. Tasarım zamanında yeni band eklemek için eleman seçili iken sağ fare tuşu ile açılan menüden Bands Editör seçeneği kullanılır. Aşağıdaki pencerenin seçeneği ile yeni bandlar eklenir. Ø Bitmap TCoolBar elemanını arka planını süsleyecek olan resimler belirler. CoolBar elemanına resim eklemek için Bands editöre geçiş yapıldıktan sonra resim eklenecek olan band ismiaktif hale getirilir. Daha sonra Object Inspector penceresindeki Bitmap özelliği kullanılabilir. Ø FixedOrder Kullanıcının CoolBar içindeki bandların sıraya koyup koymayacağını belirler. Ø ShowText Text türündeki ifadelerin CoolBar üzerinde gözüküp gözükmeyeceğini belirler. Ø Vertical Bandın yatay yada dikey olarak ayarlanıp ayarlanmayacağını belirler. TpageScroller : İçine yerleştirilen kontrollere kaydırma desteği ekler. Additional tabındaki ScrollBox kontrolüne benzer bir kontroldür. ScrollBox kontrolü her iki yönde kaydırma çubuğu ekleyebilierken PageScroll kontrolü sadece dikey veya sadece yatay yönde kaydırma işlemini gerçekleştirebilir. PageScroll kontrolü forma yerleştirildikten sonra içine herhangi bir kontrol yerleştirilebilir. İçine yerleştirilen kontrol otomatik olarak PagaScroll kontrolünün içini kaplar. Bu İşlemden sonra hangi yönde kaydırma desteğinin ekleneceği PageScroll kontrolünün Orientation özelliği ile belirlenir. Bu işlemden sonra program çalıştırılır. PageScroll içine yerleştirilen kontrol PageScroll içine sığmıyorsa belirlenen yönde kaydırma desteği sağlanır. Örneğin, bir PageScroll yerleştirin ve Align özelliğini AlClient yapın ve içine bir memo kontrolü yerleştirerek programı çalıştırın. Programı çalıştırdıktan sonra formun boyutlarını küçültürseniz memo kontrolüne bir kaydırma düğmesi eklenir. Böylece memo kontrolünün ekranda görülmeyen kısmı bu düğme ile kaydırılarak gösterilebilir. PageScroll kontrolünün AutoScroll 'un özelliği true yapılırsa düğmeleri tıklamaya gerek kalmadan, fare üzerine geldiğinde kaydırmaya başlar. PageScroll kontrolünün margin özelliğne bir değer verilerek içindeki kontrolle arasında bir miktar mesafe bırakılabilir. PageScroll kontrolünün position özelliği ile kaydırma çubuğunun değeri öğrenilebilir ve değiştirilebilir. PageScroll kontrolü kaydırılırken OnScroll olayı meydana gelecektir. TscrollBox : ScrollBox, üzerindeki elemanları gösterebilmek için kendisine has kaydırma çubukları yardımı ile kayan bir bölge sağlar. Bu özellikle kaydırma çubukları olmayan ve form üzerinde fazla bir yer kaplaması istenmeyen kontroller için oldukça kullanışlıdır. Örneğin bir image bunun içine konarak resmin ekrandaki kısmına sığmayan kısımlarının kaydırma çubukları ile gösterilmesi sağlanabilir. Properties Ø HorScrollBar, VertScrollBar Bu özelliklerin aldığı değerler aracılığı ile ScrollBox elemanına kaydırılabilirlik özelliği sağlanır. Bunların şu alt özellikleri ile ayarlamalar yapılır. Ø Range Bu özellik yatay ve dikey kaydırma çubuklarının kayma aralıklarını belirler. Kayma işleminin olabilmesi için Range özelliği kontrolünün ClientWidth özelliğinden daha büyük bir değere sahip olması gerekir. Ø Margin Margin özelliği, kayma çubuğunun formun yada ScrollBox elemanının kenarlarına olan uzaklığını ifade eder. Varsayılan değeri 0 dir. Ø Position ScrollBar'ın gösterdiği değerdir. Bu değer azaltılıp artırılarak kaydırma işlemi programla da yapılabilir. Ø Increment Kaydırma çubukları kaydırılırken yapacağı artımını belirler. Ø Visible False yapılırsa kaydırma çubuğu görüntülenmez. ScrollBox elemanı içine iç alanından daha büyük bir kontrol yerleştirildiğinde otomatik olarak kaydırma çubukları eklenir. Methods Ø ScrollInView(KontrolAdı:TControl) Bu metod, KontrolAdi ile verilen kontrolü, tamamen görüntüleyene kadar ScrollBox elemanını kaydırır. ScrollBox1.ScrollInView(Button1); Button1, ScrollBox içinde ve ekranda o anda görülmüyorsa kaydırma çubuklarını hatraket ettirerek button1 in görülebilmesini sağlar. TSplitter : Bir kontrolün Align özelliğini değiştirerek formun herhangi bir kenarında sabit kalmasını sağlayabileceğimizi biliyorsunuz. Bu kontrolde align özelliği verilmiş kontrollerin herhangi bir koda gerelk kalmadan kullanıcı tarafından boyutlarının değiştirilebilmesine imkan verir. Align özelliği verilmiş bir kontrolün arkasına veya align özelliği olan iki kontrolün arasına bu kontrollerden yerleştirilirse arasına yerleştirildiği kontrollerin boyutlarının kullanıcı tarafından değiştirilebilmesini sağlar. Kontorlün etkisini görmek için bir örnek yapalım. q Formunuza bir memo yerleştirin ve Align özelliğini AlTop yapın q Fomunuza bir Splitter yerleştirin. Ve Align özelliğini AltTop yapın ve kullanıcının görememesi için yüksekliğini oldukça küçültün. q Formunuza bir memo daha yerleştirin ve Align özelliğini AlTop veya AlClient yapın. Şimdi iki memo kontrolümüz ve arada ince bir Spilitter imiz olacaktır. Programı çalıştırıp fareyi iki memo arasına getirin. Fareyi iki memo arasına getirdiğinizde fare kursörü yön işaretlerine dönüşecektir. Bu noktada fareyi basili tutup aşsğı ve yukarı çekerek memo kontrollerini boyutlarını değiştirebilirsiniz. Gördüğünüz gibi hiçbir kod olmadığı halde Spilitter kontrolü gerekli boyutlandırma işlemlerini yapmaktadır. İsterseniz Splitter kontrolünün MinSize özelliğine bir değer vererek kontrollerin o değerden daha küçük bir boyuta getirilememesini sağlayabilirsiniz. ValueListEditor : Grid ten türetilmiş bir kontroldür. İki sütün dan oluşan bu kontrol ile değer listeleri oluşturulabilir. Listedeki değerlerin atanması Strings.Add özelliği ile belirlenebilir. Strings.Add('A=B') şeklinde listeye eklenir. Buradaki A Key sütununa, B de Value sütununa eklenecektir. Örneğin aşağıdaki gibi bir liste oluşturabilmek için: Burada kullanıcı key sütununa eklenen bilgileri değiştiremez. Sadece Value sütununa eklenmiş bilgileri değiştirebilir. q Kullanıcının Value sütunundaki bilgileri değiştirememesini istiyorsanız Options özelliğindeki GuEditing özelliğini false yapabilirsiniz. q Kullanıcının Value sütunundaki bilgileri değiştirmemesini istiyorsanız options özelliğindeki GoEditing özelliğini False yapabilirsiniz. q Kullanıcının Key sütunundaki bilgileri de değiştirebilmesini istiyorsanız KeyOptions özelliği altındaki KeyEdit özelliğini True yapabilirsiniz. q Kullanıcının listeye yeni Key ve Value' ler ekleyebilmesini istiyorsanız KeyOptions özelliği altındaki KeyAdd özelliğini True yapabilirsiniz. Bu durumda kullanıcı son satırdayken aşağı ok tuşuna basarak yeni boş bir satır daha ekleyip Key ve Value' sini girebilir. q Kullanıcının listedeki satırları silebilmesini istiyorsanız KeyOptions özelliği altındaki KeyDelete özelliğini True yapabilirsiniz. Bu durumda kullanıcı bir satırdaki Key ve Value yi sildiğinde o satır otomatikman listeden çıkarılır. q Kullanıcın listede var olan Key den yeni bir tane daha oluşturmasını istemiyorsanız KeyOptions özelliği altındaki KeyUnique özelliğini True yapabilirsiniz. Bu durumda kullanıcı var olan bir Key den bir tane daha yazamaz. Örneğin adı isimli bir Key varsa bir tane daha Adı Key i oluşturamaz. q Sütun başlıklarındaki Key ve Value değerlerinin istemiyorsanız DisplayOptions özelliğindeki doColumnTitle özelliğini False yapabilirsiniz. q Eğer Key ve Value yerini sizin belirlediğiniz bir şeyin yazılmasını isterseniz TitleCaption özelliği ile bunu belirleyebilirsiniz. CustomizeDlg : Yukarıdaki örnekte ActionManager ile özelleştirilebilir menü ve araç çubuklarının nasıl yapılabileceğini gördük. O örneklerde özelleştirme işlemini bir Aciton olan tools menüsündeki Customize diyalogs action 'ı ile yapıyorduk. Ancak kullanıcı o menüyü menü çubuğundan veya araç çubuğundan kaldırmışsa veya programı yaparken o seçeneği eklememişsek kullanıcı özelleştirme yapamayacaktır. Özelleştirme penceresine direk erişim için CustomizeDlg kontrolü bulunmaktadır. Bu kontrolü form üzerine aldıktan sonra ActionManager özelliğinden ActionManager1 kontrolünü seçin. Bu işlemden sonra herhangi bir menüye veya komut düğmesine CustomizeDlg1.Show kodunu yazarsanız bu menünün veya düğmenin tıklanması ile özelleştirme penceresi açılacaktır. TUpDown : Daha çok bir değeri artırıp azaltmak için bir kontroldür. Properties Ø Min, Max Bu özellikler Updown elemanının artırma ve azaltma işlemlerinde verebileceği alt ve üst değerleri belirlerler. Ø Orientation Bu özellik UpDown elemanını yatay yada dikey olarak ayarlar. UdVertical Dikey UdHorizontal Yatay Ø Position Bu özellik UpDown elemanının değerini temsil eder. Bu değer Min ve Max değerleri arasında olabilir. Örnek : Aşağıdaki örnekte UpDown kontrolünün iki farklı kullanım alanı görülmektedir. UpDown1 kontrolü ile Edit1 kontrolünün font büyüklüğü değiştirilirken, UpDonw2 kontrolü ile de Edit2 kontrolünün içindeki sayı değiştirilmektedir. TComboBoxEx : ComboBox kontrolünün geliştirilmiş bir versiyonudur. Resimli elemanlar oluşturma gibi gelişmiş özelliklere sahip bir kontroldür. ComboBoxEx içinde kullanılacak resimler ImageList kontrolü ile belirlenir. ImageList kontrolünün formunuza alıp çift tıkladıktan sonra açılan aşağıdaki pencere ile kullanacağınız resimleri belirleyebilirsiniz. Bu işlem sonra ComboBoxEx kontrolünün Images özelliğine ImageList kontrolünün ismini verirseniz gerekli resimler buradan alınacaktır. Properties Ø ItemsEx Listeye resimli eleman ekleme işlemi itemsex özelliğinin AddItem metodu ile yapılır. Ekleyeceğiniz elemanlar resimli olmayacaksa standart ComboBox da olduğu gibi Items.Add metodu kullanabilirsiniz. ItemsEx.AddItem(Caption, ImageIndex, SelectedImageIndex, OverlayImageIndex, Indent : Integer; Data : Pointer) Buradaki Caption parametresi eklenecek elemanın metnidir. Bu elemana resim eklemek için ise diğer üç parametre kullanışlır. ImageIndex, SelectedImage, OverlayImageIndex, özellikleri ile kullanılacak resimlerin ImageList kontrolündeki index numarası verilir. SelectedImageIndex özelliği ile numarası verilen resmin o eleman listede seçili iken gösterilir. OverlayImageIndex ise eleman seçilmek için karartıldığında gösterilecektir bu iki özelliklerde de aynı resmi kullanmak istiyorsanız bu parametrelere de aynı değeri verebilirsiniz. ImageIndex parametresi ile belirlediğimiz resim üç durum içinde kullanılacaktır. Indent parametresi ile listedeki elemanları hiyerarşik bir yapıya sokabilirsiniz. Indent özelliğine vereceğiniz sayı ile bir elemanın başka bir elemanın alt elemanı gibi gözükmesini sağlayabilirsin. Data parametresi elemanları sıralamakta Caption yerine başka bir kriter alınacaksa kullanılır. Örnek olarak aşağıdaki listeyi oluşturalım bu örnek ile bölümler ve o bölümde okutulan dersler listelenmiştir. Bölümlerin dersleri bölümün alt elemanı gibi eklenmiştir. Bu örnekte kullanılacak üç farklı resmi belirlemek için bir ImageList kontrolünü forma yerleştirin ve çift tıklayarak açılan pencereden resimleri belirleyin . Bilgisayar bölümü için sıfır numaralı resim, muhasebe bölümü için 1 numaralı resim ve dersler içinde 2 numaralı resmi kullanacağız. Bu resimleri ComboBoxEx içinde kullanabilmemiz için kontrolünün Image özelliğinden ImageList1 i seçin. Şimdi listedeki ilk elemanı ekleyelim. ComboBoxEx1.ItemsEx.AddItem('Bilgisayar Programcılığı',0,0,0,0,Nil); İkinci parametrede kullanılan sıfır değeri bu elemana ait resmin ImageList içerisindeki 0 numaralı resim olduğunu belirtmektedir. Diğer iki tane 0 parametresi resmin seçili ve Overlay durumları içinde aynı resmi kullanacağını belirtmektedir. 5. parametredeki 0 değeri bu elemanın Indent seviyesinin 0 olduğunu yani ana sevide olduğunu göstermektedir. Şimdi buna ait üç dersi ekleyelim. ComboBoxEx1.ItemsEx.AddItem('Visual Basic',2,2,2,1,Nil); ComboBoxEx1.ItemsEx.AddItem('Delphi',2,2,2,1,Nil); ComboBoxEx1.ItemsEx.AddItem('Veri Tabanları',2,2,2,1,Nil); Her üç komutta da 5. parametreye 1 verilmiştir. Bir önceki elemanın Indent parametresi 0 dı. Bunlara 1 verildiği için bu elemanlar öncekinin alt elemanıymış gibi gösterilecektir. Ayrıca dersler için kullanılacak ImageListteki 2 nolu resim de 2. parametrede belirtilmiştir. Muhasebe bölümünü ve o bölüme ait dersleri de aynı yöntemle ekleyelim. ComboBoxEx1.ItemsEx.AddItem('Muhasebe',1,1,1,0,Nil); ComboBoxEx1.ItemsEx.AddItem('Genel Muhasebe',2,2,2,1,Nil); ComboBoxEx1.ItemsEx.AddItem('vergi Hukuku',2,2,2,1,Nil); ComboBoxEx1.ItemsEx.AddItem('Banka Muhasebe',2,2,2,1,Nil); Listeden bir eleman seçilmesi durumunda standart ComboBox da olduğu gibi ItemIndex parametresi ile seçili elemanın numarasını öğrenebilirsiniz. procedure TForm1.ComboBoxEx1Click(Sender: TObject); Var Ind : Integer; begin Ind := ComboBoxEx1.ItemIndex; Caption := 'Sçtiğiniz elemanın Numarası: '+IntToStr(Ind) + 'İçeriği: ' + ComboBoxEx1.Items[Ind]; end; Kullanıcının belirli hangi Indent seviyesindeki elemanı seçtiğini öğrenmek için ItemsEx.ComboItems[Ind].Indent özelliğinden faydalanabilirsiniz. Yukarıdaki örneğimizde bölümlerin Indenti 0, derslerinki -1 di kullanıcıdan ders seçmesini beklerken bir bölüm seçmişse uyarmak için aşağıdaki gibi bir kod yazabiliriz. TCheckListBox : Listbox elemanına benzer özellikler taşımakla beraber her bir eleman için işaretlenebilir bir Check işaret kutusu görüntüler. Listedeki her bir eleman için daha detaylı işlem yapmayı sağlayan oldukça faydalı bir kontrol elemanıdır. Bu listenin normal liste kutusundan hiçbir farkı yoktur. Listeye eleman ekleme ve silme normal liste kutusunda olduğu gibidir. Listede işaretlenmiş elemanlar için Checked[Index] özelliği kullanılır. Properties Ø Checked[Index] True ve False değerlerinden birini alan bu özellik liste içindeki sıra numarası verilen elemanın işaretli olup olmadığını belirler If CheckListBox1.Checked[0] then // eğer listenin ilk elemanı işaretli ise ShowMessage('eleman işaretli'); Ø State[Index] Liste içindeki elemanların durumlarını belirler. Bununla listede hangi elemanların seçili olup olmadığı öğrenilebilir. Ø Selected[Index] Listedeki bir verinin seçili olup olmadığını belirleyen bir özelliktir. If CheckListBox1.Selected[1] then ShowMessage('ikinci eleman seçilidir'); TabControl : Bu eleman PageControl elemanı gibidir. Ancak ondan farklı olarak tablar gruplama yapmazlar bütün tablar ortak kontrolleri kullanır. Bu kontrole tasarım zamanında yeni tablar eklemek için Object Inspector penceresindeki Tabs özelliği çift tıklanarak açılan pencere kullanılır. Properties Ø MultiLine Bu özelliğin True olması halinde birden fazla satıra sahip tab oluşturmak mümkün olmaktadır. Ø TabHeight Bir tab ın pixel olarak yüksekliğini belirler. Ø TabIndex Seçili olan Tab ın sıra numarasını belirler. İlk tabın sıra numarası 0 iken bir sonraki tabın sıra numarası 1 dir. Bu sıralama böylece devam eder. Ø Tabs TStrings nesnesinin içindeki tabın başlığında gözükecek olan ifadeyi belirler. Ø TabWidth Bir tabın pixel olarak genişliğini belirler. Events Ø OnChange(Sender : TObject) Bu olay yeni bir tanbın seçilmesi esnasında meydana gelir. Procedure TFrom1.TabContropol1Change(Sender:TObject;) Begin ShowMessage(IntToStr(TabControl1.TabIndex)+'nolu tab seçildi'); End; Ø OnChanging(Sender : Tobject; Var AllowChange : Boolean) Bu olay tab değiştirirken yeni taba geçmeden önce meydana gelir. Change olayı değiştikten sonra meydana gelir. OnChanging olayı henüz aktif tab kontrolü kaybetmediği için diğer taba geçilmeden yapılacak işlemler burada yapılır. Yeni taba geçtikten sonra yapılacak ilk işlemler ise Change olayında yapılır. Belirli şartlar gerçekleşmediyse örneğin yanlış bir değer girildiyse geçiş işlemini iptal etmek için AllowChange := False; yapılır. TPageControl : Birden fazla sayfaya sahip diyalog kutusu oluşturmak için düşünülmüş bir elemandır. Bu kontrolün en önemliği her sayfaya farklı kontrollerin yerleştirilebilmesi ve bunlar arasında kolayca geçiş yapılabilmesidir. Daha çok diyalog pencerelerinde kullanılan bu kontrol çok sayıda kontrolün form üzerine yerleştirilebilmesini sağlar. Windows altında bu kontrollerin kullanıldığı örnekleri bir çok programda görebilirsiniz. Örneğin Delphi nin aşağıdaki penceresi bu kontrolü kullanmaktadır. Tasarım zamanında elemana yeni bir sayfa ekleme işi sağ fare tuşu aracılığıyla olmaktadır. Eleman form üzerine alındıktan sonra, eleman seçili iken sağ fare tuşuna basıldığı zaman açılan menü de, NewPage, NextPage, PreviousPage menü seçenekleri gözükür burada NewPage ile PageControl elemanına istenilen sayıda tab eklenir. NextPage ile sonraki taba geçiş yapılır. PreviousPage ile de önceki taba geçiş yapılır. Eklediğiniz her sayfaya farklı kontroller yerleştirebilirsiniz. Properties Ø ActivePage PageControl üzerindeki aktif tabı öğrenmek ve değiştirmek için kullanılır. Ø MultiLine Bu özelliğin değeri false ise ve tablar kontrol içine sıgmıyorsa tab kontrolüne kaydırma çubuğu eklenir. Ve bütün tabların tek sıra halinde bulunmasını sağlar. Bu özelliğin değeri true ise ve tablar kontrol içine sığmıyorsa, tablar alt alta gelecek şekilde yerleştirilir. Aşağıdaki resimlerde MultiLine özelliği false ve true olan tab kontrolü görülmektedir. Ø TabPosition Bu özellik bileşenin sekme konumlarını belirler. Ve TpTop, TpBottom, TpLeft, TpRight değerlerinden birini alır. Events Ø OnChange(Sender:TObject) Bu olay yeni bir tabın seçilmesi esnasında meydana gelir. Ø OnChanging(Sender:TObject;Var AllowChange : Boolean) Bu olay tab değiştirirken yeni taba geçmeden önce meydana gelir. Change olayı değiştikten sonra meydana gelir. OnChanging olayı henüz aktif tab kontrolü kaybetmediği için diğer taba geçilmeden yapılacak işlemler burada yapılır. Yeni taba geçtikten sonra yapılacak işlemler ise change olayında yapılır. Belirli şartlar gerçekleşmedi ise de örneğin yanlış bir değer girilmişse geçiş işlemini iptal etmek için AllowChange := False; yapılır. TTRackBar : Bu kontrol elemanı değişik ayarlama işlemlerinde görsel arabirim olarak kullanılır. Properties Ø Orientation Bu özellik trackbar kontrolünün yatay yada dikey görünmesini sağlar. Ø Max, Min Bu özellikler trackbar ın alabileceği değerin alt ve üst sınırlarını belirler. Ø PageSize Bu özelliğe verilen sayısal ifade PageUp PageDown tuşlarının trackbar üzerinde adım sayısını belirler. Ø LineSize Bu özelliğe verilen sayısal ifade yön tuşlarının trackbar üzerindeki adım sayısını belirler. Ø Position Trackbar ın gösterdiği değeri bu özellik temsil eder. Ø CellStart Bu özellik seçili bölgenin başlangıcını belirler. Ø CellEnd Bu özellik seçili bölgenin sonunu belirler. Ø TickMarks Bu özellik trackbar üzerindeki çizgilerin konumlarını belirler. tmTopLeft Çizgiler sadece üste(yönü yatay ise) veya solda(yönü dikey ise) gösterilir. tmBottomRigth Çizgiler sadece alta(yöü yatay ise) veya sağda(yönü dikey ise) gösterilir. tmBoth Çizgiler her iki yönde de gösterilir. Ø TickStyle Bu özellik trackbar kontrolü üzerindeki çizgilerin durumunu belirler. tsAuto Kaç tane çizgi olacağı otomatik olarak belirtilir. tsNone Çizgiler çizilmez. Events Ø OnChange(Sender:TObject) Bu olay trackbar elemanın üzerindeki göstergenin değişmesi halinde meydana gelir. Örnek : Bir formun yüksekliğini ve genişliğini trackbar kontrolleri ile kontrol edelim. Bunun için formumuzun üzerine iki tane trackbar kontrolünü yerleştirin. Örnek TrackBar ile Büyütme ve Küçültme: Başka bir örnek olarak bir imaj içindeki resmi tackbar kontrolü ile büyültüp küçültelim. Örneğimiz için içinde resim olan iki imaj bir label ve bir trackbar yerleştirin. HotKey : Kullanıcıdan kısa yol tuşunu belirlemesini istediğiniz durumlarda bu kontrol kutusu büyük kolaylık sağlar. Basılan tuşu kutuda gösterir ayrıca basılan tuşların kodunu verir. Kullanıcı bir kutuya gelip bir tuşa bastığında bastığı tuşlar kutu içinde gösterilecektir. Properties Ø Modifiers Hotkey kontrolünün bu özelliği ile Shift Ctrl Alt tuşlarından hangisinin default tuş olacağı belirlenebilir. Normal de alt tuşu varsayılan tuştur. Yani kullanıcı sadece bir harfe basarsa örneğin P harfine Alt - P olarak kabul edilir. Bu özelliğe HkShift HkCtrl HkAlt değerleri verilerek bunlardan birinin veya bir kaçının aynı anda varsayılan tuş olması sağlanabilir. Ø InvalidKeys Bu özellikler Shift Ctrl ve Alt tuşlarından hangisinin birinin veya hangilerinin kabul edilemeyeceği belirlenebilir. Bu özelliğe verilebilinecek değerler aşağıdaki gibidir. HcNone, HcShift, HcAlt, HcCtrl, HcShiftCtrl, HcShiftAlt, HcCtrlAlt Bu özellik yukarıdaki özelliklerden biri veya birkaçı verildiğinde(Object Inspector) penceresinde true yapıldığında o tuşları kabul etmeyecektir.Örneğin HcShiftCtrl değerini true yaparsanız Shift ve Ctrl tuşu ile basılan kısa yol tuşları kabul edilmeyecektir. Ø HotKey Bu özellikte yazılması istenen kısa yol tuşu belirlenir. Bu özellikten dönen değer herhangi bir menünün shortcut özelliğine atanılarak belirlenen tuşun o menüye ait kısayol tuşu olması sağlanabilir. Örnek kısa yol ayarlama: Programımızda bulunan menülerinin kısa yol tuşlarının kullanıcının değiştirebilmesine imkan verecek bir program olsun. TDateTimePicker : Tarihi ve saatin bulunduğu hazır bir kutu sunar. Properties Ø Kind Kontrolün saatini ve tarihini göstereceğini belirler. Bu özelliğe dtkDate değeri verilirse tarihi dkTime verilirse saaati gösterir. Ø DateMode Eğer Kind özelliğine dtDate değeri verilerek kontrolün tarihi göstermesi sağlanmışsa bu özellikle kontrolün görünümü belirlenebilir. Bu özelliğe dmComboBox değeri verilirse kontrol bir ComboBox gibi görülür ve liste aşağı doğru açıldığında aylık takvim gösterilir. Bu özelliğe dmUpDown değeri verilirse kontrol bir UpDown olarak görülür ve tarih aşağı yukarı düğmeleri belirlenir. Ø DateTime Kutuda gösterilen saati ve tarihi öğrenmeye ve değiştirmeye yarar. Bu değerler delphi nin tarih formatındadır. Kullanmadan önce tarih ise DateToStr saat ise TimeToStr fonksiyonları ile string formata çevrilmesi gerekir. Ø DateFormat Tarihin gösterim biçimini belirler. DfShort değeri verilirse tarih kısa format ta yani GG/AA/YYYY formatında gösterilir. DfLong değeri verilirse tarih uzun formatta yani GG/AAAA/YYYY GGGG formatında gösterilir. 15 Mayıs 1998 Cuma Ø MinDate, MaxDate Kullanıcının girebileceği tarih aralığı bu iki özellikle belirlenebilir. Eğer kullanıcı belirlenen bu aralık dışında bir tarih seçerse bir hata mesajı ile bildirilir. Ø ShowChackBox, Checked İstenirse kontrolün önünde bir işaret kutusunun da bulunması sağlanabilir. ShowCheckBox özelliği true yapılırsa bu özellik etkili olur. Bu durumda kutunun işaretli olup olmadığı da checked özelliği ile öğrenilebilir. TMonthCalendar : Bu kontrolü kullanarak programlarınıza takvim ekleyebilirsiniz. Bu kontrol aracılığı ile bir veya daha fazla aydan oluşan takvim gösterilebileceği gibi tarih ayarlamasıda yaptırılabilir. Kullanıcı kontrol üzerindeki <> düğmelerini kullanarak sonraki ayları görebilir sonraki yıllara bu şekilde geçmek zor olduğu için yıl yazılı yeri tıkladığında bir spin açılacak ve istediği yıla gitmesi sağlanacaktır. Ay kısmı tıklandığında ise bir liste açılarak ayları gösterecektir. Böylece kullanıcı istediği tarihi kolayca seçebilir bütün bunlar içinde kod yazmak gerekmez. Birden fazla ayı aynı anda göstermek için AutoSize özelliğini false yaptıktan sonra kontrolü istediğiniz kadar büyültebilirsiniz. Kontrolün boyutlarını yeterince büyütebilirseniz aşağıdaki gibi 4x3 lük bir matris şeklinde bütün bir yıla ait takvimi gösterebilirsiniz. Properties Ø Date Bugünün tarihi bu özellikle öğrenilip değiştirilebilir. Ø MinDate, MaxDate İstenirse bu iki özellik kullanılarak kullanıcının seçebileceği tarihler sınırlandırılabilir. Normalde kullanıcı 1.1.1753 ile 31.12.9999 arasında bir tarih seçebilir. Ø WeekNumbers Bu özellik true yapılırsa haftanın numarası da başına yazılır. Ø FirstDayOfWeek Haftanın başlangıç gününün hangi gün olacağı bu özellik ile belirlenir. Bu özelliğe DoveLocaleDefault değeri verilirse haftanın başlangıç tarihi windows a tanıtılan gün olarak kabul edilir. Ø MultiSelectAndDate Normalde kullanıcı takvimden tek bir tarih seçebilir. Ancak belirli bir aralık seçebilmesini yani birden fazla tarih seçebilmesini istiyorsanız MultiSelect özelliğini true yapabilirsiniz. Bu durumda seçilen başlangıç tarihini Date özelliği ile seçilen sonuncu tarihide EndDate özelliği ile öğrenebilirsiniz. Events Ø OnGetMonthInfo(Sender : Tobject; Month : Cardinal; Var MonthBoldInfo : Cardinal) Yeni bir ay ekranda gösterildiğinde bu olay meydana gelir. Hangi ayın gösterildiği month özelliği ile öğrenilebilir. Eğer bir aydaki belli günler işaretlenecekse bu prosedüre de bulunan MonthBoldInfo özelliği kullanılabilir. ActionManager, ActionMainMenuBar, ActionToolBar : Microsoft ofis programları ile başlayan ve daha sonra birçok uygulamada gördüğümüz menü ve araç çubuklarının kullanıcı tarafından yeniden düzenleyebilmesi özelliği delphi 6 da eklenen bu üç kontrol ile oldukça kolaylaştırmıştır. Bu kontrolleri kullanarak hazırlayacağınız menü ve araç çubuklarını kullanıcı istediği gibi düzenleyebilir. Sadece kullandığı menü seçeneklerini veya araç çubuklarını aktif hale getirebilir veya yerlerini değiştirebilir. Menü ve araç çubuklarını kullanıcının istediği gibi yönetebilmesini sağlamak için yapmanız gereken şey menülerinizi ActionMenüBar ile araç çubuklarınızda ActionToolBar ile oluşturmaktadır. Bir örnekte kullanıcının özelleştirilebileceği menü seçeneklerinin nasıl hazırlanacağını görelim. Önce formunuza ActionManager yerleştirin. Ve sağ fare tuşu ile tıklayarak açılan menüden customize komutunu seçin aşagğıdaki pencere açılacaktır. Pencerede henüz tanımlanmamış hiçbir Action yok insert tuşuna basarak yeni bir Action tanımlayabilir veya Ctrl+Insert tuşuna basarak Action şlardan birini seçebilirsiniz. Ctrl + Insert tuşuna basarak hazır Action lşardan ekleyelim. Bu tuşlara bastığınızda aşağıda bir pencere açılarak hazır Actionların listesi gözükecektir. Kullanmak istediklerinizi tek tek seçip ekleyebileceğinizi gibi Shift tuşuna basılı tutup birden fazla Actionı tek seferde seçebilirsiniz. Listedeki son seçenek olan tools TcustomizeActionBars Actionı menü ve araça çubuklarını özelleştirebilecektir. O.k tuşuna bastığınızda seçtiğiniz Actionlar pencerenize eklenecektir. Menü de bulunmasını istediğiniz seçenekleri pencreden tutup sürükleyerek menü bar üzerine bırakın böylece sürüklediğiniz seçenek menü çubuğuna eklenecektir. Kullanacağınız menüleri belirledikten sonra menüleri kapatabilirsiniz son olarak kullanıcının yapacağı ayarların kaydedilebilmesi için ActionManager in FileName özelliğine bir dosya adı vermemiz gerekiyor. Kullanıcının menüler de veya araç çubuklarında yapacağı değişiklikler burada belirlediğiniz dosyaya kayıt edilecek ve bir sonraki çalışmada o ayarlar yüklenerek kullanıcının yaptığı değişiklikler etkinleştirilecektir. Programı9n etkisini görmek için programı çalıştırın ve toolCustomize menüsünü işaretleyin. Bu pencere açık olduğu sürece menüden seçip pencere üzerine bıraktığınız seçenekler menüden kaldırılacak pencefden menüye sürüklediğiniz seçeneklerde menü çubuğuna eklenecektir. Bu şekilde menülerde değişiklik yaptıktan sonra programınızı kapatın ve tekrar çalıştırın yaptığınız değişikliklerin kalıcı olduğunu göreceksiniz. Aynı şeyi araç çubuğu içinde yapabiliriz. Formunuza bir ActionToolBar yerleştirin ve ActionManager i çift tıklayarak ayar penceresini açın araç çubuğunda bulunmasını istediklerinizi pencereden sürükleyerek araç çubuğu üzerine bırakın. Araç çubuğunu oluşturduktan sonra programı çalıştırıp toolCustomize seçenekleri ile araç çubuğundaki düğmeleri kaldırabileceğinizi veya yenilerini ekleyebileceğinizi göreceksiniz. Araç çubuklarınızda simge bulundurmak isterseniz Win32 tabındaki imagelist kontrolünü kullanabilirsiniz. Bu kontrolün kullanımını win32 kontrolleri bölümünde bulabilirsiniz. Bu bölümde Action kontrolleri ile nasıl kullanacağımızı görelim. Win32 tabındaki imageList kontrolünü formunuza alın. Ve çift tıklayarak aşağıdaki pencereye ulaşın penceredeki add düğmesine basarak kullanacağınız simgeleri imagelist e ekleyin . araç çubuğunda kullanacağınız simgelere imagelist ile seçtikten sonra ActionManager in İimage özelliğinden İmagelist1 özelliğini seçin Hangi simgenin hangi Action komutuna karşılık kullanılacağını belirlemek için treeview penceresinden o Action ı seçin. Ve Object Inspector penceresindeki imageindex özelliği ile o resme karşılık gelen numarayı girin. Imagelist penceresindeki resimlere dikkat ederseniz her resme bir numara verilmektedir. İşte bu numaralar senin imageIndex özelliğinde kullandığımız numaralardır. Bu işlemlerden sonra araç çubuğumuzdaki düğmeler resim olacaktır.