Fastreport DBCross objesinden runtime cell silme [Çözüldü]

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
fatihbarut
Üye
Mesajlar: 368
Kayıt: 15 Ara 2011 08:02

Fastreport DBCross objesinden runtime cell silme [Çözüldü]

Mesaj gönderen fatihbarut » 27 Eki 2017 12:43

arkadaşlar,
resimdeki gibi bir tablodan aşağıdaki kod yardımı ile cell'i görünmez hale getiriyorum ancak üstündeki corner sebebi ile boşluk şeklindeki header'ı kalıyor.
Çözümünü bilen var mı?

DBcrosstab objesinde runtime olarak bir cell nasıl silinir (column değil bu sebeple OnCalcWidth olayına yazılan Width := 0 işe yaramıyor)

Resim : https://ibb.co/n6gWbR

Bakmak isteyen olursa benim tablonun aynısının crosstab olanını yani dbsizini ekte gönderiyorum.


Arkadaşlar 48 saat fastreportçularla çalışmanın ardından aşağıdaki kodu çıkardık. Bu derdi olanlar için altın değerindedir bilginiz olsun.

Kod: Tümünü seç

procedure EditCross(Cross: TfrxDBCrossView; CellName: String);
var
  i, j, k: Integer;
  TempStream: TMemoryStream;
  Own: TComponent;
  Par: TfrxComponent;
begin

  if Cross = nil then
    exit;
  with Cross do
  begin

    for i := 0 to CellFields.Count - 1 do
    begin
     // ShowMessage('#'+CellFields[i].Trim+'#'+' #'+CellName+'#');
      if CellFields[i].Trim = CellName then
      begin

        CellFields.Delete(i);
        for j := i to CellLevels - 2 do
        begin
          CellHeaderMemos[j].AssignAll(CellHeaderMemos[j + 1]);
          CellMemos[j].AssignAll(CellMemos[j + 1]);
          CellFunctions[j] := CellFunctions[j + 1];
        end;
        for j := 0 to CellLevels - 2 do
        begin
          if j >= i then
            k := j + 1
          else
            k := j;
          CellMemos[(CellLevels - 1) * RowLevels + j].AssignAll(CellMemos[CellLevels * RowLevels + k]);
          CellFunctions[(CellLevels - 1) * RowLevels + j] := CellFunctions[CellLevels * RowLevels + k];
        end;
        CellLevels := CellLevels - 1;
        Break;
      end;
    end;
  end;
end;
Kullanımı:

Kod: Tümünü seç

EditCross((RaporFRP.FindObject('DBCrossX') as TfrxDBCrossView),'field_name');
Dosya ekleri
Sample CrossTab (not DB).zip
(1.99 KiB) 3 kere indirildi
En son fatihbarut tarafından 28 Eki 2017 08:51 tarihinde düzenlendi, toplamda 6 kere düzenlendi.

Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 344
Kayıt: 05 Oca 2012 12:55

Re: Fastreport DBCross objesinden runtime cell silme

Mesaj gönderen xozcanx » 27 Eki 2017 12:51

Merhaba,
Tüm MemoView ler için Align özelleiğini "baLeft" yaparsanız istediğiniz alanı gizlediğinizde aradaki boşluk kalkmış olacaktır.
Nasibinde varsa aIırsın karıncadan biIe ders. Nasibinde yoksa bütün cihan önüne seriIse sana ters.

fatihbarut
Üye
Mesajlar: 368
Kayıt: 15 Ara 2011 08:02

Re: Fastreport DBCross objesinden runtime cell silme

Mesaj gönderen fatihbarut » 27 Eki 2017 01:03

:) ben de düşündüm de olmadı, celller kendi başına rowlar kendi başına align oluyormuş cell'eri sayfasının soluna yasladı

Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 344
Kayıt: 05 Oca 2012 12:55

Re: Fastreport DBCross objesinden runtime cell silme

Mesaj gönderen xozcanx » 27 Eki 2017 01:12

hocam şablon dosyayı paylaşabilir iseniz, inceleyip dönüş yapabilirim.
Nasibinde varsa aIırsın karıncadan biIe ders. Nasibinde yoksa bütün cihan önüne seriIse sana ters.

fatihbarut
Üye
Mesajlar: 368
Kayıt: 15 Ara 2011 08:02

Re: Fastreport DBCross objesinden runtime cell silme

Mesaj gönderen fatihbarut » 27 Eki 2017 01:17

sanırım aşağıdaki iş görür
template.zip
(2.74 KiB) 7 kere indirildi

Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 344
Kayıt: 05 Oca 2012 12:55

Re: Fastreport DBCross objesinden runtime cell silme

Mesaj gönderen xozcanx » 27 Eki 2017 02:11

Hocam bendeki sürümden kaynaklı olarak DBCross erişimim yok.
Deneme yapamadım maalesef.
Ekte bir örnek var anlatmak istediğim bu şekildeydi buna göre bir değerlendirme yapabilirsiniz.
test_.zip
TestCalisma
(53.91 KiB) 7 kere indirildi
Nasibinde varsa aIırsın karıncadan biIe ders. Nasibinde yoksa bütün cihan önüne seriIse sana ters.

fatihbarut
Üye
Mesajlar: 368
Kayıt: 15 Ara 2011 08:02

Re: Fastreport DBCross objesinden runtime cell silme

Mesaj gönderen fatihbarut » 27 Eki 2017 02:15

yardım için teşekkürler ancak dbcross başka bir alem, bülent ersoydan beter yani.

Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 344
Kayıt: 05 Oca 2012 12:55

Re: Fastreport DBCross objesinden runtime cell silme

Mesaj gönderen xozcanx » 27 Eki 2017 02:25

:lol: :lol: :lol:
Nasibinde varsa aIırsın karıncadan biIe ders. Nasibinde yoksa bütün cihan önüne seriIse sana ters.

Cevapla