cxgrid view banded

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
berken
Üye
Mesajlar: 208
Kayıt: 07 Ara 2005 04:27
Konum: Van

cxgrid view banded

Mesaj gönderen berken »

Merhaba arkadaşlar
hepinize kolay gelsin..
formda aradım ama bulamadım.. demolarda var ama incelediğim halde birşey anlamadım..
sorunum cxgridDBBandedTable view kullanarak görüntülerdiğim tablonun istediğim alanlarını tablonun altında bir banda toplamlarını yazmakk
yanı tabloda alacak ve borc fieldları var bunların toplamını en altta yazmak istiyorum
teşekkur ederim.. saygılarımla..
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Firebird ile ilgili değil. cxGrid sorunu. O yüzden Programlama'ya taşıyorum.

Lütfen ilgili başlığa girmeye gayret edin.
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

cxgridDBBandedTable.OptionsView.Footer := TRUE; yap.

İstersen runtime' da Footer panelin üzerine sağ clickle SUM, MAX, MIN vs. ilave edebiliyorsun, istersen designtime' da Customize tuşuna basarak Summary bölümünde Add tuşu ile istediğini gerçekleştirebiliyorsun.

İyi çalışmalar.
Kullanıcı avatarı
berken
Üye
Mesajlar: 208
Kayıt: 07 Ara 2005 04:27
Konum: Van

Mesaj gönderen berken »

merhaba arkadaşlar
dediğin işlemleri yaptım
ama datalar görüntülenmiyor.. bandları oluşturdum ve alanlara bağladım..
summary / footer dan da oluşturp alanlara bağladım.. ama datalar gelmiyor..
(Table açık onunla ilgili değil sorun)
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Normalde bu işlemi yaptığınız zaman toplamların görünmesi lazım. Şunları bir kontrol edin :
- GridMode False olmalı,
- Summary-> Footer kısmında Column seçin, FieldName seçmeyin.
- Kind kısmını skSum yapın.

Kolay gelsin.
Kullanıcı avatarı
berken
Üye
Mesajlar: 208
Kayıt: 07 Ara 2005 04:27
Konum: Van

Mesaj gönderen berken »

teşekkur ederim ilginize..
ben DBBandedtableview de yapmaya valışıyordum. ama tableview ile sadece footer ekleyerek oluyormuş.
iyi çalışmalar
saygılarımla
Kullanıcı avatarı
berken
Üye
Mesajlar: 208
Kayıt: 07 Ara 2005 04:27
Konum: Van

Mesaj gönderen berken »

merhaba arkadaslar...
footer lara nasıl istediğim bir yazıyı veya mesela başka iki footer ın toplamını yazabilirim,
iyi çalışmalar.. saygılarımla..
Kullanıcı avatarı
berken
Üye
Mesajlar: 208
Kayıt: 07 Ara 2005 04:27
Konum: Van

Mesaj gönderen berken »

merhaba arkadaslar her sorduğum soruyu cevap beklentisiyle yazıyorum. ama elbette cevap verilmek zorunda olduğunu soylemiyorum...
uğrastım ama yapamadım..
bir footerda görüntülenen değerin diğer iki footerdaki değerlerin toplamı olmasını istiyorum. nasıl yapabilirim..
teşekkuler.
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

cxGrid1DBBandedTableView1.DataController.Summary.OnAfterSummary eventine kod yazman gerekiyor. Ben kendi yazdığım örnek bir kodu gönderiyorum. Onu inceleyerek sen de kendine göre kod yazabilirsin:

Kod: Tümünü seç

procedure TMyMainDataEntranceForm.cxGrid1DBBandedTableView1DataControllerSummaryAfterSummary(
  ASender: TcxDataSummary);
var
  I, J: Integer;
  Fmt: string;
begin
  try
    if not Assigned(DataSource1.DataSet) then Exit;
    if not DataSource1.DataSet.Active then Exit;
    for I := 0 to ASender.FooterSummaryItems.Count - 1 do
    try
      Fmt := '#,#0';
      if TcxGridDBBandedColumn(ASender.FooterSummaryItems[I].ItemLink).DataBinding.FieldName <> '' then
        if (TheFormatFloatStr <> '') and (TcxGridDBBandedColumn(ASender.FooterSummaryItems[I].ItemLink).DataBinding.Field.DataType in [ftFloat, ftCurrency, ftBCD, ftFMTBcd]) then
        begin
          if MyDividePrecision <> 0 then
          try
            ASender.FooterSummaryValues[I] := StrToFloat(ASender.FooterSummaryValues[I]) * IntPower(10, -MyDividePrecision);
          except
            on Ex: Exception do AddErrorMessageForProgrammer('cxGrid1DBBandedTableView1DataControllerSummaryAfterSummary', Ex.Message);
          end;
          Fmt := TheFormatFloatStr;
        end;
      if TcxGridDBBandedColumn(ASender.FooterSummaryItems[I].ItemLink).DataBinding.FieldName = '' then
        if (TheFormatFloatStr <> '') and ((TcxGridDBBandedColumn(ASender.FooterSummaryItems[I].ItemLink).DataBinding.ValueTypeClass = TcxFloatValueType) or
                                          (TcxGridDBBandedColumn(ASender.FooterSummaryItems[I].ItemLink).DataBinding.ValueTypeClass = TcxFMTBcdValueType)) then
        begin
          if MyDividePrecision <> 0 then
          try
            ASender.FooterSummaryValues[I] := StrToFloat(ASender.FooterSummaryValues[I]) * IntPower(10, -MyDividePrecision);
          except
            on Ex: Exception do AddErrorMessageForProgrammer('cxGrid1DBBandedTableView1DataControllerSummaryAfterSummary', Ex.Message);
          end;
          Fmt := TheFormatFloatStr;
        end;
      case ASender.FooterSummaryItems[I].Kind of
        skSum    : ASender.FooterSummaryItems[I].Format := Fmt;
        skMin    : ASender.FooterSummaryItems[I].Format := 'Mn ' + Fmt;
        skMax    : ASender.FooterSummaryItems[I].Format := 'Mx ' + Fmt;
        skAverage: ASender.FooterSummaryItems[I].Format := 'Av ' + Fmt;
      else
        ASender.FooterSummaryItems[I].Format := 'Ct #,#0';
      end;
    except
      on Ex: Exception do AddErrorMessageForProgrammer('cxGrid1DBBandedTableView1DataControllerSummaryAfterSummary', Ex.Message);
    end;
    for I := 0 to ASender.DefaultGroupSummaryItems.Count - 1 do
    try
      Fmt := '#,#0';
      if TcxGridDBBandedColumn(ASender.DefaultGroupSummaryItems[I].ItemLink).DataBinding.FieldName <> '' then
        if TcxGridDBBandedColumn(ASender.DefaultGroupSummaryItems[I].ItemLink).DataBinding.Field.DataType in [ftFloat, ftCurrency, ftBCD, ftFMTBcd] then
        begin
          if MyDividePrecision <> 0 then
          try
             with cxGrid1DBBandedTableView1.DataController.Groups do
               for J := 0 to ChildCount[-1] do ASender.GroupSummaryValues[J, I] := StrToFloat(ASender.GroupSummaryValues[J, I]) * IntPower(10, -MyDividePrecision);
          except
            on Ex: Exception do AddErrorMessageForProgrammer('cxGrid1DBBandedTableView1DataControllerSummaryAfterSummary', Ex.Message);
          end;
          Fmt := TheFormatFloatStr;
        end;
      if TcxGridDBBandedColumn(ASender.DefaultGroupSummaryItems[I].ItemLink).DataBinding.FieldName = '' then
        if (TcxGridDBBandedColumn(ASender.DefaultGroupSummaryItems[I].ItemLink).DataBinding.ValueTypeClass = TcxFloatValueType) or
           (TcxGridDBBandedColumn(ASender.DefaultGroupSummaryItems[I].ItemLink).DataBinding.ValueTypeClass = TcxFMTBcdValueType) then
        begin
          if MyDividePrecision <> 0 then
          try
             with cxGrid1DBBandedTableView1.DataController.Groups do
               for J := 0 to ChildCount[-1] do ASender.GroupSummaryValues[J, I] := StrToFloat(ASender.GroupSummaryValues[J, I]) * IntPower(10, -MyDividePrecision);
          except
            on Ex: Exception do AddErrorMessageForProgrammer('cxGrid1DBBandedTableView1DataControllerSummaryAfterSummary', Ex.Message);
          end;
          Fmt := TheFormatFloatStr;
        end;
      case ASender.DefaultGroupSummaryItems[I].Kind of
        skSum    : ASender.DefaultGroupSummaryItems[I].Format := Fmt;
        skMin    : ASender.DefaultGroupSummaryItems[I].Format := 'Mn ' + Fmt;
        skMax    : ASender.DefaultGroupSummaryItems[I].Format := 'Mx ' + Fmt;
        skAverage: ASender.DefaultGroupSummaryItems[I].Format := 'Av ' + Fmt;
      else
        ASender.DefaultGroupSummaryItems[I].Format := 'Ct #,#0';
      end;
    except
      on Ex: Exception do AddErrorMessageForProgrammer('cxGrid1DBBandedTableView1DataControllerSummaryAfterSummary', Ex.Message);
    end;
  except
    on Ex: Exception do MeX('cxGrid1DBBandedTableView1DataControllerSummaryAfterSummary: ' + Ex.Message);
  end;
end;
İyi çalışmalar...
Cevapla