FastGrid’in iç yapısı: Delphi ızgara bileşeninin View nesnesi, sütunlar ve olaylar

2026-10-23

FastGrid'in iç yapısı: View nesnesi, sütunlar ve Delphi grid bileşeninin olayları

Önceki makalede FastGrid'in temel yeteneklerine genel bir bakış atmıştık — FastGrid — FastReport VCL'nin bileşenidir, FastReport VCL. Şimdi bir seviye aşağı inip bileşenin iç yapısını inceleyelim: gridin ve onu oluşturan görsel öğelerin özelliklerini ele alalım, View nesnesine, sütunlara, bunların özelliklerine ve olaylarına bakalım, sonunda da verilerle çalışmanın ayarlanmasına kısaca değinelim.

Bu materyal, FastGrid'i FastReport VCL bünyesinde kullanan ya da onu öğrenmeyi planlayan Delphi ve C++ Builder geliştiricileri için faydalı olacaktır.

 


 

Grid — temel kontrol öğesi

Grid (TfrGrid) — işlevselliğini sağlayan tüm diğer nesnelerin üzerinde yer aldığı ana kontrol öğesidir. Bileşenin özellikleri ve olaylarının neredeyse tamamı standarttır ve VCL kontrol öğelerinin çoğunda bulunur. İstisna, gride özgü iki olaydır:

  • OnActiveViewChanging(Sender: TObject; AView: TfrGridCustomView; var AAllow: Boolean) — geçerli etkin View değiştirilmeden önce tetiklenir ve etkinleştirilmesini engellemeye olanak tanır.
  • OnActiveViewChanged(Sender: TObject) — etkin View değiştikten sonra tetiklenir.

Gride çeşitli View'ların eklenmesi ve kaldırılması bileşen menüsüyle yapılır. Grid oluşturulduğunda içine otomatik olarak bir View nesnesi eklenir.

 


 

Grid lejantı

Tasarım zamanında grid üzerinde ayrıca lejant bulunur — gridde yer alan nesnelerin küçük bir listesi. Lejantta yalnızca grid için değil, onun üzerinde yer alan bileşenler (sütunlar) için de menü mevcuttur. Ayrıca lejant, bu bileşenlerden herhangi birini hızla etkinleştirmeye olanak tanır. Lejanta gerek yoksa, gride ShowLegend := False özelliğini ayarlayarak kaldırabilirsiniz.

Grid lejantı

 


 

View nesnesi — veri görüntülemenin temeli

View nesnesi — gridin içeriğinin görüntülenmesinden sorumlu temel öğesidir. View nesnelerini lejant aracılığıyla yönetebilirsiniz. Her View'ın menüsünde şu seçenekler mevcuttur (Unbound View'da bunlardan bazıları bulunmaz):

  • Link To DataSource — View'ı mevcut DataSource'lardan birine bağlar. Bu işlemde bağlanan DataSource'daki tüm alanlar gridde oluşturulur, bulunmayanlar ise silinir (Unbound'da kullanılamaz).
  • Add Column — veriyle ilişkili olmayan yeni bir sütun ekler.
  • Add Missing Columns — bağlı DataSet'te bulunan ancak View'da olmayan sütunları ekler (Unbound'da kullanılamaz).
  • Delete All Columns — griddeki tüm sütunları siler.
  • Delete — View'ı siler.

 


 

Appearance özelliği: görünümün tek merkezden ayarlanması

Karmaşık kontrol öğeleriyle çalışırken sürekli olarak Color ve Font türünde çok sayıda özellikle, ayrıca ParentFont gibi özelliklerle karşılaşırsınız. FastGrid'de bu özelliklerin tümü Appearance özelliğinin içine gizlenmiştir. Bu özellik, iç içe geçmiş özelliklerden oluşur ve her biri gridin belli bir bölümünün görünümünden sorumludur.

Bu özelliklerin çalışmasını Appearance.Data örneği üzerinde inceleyelim — gridin veri alanının görünümünden sorumludur.

Genişletilmiş Appearance.Data özelliği

Ekran görüntüsünde görüldüğü gibi bu özellik, BackgroundColor, FontColor, FontName gibi iç içe özelliklerden ve aynı adlara sahip bayraklar kümesinden oluşan AssignedValues alt özelliğinden oluşur. Çalışma ilkesi şöyledir: AssignedValues aracılığıyla basit özellikler kümesinden hangisinin doğrudan uygulandığını, hangisinin üst nesneden devraldığını belirtiriz. Örneğin AssignedValues.FontColor özelliğini True yaptığınızda, gridin yazı tipi rengi değiştirildiğinde veri alanındaki yazı tipi rengi değişmez.

Appearance özellikleri öncelikle içinde bulundukları nesnelerin yazı tipini ve rengini ayarlamak için kullanılır. Başka bir deyişle, ParentColor, ParentFont ve benzer davranışa sahip diğer özelliklerin yerini alırlar, ancak daha fazla esneklik sunarlar: parametrelerin bir kısmı yerel olarak geçersiz kılınabilir, kalanı gridden devralınır.

Bunun nasıl çalıştığını FastGrid demo projesinde kontrol edelim. Delphi'de GridDemo.dpr projesini açalım — «Başlat» menüsünde «FastReport VCL Products» klasöründe, «2026.2.0-Sources-Demos» alt klasöründe yer alır (klasör adındaki sürüm numarası farklı olabilir; ayrıca IDE'de FastGrid'i içeren bir FastReport sürümünün kurulu olması gerekir). DataAwareDemo.pas modülünü açıp forma geçelim. Appearance özelliğinin bazı iç özelliklerini değiştirelim. Sonuç şöyle oldu:

Demo projede değiştirilen Appearance özellikleri

Şimdi doğrudan gride Font.Name := 'Courier New' özelliğini ayarlayalım. Bu yazı tipi görsellik açısından seçilmiştir. Gridin görünümü şöyle olacaktır:

Courier New yazı tipiyle grid

Yazı tipinin gridin tüm metin öğelerinde değiştiğini, ancak renk ve özniteliklerin eski hâlini koruduğunu görüyoruz. City sütununda ise yazı tipi değişmedi — onu doğrudan sütunda ayarladık. Bu yaklaşım, grid içeriğinin görüntülenmesini daha esnek şekilde yönetmeye olanak tanır. Belirtelim: varsayılan olarak tüm AssignedValues değerleri False'tur, yani parametrelerin neredeyse tümünün değerleri gridden alınır.

 


 

View özellikleri

View nesnesinin tüm özellikleri birkaç grupta toplanmıştır.

Active — geçerli View'ın etkinliğini belirlemeye olanak tanır.

Appearance — View nesnesinin görünümünü belirler. AssignedValues'da ilgili parametre False olarak ayarlandığında değer doğrudan gridden alınır:

  • Data — veri alanının görünümünü belirler.
  • Group — veri alanında yer alan grupların özelliklerini belirler.
  • GroupArea — gruplandırma alanının özelliklerini belirler.
  • Header — sütun başlıklarının özelliklerini belirler.

DataController — verilere erişimi tanımlayan özellik. Ayrıntılı olarak sonraki makalede ele alacağız.

OptionsBehavior — gridin davranışını belirler. İç özellikleri:

  • ConfirmDelete — silme işlemleri diyalog penceresinde onay gerektirir.
  • UseColumnCaptionsForGroupNames — bu ayar yapıldığında, gruplandırma sırasında veri alanındaki gruplar ayrıca sütun başlığıyla birlikte görüntülenir.
  • WantTabs — Tab tuşu, formun bir sonraki kontrol öğesine değil, gridin bir sonraki sütununa geçişi tetikler.

OptionsCustomization — kullanıcıya çeşitli işlemlere izin verir: verilerin filtrelenmesi, gruplandırılması ve sıralanması; sütunların gizlenmesi, taşınması ve boyutlarının değiştirilmesi ve diğerleri. Bu işlemler, her sütunda aynı adlı özellikle geçersiz kılınabilir.

OptionsData — kullanıcıya gridin verileri üzerinde işlemler yapma izni verir: ekleme, yeni kayıt ekleme, silme ve düzenleme.

OptionsDataNavigator — veri gezginini ayarlamaya olanak tanır: konumunu, gridin kenarlarına hizalanmasını, ayrıca düğmelerin boyutunu, görünümünü ve gösterilecek düğme kümesini.

OptionsView — gridin görünümünü ayarlamaya olanak tanır. Bazı alt özellikleri ayrıntılı inceleyelim:

  • EditButtonsVisibility — grid düzenleme sırasında düğmelerin gösterimini belirler:
    • ebvActiveCell — yalnızca geçerli düzenlenen hücrede;
    • ebvActiveRow — geçerli etkin satırın hücrelerinde;
    • ebvAlways — düğme bulunan tüm hücrelerde.
    • Varsayılan değer — ebvActiveCell.
  • GroupRowHeight, HeaderHeight, RowHeight — sırasıyla grup satırının, başlığın ve veri satırının yüksekliği. 0 (varsayılan) ayarlandığında yükseklik, seçili yazı tipinin yüksekliğine göre hesaplanır.
  • ShowColumnListButton — gizlenecek sütunların listesinin gösterilmesine izin verir; düğme gridin sol üst köşesinde bulunur. Varsayılan olarak gösterime izin verilir. Bu liste aracılığıyla kullanıcı çalışma zamanında gridin sütunlarının görünürlüğünü yönetebilir.

Sütun listesi düzenleyicisi

  • ShowDataNavigator — veri gezgininin gösterimi. Gezginin özellikleri OptionsDataNavigator içinde bulunur. Varsayılan olarak gezgin gösterilmez.
  • MergedGroupSeparator — grup birkaç alandan oluşturulduğunda kullanılan ayırıcı: bu durumda alan değerleri bu özelliğin değeriyle ayrılır.

Grup ayırıcı — tire

  • ShowGroupingArea — gruplandırma alanının gösterimine izin verir. Bu alana sütun başlıkları sürüklenerek veriler sütunların içeriğine göre gruplandırılabilir. Varsayılan olarak alan gösterilir. Belirtelim: gruplandırmanın yapılması için görünürlüğü zorunlu değildir — yalnızca programın kullanıcısının gruplandırma yapabilmesi için gereklidir.
  • ShowHeaders — sütun başlıklarının gösterimine izin verir (varsayılan olarak etkindir).
  • ShowIndicator — veri göstergesinin gösterimine izin verir (varsayılan olarak etkindir).
  • Visible — View'ın görünürlüğünü belirler.

 


 

View ile koddan çalışma

View nesneleriyle koddan da çalışılabilir. Yeni bir nesne şu yapıyla oluşturulabilir: frGrid.Views.CreateView(TfrGridTableView).

Silme işlemi için View'ı gridin Views listesinden kaldırmak (frGrid.Views.Remove(View)) ya da doğrudan View.Free çağırmak yeterlidir. Program aracılığıyla başka bir View'a geçmek gerekirse, ona View.Active := True ayarlamak yeterlidir.

View'ın geçerli etkin sütununu View.Controller.FocusedColumnIndex özelliğiyle belirleyebilirsiniz.

View nesnesinde programcının kullanabileceği çok sayıda olay bulunur: OnKeyDown gibi standart olayların yanı sıra gride özgü olaylar da vardır — amaçları genel olarak adlarından anlaşılır. View olay kümesinin (ve yalnızca onun değil) ilginç bir özelliği, bazı olaylarda var AAllow: Boolean parametresinin bulunmasıdır. Programcı, olay işleyicisinde bu parametreyi False yaptığında herhangi bir işlemi kolayca engelleyebilir. Örneğin bunu OnEditing işleyicisinde ayarlarsak, geçerli hücre için düzenleme moduna geçişi engellemiş oluruz.

 


 

View olayları

View olaylarından bazılarını ayrıntılı inceleyelim.

  • OnCellClick(Sender: TObject; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean) — hücreye fareyle tıklandığında tetiklenir. AHandled True yapıldığında sütunun işleyicisi çağrılmaz ve yerleşik düzenleyici açılmaz. Bu davranış, bazı koşullarda hücrelerin düzenlenmesini engellemek ya da hücre değerlerinin düzenlenmesini alternatif yollarla gerçekleştirmek için faydalı olabilir.
  • OnEditing(Sender: TObject; AItem: TfrGridViewItem; ARowIndex: Integer; var AAllow: Boolean) — hücre düzenleme moduna geçtiğinde tetiklenir. AAllow := False ayarlandığında hücrenin düzenlenmesi engellenir.
  • OnFilterPopupDropDown(Sender: TObject; AItem: TfrGridViewItem; APopupWindow: TfrGridItemFilterPopupWindow) — kullanıcı, sütun başlığındaki filtre simgesine bastığında tetiklenir. APopupWindow — kullanıcıya gösterilecek filtre bilgilerini içeren penceredir.
  • OnFilterPopupCloseUp(Sender: TObject; AItem: TfrGridViewItem) — kullanıcının filtre açılır listesiyle çalışması tamamlandığında tetiklenir.
  • OnGetCellBackgroundColor(Sender: TObject; AItem: TfrGridItem; ARowIndex: Integer; var AColor: TColor) — grid hücresinin arka plan rengini ayarlamaya olanak tanır.

Bu olayların ortak öğeleri vardır. Tüm işleyicilerde AItem parametresi tablo sütununa bir referans, ARowIndex ise gridle ilişkili DataController'daki veri satırının numarasıdır.

 


 

Sütunlar: özellikler ve olaylar

View, bir sütun kümesi içerir. Sütunlar hem IDE'nin form düzenleyicisinde hem de programın çalışma zamanında eklenebilir. Sütunun temel özelliklerini inceleyelim.

Appearance — sütunun görünümünü belirler:

  • Data — sütunun veri alanının görünümünü belirler. AssignedValues = False olduğunda değerler View'ın aynı adlı özelliğinden alınır.
  • Header — sütun başlığının görünümünü belirler. AssignedValues = False olduğunda değerler View'ın aynı adlı özelliğinden alınır.

Caption — sütun başlığı.

DataBinding — verinin sütuna bağlanmasını tanımlayan özellik. Ayrıntıları aşağıda ele alınacaktır.

GroupIndex, MergedGroupIndex — sütunun bulunduğu grubun indeksi ve sütunun bu gruptaki indeksi. Varsayılan değerleri -1'dir (sütun bir gruba dahil değildir). Bu özellikleri değiştirerek griddeki gruplandırmayı doğrudan yönetebilirsiniz — gruplar oluşturabilir ve silebilirsiniz. Gruplandırma alanının gösterimine izin verildiyse, kullanıcı çalışma zamanında grupları kendisi oluşturabilir ve silebilir: bunun için sütun başlığını gruplandırma alanına sürüklemek yeterlidir. Böylece sütun görünen listeden kaybolur, ancak griddeki veriler bu sütunun alanının değerine göre gruplandırılır. Belirtelim: grid bu sütuna göre her zaman sıralama yapacaktır.

Gruplandırma çok düzeyli olabilir — gerekli sütun başlıklarını sürüklemeniz yeterlidir. Ctrl tuşuna basılı tutarak sütun başlığını sürüklerseniz, birden çok sütuna dayalı bir grup oluşturabilirsiniz. Gruplandırmaya artık gerek yoksa, sütun başlığını gruplandırma alanından tekrar gride sürükleyin.

Index — sütunun ekrandaki görünür indeksi. Bu özelliği değiştirerek sütunun griddeki konumunu doğrudan değiştirebilirsiniz.

MinWidth — sütunun en küçük genişliği. Dikkat edin: varsayılan olarak bu değer 0 değil, 20'dir.

Options — bu özellik, kullanıcının sütunla tam olarak hangi işlemleri yapabileceğini ayarlamaya olanak tanır: düzenleme moduna geçirmek, sütun verilerine göre filtrelemek, gruplandırmak, sütunu gizlemek, boyutunu değiştirmek, taşımak, sütun verilerini değiştirmek, sıralamak ve ayrıca sütun listesinde göstermek. Görüldüğü gibi bu işlem listesi, View.OptionsCustomization'da bulunanla neredeyse aynıdır.

Properties — bu özellik aracılığıyla sütunda kullanılacak düzenleyiciyi belirleyebilirsiniz. Özellik ayarlanmazsa, grid sütunun veri türüne dayanarak bir düzenleyici seçmeye çalışır. Bu özelliğe açılır listeden bir değer atanırsa, daha sonra bu değer genişletilebilir ve seçilen düzenleyicinin özellikleri ayarlanabilir. Düzenleyiciler ayrı bir makalede ayrıntılı olarak ele alınacaktır. Şimdilik şunu belirtelim: düzenleyici yalnızca tek bir hücrenin değerinin düzenlenmesinden değil, tüm sütunun değerlerinin görüntülenmesinden de sorumludur. Düzenleyiciler ayrıca bağımsız bileşenler olarak da kullanılabilir. Düzenleyicinin özelliklerine erişim ancak düzenleyici açıkça belirtilmişse mümkündür: varsayılan düzenleyicilerde özelliklerin ayarlanma imkânı yoktur.

SortOrderIndex, SortOrder — bu özelliklerle gridin alanlarının sıralamasını belirleyebilirsiniz. SortOrderIndex alanı, sıralamada alanın önceliğinden sorumludur: önce SortOrderIndex = 0 olan alana göre sıralama yapılır; bu sütundaki değerler eşleşirse, SortOrderIndex = 1 olan sütuna göre sıralarız. SortOrderIndex = -1 ayarlanırsa, bu sütuna göre sıralama yapılmaz.

SortOrder özelliği sıralama düzenini belirler: soNone — sıralama yok, soAscending — artan sıralama, soDescending — azalan sıralama. Belirtelim: kullanıcı sütunların sıralamasını çalışma zamanında da ayarlayabilir; bunun için sütun başlığına sol fare tuşuyla tıklamak yeterlidir. Tekrar tıklandığında sıralama düzeni tersine döner. Sıralama, başlığına tıklanan sütuna göre yapılır. Sıralamayı iptal etmek için Ctrl tuşuna basılı tutarak sütun başlığına tıklamak yeterlidir. Tıklama sırasında Shift tuşuna basılı tutulursa, aynı anda birden çok sütuna göre sıralama yapılabilir.

 


 

Koddan sütun oluşturma

Koddan sütun oluşturmak için View.Columns.CreateColumn metodunu kullanabilirsiniz. Sütuna düzenleyici atamak için Column.PropertiesAlias özelliğine düzenleyicinin adını içeren bir dize atayabilir ya da Column.PropertiesClass özelliğine düzenleyicinin sınıf türünü belirleyebilirsiniz.

View'ın sütun listesini View.Columns.Clear metoduyla temizleyebilirsiniz. Ayrıca Columns.VisibleCount ve Columns.VisibleItems özellikleri de faydalı olabilir — bunlarla yalnızca görünür sütunlara erişilebilir; ayrıca bu listedeki sütunlar ekrandaki konumlarına göre sıralanır.

 



Sütun olayları

Veri sütununun olaylarını inceleyelim. Daha önce belirtildiği gibi, sütunun bazı olayları View'ın olaylarına benzerdir.

  • OnCellClick(Sender: TObject; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean) — hücreye tıklandığında tetiklenir.
  • OnGetCellBackgroundColor(Sender: TObject; ARowIndex: Integer; var AColor: TColor) — hücrenin arka plan rengini ayarlamaya olanak tanır.
  • OnGetDisplayValue(Sender: TObject; ARowIndex: Integer; var AValue: Variant) — hücrede görüntülenecek değeri elde etmeye olanak tanır.
  • OnGetFilterDisplayText(Sender: TObject; const AValue: Variant; var AText: string) — filtre listesinde görüntülenecek değeri elde etmeye olanak tanır.
  • OnGetHeaderBackgroundColor(Sender: TObject; var AColor: TColor) — sütun başlığının arka plan rengini ayarlamaya olanak tanır.

 


 

Verilerle çalışmanın ayarlanması: DB ve Unbound modları

Makalenin sonunda gridin verilerle çalışmasının özellik düzeyinde nasıl ayarlandığına kısaca bakalım. Bildiğimiz gibi grid, verilerle iki modda çalışabilir: DB ve Unbound.

DB modu

DB modunda grid, standart TDataSource bileşenini kullanarak verilerle bağlantı kurar; örneğin standart TDBGrid bileşeninin yaptığı gibi. Object Inspector'da View.DataController := 'DB' ayarlandıktan sonra bu özellik genişletilerek istenen TDataSource belirtilebilir. DataSource belirlendikten sonra sütunlarda gezinilip her sütunun DataBinding.FieldName özelliğine istenen veri alanının adı yazılabilir. DataBinding.FieldType özelliği değiştirilemez — değeri DataSource'un ilişkili veri alanından alınır.

Unbound modu

Unbound modunda grid biraz farklı çalışır. View.DataController := 'Unbound' ayarlandıktan sonra grid, doğrudan kendi içinde depolanan verilerle çalışma moduna geçer. Veri kümesinin sütunlarını tanımlamak için önce bunları oluşturmak gerekir — örneğin lejanttaki View'ın açılır menüsünden — ardından sütun nesnelerine geçip her sütunun DataBinding.FieldName alanına veri alanının adını, DataBinding.FieldType alanına ise veri alanının türünü yazmak gerekir. Bundan sonra gridin iç deposunda üzerinde çalışılabilecek ilgili alan kümesi oluşturulur.

 


 

Sonuç

FastGrid'in iç yapısını inceledik: temel kontrol öğesi olarak gridin rolünü, View nesnesini ve özelliklerini, AssignedValues alt özelliğiyle Appearance mekanizmasını, ayarları ve olaylarıyla sütunları ve ayrıca verilerle çalışmanın iki modunu — DB ve Unbound. Bunlar, gridin görünümünü ve davranışını hem tasarım zamanında hem de koddan ayarlamak için yeterlidir.

Sırada son büyük konu var — verilerle çalışma: DataController, DataSource bağlama, kayıtların düzenlenmesi ve gezinme. Dizinin bir sonraki makalesinde tam olarak bu konuyu ayrıntılı inceleyeceğiz.

VCL FastReport Delphi FastGrid
26 Ekim 2026, Pazartesi

TfrImageComboBox: FastReport VCL’de resim ve metin başlıklarını içeren bir açılır liste

FastEditors VCL'den TfrImageComboBox: FastReport VCL için simgeler ve etiketler içeren bir açılır liste. Delphi'de özellikler, olaylar ve kullanım örnekleri.
26 Ekim 2026, Pazartesi

Delphi’de İlerleme Çubuğu: FastReport VCL’den TfrProgressBar ve TfrxProgressBar Bileşenleri

FastReport VCL'deki TfrProgressBar ve TfrxProgressBar bileşenlerini daha yakından inceleyelim: ilerleme ölçeğini, eşik değerlerini ve işaretçileri yapılandırma, verilere bağlama ve bir Delphi örneği.
21 Ekim 2026, Çarşamba

Delphi'de OLAP'ı nasıl yapılandırılır ve analitik görevleri çözmek için veri kesitleri nasıl kullanılır

Delphi'de BI analitiği oluşturuyoruz: Karmaşık SQL sorguları olmadan çok boyutlu raporlar ve veri analizi için FastGrid ve FastCube (OLAP) ayarlarını adım adım inceliyoruz.

© 1998-2026 Fast Reports Inc.