Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Использование DevExpress (часть 3)

Модерирует : ShIvADeSt

ShIvADeSt (31-12-2009 04:49): Продолжаем тут http://forum.ru-board.com/topic.cgi?forum=33&topic=10884  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121

   

golkanavt



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DevExpress

Обмен опытом, обсуждение нюансов и решение проблем возникающих при использовании библиотеки компонент Developer Express




 
Сами прирученные компоненты частенько приходят на водопой сюда
 
DLL со скинами из библиотеки dxSkins, автор Ziltoid Подробнее... линк обновлен
Продолжение, Первая часть, вторая часть

Всего записей: 1069 | Зарегистр. 08-04-2002 | Отправлено: 10:31 07-02-2009 | Исправлено: vladman, 14:36 24-10-2009
ukflrj

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
to  jicoff
 
а такую конструкцию в рамках одного бэнда возможно?
+----+------------------+  
|      |                        |  
|      |------------------+  
|      |                        |  
|      |                        |  
+----+------------------+
 

Всего записей: 24 | Зарегистр. 26-01-2006 | Отправлено: 23:46 17-02-2009 | Исправлено: ukflrj, 23:49 17-02-2009
vladman

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
brookson

Цитата:
      with SummaryItems.Add as TcxGridDBTableSummaryItem do begin
          Column := vGrid1.Columns[2];
          Kind := skSum;
          Format := ',0.00 $;-,0.00 $';
          Position:=spFooter;  

 
Position:=spGroup - должно помочь  

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 01:41 18-02-2009
brookson



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vladman
Пробовал. Не помогло. Собственно Footer группы я вижу, но пустой

Всего записей: 139 | Зарегистр. 06-09-2007 | Отправлено: 10:43 18-02-2009
f3ka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
brookson
а стоит у грида OptionView.GroupFooters = gfAlwaysvisible?

Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 11:05 18-02-2009
jicoff

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ukflrj
 
 
Нет, структура такая:
 
-----------------------------------------
|        1        |     2     |    3     | ...
-----------------------------------------
4
-----------------------------------------
5
-----------------------------------------

Всего записей: 289 | Зарегистр. 03-03-2006 | Отправлено: 13:39 18-02-2009
vladman

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
brookson
ну тогда давайте весь модуль/часть модуля где создается полностью грид, вью, и т.д., посмотрим.

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 14:58 18-02-2009
brookson



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
 
procedure TF_REPORTS.LabZv1FClick(Sender: TObject);
var
  fld: tfield;
  AColumn: TcxGridDBcolumn;
begin
 cxGrid1.Visible:=false;
 tvGrid1.ClearItems;
 if QueryRep.Active then QueryRep.Close;
 QueryREP.sql.text:='select * from ZV1F';
 QueryRep.Prepare;
 QueryRep.Open;
// создаём dxMemdata с нужными полями
dxMem3i.close;
dxmem3i:=TdxMemData.Create(nil);
dxmem3i.active:=false;
dxmem3i.FieldDefs.Clear;
 
fld := TStringField.Create(nil);
fld.FieldName := 'mastername';
fld.Size := 250;
fld.DataSet:=dxmem3i;
 
fld := TdateField.Create(nil);
fld.FieldName := 'vdate';
fld.DataSet:=dxmem3i;
....
fld:=TBCDField.Create(nil);
fld.FieldName:='sumtotal';
fld.DataSet:=dxmem3i;
ds3i.DataSet:=dxMem3i;
dxmem3i.Open;
dxmem3i.DisableControls;
while not QueryRep.Eof do begin
    dxMem3i.Append;
// добавляем записи в dxMemDataset    dxMem3i.FieldByName('mastername').AsString:=Queryrep.FieldByName('mastername').AsString;
    dxMem3i.FieldByName('vdate').AsVariant:=Queryrep.FieldByName('vdate').AsVariant;
     ...
    dxMem3i.FieldByName('sumtotal').AsFloat:=QueryREP.FieldByName('sumtotal').AsFloat;
    dxMem3i.Post;
    Queryrep.Next;
end;
dxMem3i.EnableControls;
tvgrid1.BeginUpdate;
tvgrid1.DataController.DataSource:=DS3i;
tvGrid1.OptionsView.GroupFooters:=gfAlwaysVisible;
// создаём вью в гриде
acolumn:=tvgrid1.CreateColumn;
acolumn.Width:=70;
acolumn.DataBinding.FieldName:='vdate';
acolumn.DataBinding.valuetype:='Date';
acolumn.Caption:='Дата';
acolumn:=tvgrid1.CreateColumn;
acolumn.Width:=150;
acolumn.DataBinding.FieldName:='mastername';
acolumn.DataBinding.ValueType:='String';
AColumn.GroupIndex:=0;
acolumn.Visible:=false;
acolumn.Caption:='Мастер';
...
acolumn:=tvgrid1.CreateColumn;
acolumn.Width:=100;
acolumn.DataBinding.FieldName:='sumtotal';
acolumn.DataBinding.valuetype:='Currency';
acolumn.Caption:='ВСЕГО';
 
with tvGrid1.DataController.Summary do begin
  SummaryGroups.Clear;
  // И ВОТ ЭТОГО ИТОГА В ГРУППЕ НЕТ
  with SummaryGroups.add do begin
      TcxGridTableSummaryGroupItemLink(Links.Add).Column := tvgrid1.Columns[8];
      with SummaryItems.Add as TcxGridDBTableSummaryItem do begin
          Column := tvgrid1.Columns[8];
          FieldName:='sumtotal';
          Kind := skSum;
          Format := ',0.00 $;-,0.00 $';
          Position:=spFooter;
      end;
  end;
  // А ЭТИ ОБЩИЕ ВНИЗУ - ЕСТЬ
  with FooterSummaryItems.Add as TcxGridDBTableSummaryItem do
      begin
        Column := tvGrid1.Columns[2];
        Kind := skSum;
        Format := ',0.00 $;-,0.00 $';
      end;
...
  with FooterSummaryItems.Add as TcxGridDBTableSummaryItem do
      begin
        Column := tvgrid1.Columns[8];
        Kind := skSum;
        Format := ',0.00 $;-,0.00 $';
      end;
end;
tvgrid1.EndUpdate;
tvGrid1.ViewData.Expand(true);
cxGrid1.Visible:=true;
 
 


Всего записей: 139 | Зарегистр. 06-09-2007 | Отправлено: 16:32 18-02-2009 | Исправлено: brookson, 16:37 18-02-2009
sldaac



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
ukflrj  
 
 
Нет, структура такая:

 
кинь  скрин  с вида вьюшки или кусок кода,
может ты не тот тып вьюшки выбрал
 
что ты показал на первом  сообщение сделать можно
 
 
Добавлено:
TForm1 = class(TForm)
    cxGrid1Level1: TcxGridLevel;
    cxGrid1: TcxGrid;
    cxGrid1DBBandedTableView1: TcxGridDBBandedTableView;
у тебя наверное простой, без DBBanded  или без Banded
 

Всего записей: 757 | Зарегистр. 15-06-2005 | Отправлено: 17:04 18-02-2009 | Исправлено: sldaac, 08:43 19-02-2009
vladman

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
brookson

Цитата:
 
......
acolumn:=tvgrid1.CreateColumn;
acolumn.Width:=100;
acolumn.DataBinding.FieldName:='sumtotal';
acolumn.DataBinding.valuetype:='Currency';
 
AColumn.Summary.GroupFooterKind := skSum;
 
acolumn.Caption:='ВСЕГО'
........
 


Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 20:06 18-02-2009
brookson



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vladman
Спасибо! Это оно!  Огромное еще раз спасибо
Честно говоря, я в лёгком шоке. Весь тот код в конце с созданием итогов, который был в примере, не нужен.
Не удержусь от нескромного вопроса - где это можно было прочесть? В документации, что шла с исходниками не нашёл нигде.

Всего записей: 139 | Зарегистр. 06-09-2007 | Отправлено: 20:49 18-02-2009 | Исправлено: brookson, 21:41 18-02-2009
afiget



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
В документации, что шла с исходниками не нашёл нигде.

А в раздел Task Based Help смотрел?

Всего записей: 545 | Зарегистр. 31-12-2005 | Отправлено: 22:56 18-02-2009
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
// создаём dxMemdata с нужными полями
dxMem3i.close;
dxmem3i:=TdxMemData.Create(nil);  

странно, ты вначале обращаешься  к несуществующему dxMem3i чтобы закрыть его, а потом только создаешь.

----------
/не мы такие, жизнь такая/

Всего записей: 3260 | Зарегистр. 24-11-2005 | Отправлено: 00:08 19-02-2009
vladman

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
brookson

Цитата:
Весь тот код в конце с созданием итогов, который был в примере, не нужен.  

Ну, честно говоря, приведенные код не идеален (без обид, раз вы это уж упомянули ). Есть возможность то же реализовать немного по-другому. Но это к вопросу ведь не относилось . У каждого ведь свой стиль, понимание и подход ...

Цитата:
где это можно было прочесть?

как-то разбирался с логикой построения summary во View, вот и вспомнил, что помимо свойств в самих View существуют еще и свойства в Column отвечающие за summary.  

Цитата:
А в раздел Task Based Help смотрел?

afiget - прав! Creating Summaries ->Creating Footer and Group Summaries и в самом конце:
"As for the group summary, you can set the position where a summary will be displayed by using the Position property or specify the corresponding column's GroupKind or GroupFooterKind properties. A group summary can be displayed either in a group row or in a group footer panel"

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 01:01 19-02-2009
brookson



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо за критику и за помощь ))
vladman
Касаемо последней цитаты - было неважно, где отображать Group Summary - внизу или вверху. Они просто нигде не отображались.
Раздел я этот тоже видел.... Да, на тот кусочек не обратил внимание, наверно потому, что в другом месте хелпа нашёл другой пример. Но кто мне объяснит, почему  

Код:
 
with FooterSummaryItems.Add as TcxGridDBTableSummaryItem do
      begin
        Column := tvGrid1.Columns[2];
        Kind := skSum;
        Format := ',0.00 $;-,0.00 $';
      end;  

работает, а

Код:
 
with SummaryGroups.add do begin
      TcxGridTableSummaryGroupItemLink(Links.Add).Column := tvgrid1.Columns[8];
      with SummaryItems.Add as TcxGridDBTableSummaryItem do begin
          Column := tvgrid1.Columns[8];
          FieldName:='sumtotal';
          Kind := skSum;
          Format := ',0.00 $;-,0.00 $';
          Position:=spFooter;
      end;
  end;  

- нет.
vladman
Относительно замечания о неидеальности кода - подозреваю, что так и есть. Он всё время менялся и дописывался. Просто есть куча отчётов. Чтоб не делать много вьюх или гридов,  сделал один пустой и каждый раз создаю всё под новый набор данных.
Если нетрудно, как бы Вы поступили?

Всего записей: 139 | Зарегистр. 06-09-2007 | Отправлено: 14:20 19-02-2009 | Исправлено: brookson, 14:28 19-02-2009
ukflrj

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
to sldaac
 
хотелось бы такие заголовки сделать
 

 
Возможно ли в одном бэнде?
 
спасибо
 

Всего записей: 24 | Зарегистр. 26-01-2006 | Отправлено: 14:44 19-02-2009 | Исправлено: ukflrj, 14:57 19-02-2009
f3ka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ukflrj
в одном не получиться

Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 15:31 19-02-2009
sldaac



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
хотелось бы такие заголовки сделать

 
Ге-ге, дебет-кредит,  можно,  
тебе надо  использовать в гриде TcxGridDBBandedTableView а ты наверное  
TcxGridDBTableView

Всего записей: 757 | Зарегистр. 15-06-2005 | Отправлено: 15:34 19-02-2009
f3ka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sldaac
вопрос был про то  

Цитата:
 
хотелось бы такие заголовки сделать  
Возможно ли в одном бэнде?  
 

про TcxGridBandedTableView видать уже узнал...
ukflrj
у меня получилось это сделать только при помощи 3-х бэндов и скрытия самих заголовков бэндов...

Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 15:42 19-02-2009
sldaac



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
to ukflrj
 
сорри, но при помощи одного никак (ну не порезать-же его). Часто люди незнают что есть TcxGridBandedTableView, кинул на форму cxGrid, он автоматом создает простую вьюшку.

Всего записей: 757 | Зарегистр. 15-06-2005 | Отправлено: 15:46 19-02-2009
Trasnev

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
afiget
спасибо. помогло.
Но теперь возникла другая проблема
 
Подскажите, пожалуйста, как заставить работать такое:
в Grid есть LookupComboBox поле(показывается название, редактируется id). При выборе значения в этом поле нужно провести дополнительную проверку. если id=определенному значению(или назнание='дата'), то нужно удалить значения из другой колонки( 'col1') этой записи.
Для этого на onValidate вешается обработчик, в котором  
   if DisplayValue='дата' then
   begin
     OracleDataSet1.Edit;
     OracleDataSet1.FieldValues['col1']:='AAAA';
     OracleDataSet1.Post;
   end;
В таков виде это не работает - изменяется значение в col1, но при этом не изменяется id(для редактирования которого и предназначено LookupComboBox поле).
можно было попробовать обойти эту проблему и тем же  OracleDataSet1.FieldValues['id'] присвоить значение. Вопрос только в том как это самое значение получить? DisplayValue содержит название, а не необходимый id. И  cxGridDBTableView1.DataController.Values[dc.FocusedRecordIndex,cxGridDBTableView1ID.Index] возвращает null.
Или есть другой способ редактирования данных, при котором бы сохранялось и значения из лукап поля?
 

Всего записей: 4 | Зарегистр. 13-02-2009 | Отправлено: 16:17 19-02-2009
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Использование DevExpress (часть 3)
ShIvADeSt (31-12-2009 04:49): Продолжаем тут http://forum.ru-board.com/topic.cgi?forum=33&topic=10884


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru