Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Özel bir düzenlenebilir CxGrid
#1
Merhaba,
Düzenlenebilir formlarda kullanacağım özel bir CxGrid yazıyorum. Çok fonksiyonlu bir yapım var hemen hemen bitirdim sayılır. Devexpress componentlerinden kalıtım alan yeni objeler oluşturmak baya meşakatli. Örneğin şu ana kadar yapacağım özelleştirmeler için 5 alt sınıf daha yazmak zorunda kaldım bunlar ;
TcxGridLevel,TcxGridRootLevel,TcxGridDBTableView,TcxGridTableViewInfo,TcxGridRowsViewInfo.

Sıkıntı yaşadığım 2 konu var bu konu başlıklarından sizlerden görüşlerinizi ve yardımlarınızı isteyeceğim.

1--) TableView için OnDrawColumCell'de propertye bağlı özelleştirmelerim ve renklendirmelerim var. Override olarak bu eventi almam ve datamodule üzerinde oluşturduğum TcxStyleRepository üzerindeki özel styleleri nasıl uygulayabilirim.

2--)  Custom bir Column yapısı kurmak istiyorum. Columnslarını nasıl özelleştirebilirim. Alt bir sınıf yazamadım columns için.
Yalnızım ama bir kente yürüyen ordu gibiyim, edebiyattan kaçınmalıyım..
Cevapla
#2
(28-03-2019, Saat: 22:57)narkotik Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Merhaba,
Düzenlenebilir formlarda kullanacağım özel bir CxGrid yazıyorum. Çok fonksiyonlu bir yapım var hemen hemen bitirdim sayılır. Devexpress componentlerinden kalıtım alan yeni objeler oluşturmak baya meşakatli. Örneğin şu ana kadar yapacağım özelleştirmeler için 5 alt sınıf daha yazmak zorunda kaldım bunlar ;
TcxGridLevel,TcxGridRootLevel,TcxGridDBTableView,TcxGridTableViewInfo,TcxGridRowsViewInfo.

Sıkıntı yaşadığım 2 konu var bu konu başlıklarından sizlerden görüşlerinizi ve yardımlarınızı isteyeceğim.

1--) TableView için OnDrawColumCell'de propertye bağlı özelleştirmelerim ve renklendirmelerim var. Override olarak bu eventi almam ve datamodule üzerinde oluşturduğum TcxStyleRepository üzerindeki özel styleleri nasıl uygulayabilirim.

2--)  Custom bir Column yapısı kurmak istiyorum. Columnslarını nasıl özelleştirebilirim. Alt bir sınıf yazamadım columns için.

Birinci maddede tam olarak ne yapmak istediğinizi anlayamadım. Data'nın alacağı bazı değerlere göre custom paint mi yapmak istiyorsunuz. O kısma bir açıklama getirirseniz yardımcı olmaya çalışırım yine. İkinci kısma gelince;

TcxGridDBColumn sınıfından türeyen bir alt sınıfınız olacak. Bu alt sınıfı; TcxGridDBTableView'den türeyen alt sınıfınızın içinde tanımlayacağınız GetItemClass'içinden döndürmelisiniz. Şöyleki:

   TcxGridDBTableViewSizinView = class(TcxGridDBTableView);

   ...


   function GetItemClass: TcxCustomGridTableItemClass; override;

   ...
   ...

function TcxGridDBTableViewSizinView.GetItemClass: TcxCustomGridTableItemClass;
begin
  Result := TcxGridDBColumnEx;
end;

Aynı zamanda design time esnasında kullanabilmek adına aşağıdaki kod bloklarına da ihtiyacınız olacak.

initialization
  System.Classes.RegisterClass(TcxGridDBColumnEx);
 GetRegisteredViews.Register(TcxGridDBTableViewSizinView, 'Narkotik Özel Grid');
  System.Classes.RegisterClass(TcxGridDBTableViewSizinView);

finalization
  GetRegisteredViews.Unregister(TcxGridDBTableViewSizinView);
 System.Classes.UnRegisterClass(TcxGridDBTableViewSizinView);
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#3
(29-03-2019, Saat: 12:06)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(28-03-2019, Saat: 22:57)narkotik Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Merhaba,
Düzenlenebilir formlarda kullanacağım özel bir CxGrid yazıyorum. Çok fonksiyonlu bir yapım var hemen hemen bitirdim sayılır. Devexpress componentlerinden kalıtım alan yeni objeler oluşturmak baya meşakatli. Örneğin şu ana kadar yapacağım özelleştirmeler için 5 alt sınıf daha yazmak zorunda kaldım bunlar ;
TcxGridLevel,TcxGridRootLevel,TcxGridDBTableView,TcxGridTableViewInfo,TcxGridRowsViewInfo.

Sıkıntı yaşadığım 2 konu var bu konu başlıklarından sizlerden görüşlerinizi ve yardımlarınızı isteyeceğim.

1--) TableView için OnDrawColumCell'de propertye bağlı özelleştirmelerim ve renklendirmelerim var. Override olarak bu eventi almam ve datamodule üzerinde oluşturduğum TcxStyleRepository üzerindeki özel styleleri nasıl uygulayabilirim.

2--)  Custom bir Column yapısı kurmak istiyorum. Columnslarını nasıl özelleştirebilirim. Alt bir sınıf yazamadım columns için.

Birinci maddede tam olarak ne yapmak istediğinizi anlayamadım. Data'nın alacağı bazı değerlere göre custom paint mi yapmak istiyorsunuz. O kısma bir açıklama getirirseniz yardımcı olmaya çalışırım yine. İkinci kısma gelince;

TcxGridDBColumn sınıfından türeyen bir alt sınıfınız olacak. Bu alt sınıfı; TcxGridDBTableView'den türeyen alt sınıfınızın içinde tanımlayacağınız GetItemClass'içinden döndürmelisiniz. Şöyleki:

   TcxGridDBTableViewSizinView = class(TcxGridDBTableView);

   ...


   function GetItemClass: TcxCustomGridTableItemClass; override;

   ...
   ...

function TcxGridDBTableViewSizinView.GetItemClass: TcxCustomGridTableItemClass;
begin
  Result := TcxGridDBColumnEx;
end;

Aynı zamanda design time esnasında kullanabilmek adına aşağıdaki kod bloklarına da ihtiyacınız olacak.

initialization
  System.Classes.RegisterClass(TcxGridDBColumnEx);
 GetRegisteredViews.Register(TcxGridDBTableViewSizinView, 'Narkotik Özel Grid');
  System.Classes.RegisterClass(TcxGridDBTableViewSizinView);

finalization
  GetRegisteredViews.Unregister(TcxGridDBTableViewSizinView);
 System.Classes.UnRegisterClass(TcxGridDBTableViewSizinView);
@Tuğrul HELVACI  hocam teşekkürler, column olayı tamamdır. GetItemClass ile almadığım için olmuyormuş. Sayenizde hallettik. 1.olayım şu şekilde OnDrawColumnCell eventine override bir event yazmam gerekli gridde. Bu override eventte ayrı bir Datamodule üzerinde stylle'rim var oradaki stilleri nesne özelliklerine şartlarına göre kullanacağım. Yani burada iki sorunum var 1 override olarak nasıl alırım, normal bir şekilde yazıyorum BaseClass'da bulamadığı hatasını alıyorum. 2. olarak datamodule üzerinde tanımladığım stili kullanmamda herhangi bir sorun olur mu. Çünkü gridin başka özeliklerinde bu datamodulü kullanığımda, componenti build ettiğimde zaman zaman ide göçüyor. Tekrardan ideyi açıp tekrar derleyince düzeliyordu böyle bir değişik olay işte.
Yalnızım ama bir kente yürüyen ordu gibiyim, edebiyattan kaçınmalıyım..
Cevapla
#4
(29-03-2019, Saat: 19:52)narkotik Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(29-03-2019, Saat: 12:06)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Birinci maddede tam olarak ne yapmak istediğinizi anlayamadım. Data'nın alacağı bazı değerlere göre custom paint mi yapmak istiyorsunuz. O kısma bir açıklama getirirseniz yardımcı olmaya çalışırım yine. İkinci kısma gelince;

TcxGridDBColumn sınıfından türeyen bir alt sınıfınız olacak. Bu alt sınıfı; TcxGridDBTableView'den türeyen alt sınıfınızın içinde tanımlayacağınız GetItemClass'içinden döndürmelisiniz. Şöyleki:

   TcxGridDBTableViewSizinView = class(TcxGridDBTableView);

   ...


   function GetItemClass: TcxCustomGridTableItemClass; override;

   ...
   ...

function TcxGridDBTableViewSizinView.GetItemClass: TcxCustomGridTableItemClass;
begin
  Result := TcxGridDBColumnEx;
end;

Aynı zamanda design time esnasında kullanabilmek adına aşağıdaki kod bloklarına da ihtiyacınız olacak.

initialization
  System.Classes.RegisterClass(TcxGridDBColumnEx);
 GetRegisteredViews.Register(TcxGridDBTableViewSizinView, 'Narkotik Özel Grid');
  System.Classes.RegisterClass(TcxGridDBTableViewSizinView);

finalization
  GetRegisteredViews.Unregister(TcxGridDBTableViewSizinView);
 System.Classes.UnRegisterClass(TcxGridDBTableViewSizinView);
@Tuğrul HELVACI  hocam teşekkürler, column olayı tamamdır. GetItemClass ile almadığım için olmuyormuş. Sayenizde hallettik. 1.olayım şu şekilde OnDrawColumnCell eventine override bir event yazmam gerekli gridde. Bu override eventte ayrı bir Datamodule üzerinde stylle'rim var oradaki stilleri nesne özelliklerine şartlarına göre kullanacağım. Yani burada iki sorunum var 1 override olarak nasıl alırım, normal bir şekilde yazıyorum BaseClass'da bulamadığı hatasını alıyorum. 2. olarak datamodule üzerinde tanımladığım stili kullanmamda herhangi bir sorun olur mu. Çünkü gridin başka özeliklerinde bu datamodulü kullanığımda, componenti build ettiğimde zaman zaman ide göçüyor. Tekrardan ideyi açıp tekrar derleyince düzeliyordu böyle bir değişik olay işte.

Herhangi bir harici component kullanmanızda elbette bir problem olmaz. Ancak bu durumda Notification metodunu ezmenizi öneririm. Yine de gridiniz kendi içinde bir adet TcxStyle kullansa daha iyi olabilir. Her türlü kontrolü elinizde bulundurmuş olursunuz. Stil kullanımının en kolay yolu bana göre; Styles.OnGetContentStyle olayını kullanmaktır. Eğer bu olay size yeterli olacak ise örnekler ile yardımcı olmaya devam edebilirim.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#5
(01-04-2019, Saat: 08:32)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(29-03-2019, Saat: 19:52)narkotik Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.@Tuğrul HELVACI  hocam teşekkürler, column olayı tamamdır. GetItemClass ile almadığım için olmuyormuş. Sayenizde hallettik. 1.olayım şu şekilde OnDrawColumnCell eventine override bir event yazmam gerekli gridde. Bu override eventte ayrı bir Datamodule üzerinde stylle'rim var oradaki stilleri nesne özelliklerine şartlarına göre kullanacağım. Yani burada iki sorunum var 1 override olarak nasıl alırım, normal bir şekilde yazıyorum BaseClass'da bulamadığı hatasını alıyorum. 2. olarak datamodule üzerinde tanımladığım stili kullanmamda herhangi bir sorun olur mu. Çünkü gridin başka özeliklerinde bu datamodulü kullanığımda, componenti build ettiğimde zaman zaman ide göçüyor. Tekrardan ideyi açıp tekrar derleyince düzeliyordu böyle bir değişik olay işte.

Herhangi bir harici component kullanmanızda elbette bir problem olmaz. Ancak bu durumda Notification metodunu ezmenizi öneririm. Yine de gridiniz kendi içinde bir adet TcxStyle kullansa daha iyi olabilir. Her türlü kontrolü elinizde bulundurmuş olursunuz. Stil kullanımının en kolay yolu bana göre; Styles.OnGetContentStyle olayını kullanmaktır. Eğer bu olay size yeterli olacak ise örnekler ile yardımcı olmaya devam edebilirim.

Tuğrul hocam senaryo şu şekilde;
Bir adet Datamodülüm var burada style'larım var. Şuan kendi cxgridimde bu datamodulü implement ederek, gridin constructorunda buradaki stylleri atayabiliyorum View'e bu stylelar çalışıyor. Benim istediğim ise aradan datamodülü çıkartarak direk sınıfa ait style'lar oluşturmak ve bunları constructorda kullanmak. Bunu niye istiyorum program genelinde grid aynı grid , görüntü aynı görüntü olsun ki son kullanıcı her ekrana girdiğinde farklı bir renk olmasın. Projedeki yazılımcılarda bu renk işleriyle uğraşmasın. Ama bunu datamodule olmadan gridin default styleleri olarak atamak istiyorum.
Yalnızım ama bir kente yürüyen ordu gibiyim, edebiyattan kaçınmalıyım..
Cevapla
#6
Şimdilik datamodule üzerinden stylelar kullanarak sorun çözülmüştür.
Yalnızım ama bir kente yürüyen ordu gibiyim, edebiyattan kaçınmalıyım..
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
Tongue CxGrid FilterRow Like narkotik 8 496 13-05-2019, Saat: 11:05
Son Yorum: faktoral
  DevExpress cxGrid Türkçeleştirme 41linea41 12 1.045 26-03-2019, Saat: 07:49
Son Yorum: 41linea41
  cxgrid sutun toplamı hatası (Çözüldü) cinarbil 0 301 23-02-2019, Saat: 15:53
Son Yorum: cinarbil
  cxgrid kolonları index numarasına göre eşitleme cinarbil 5 586 17-01-2019, Saat: 15:02
Son Yorum: adelphiforumz
  Cxgrid datetime alani hatası siyahbere 1 345 21-12-2018, Saat: 17:27
Son Yorum: meko



Konuyu Okuyanlar: 1 Ziyaretçi