Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / строки в nextgrid / 15 сообщений из 15, страница 1 из 1
06.06.2018, 14:18
    #39656502
TsYekaterina
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строки в nextgrid
Доброго дня! на форме есть cxImageComboBox и NextGrid, данные в NextGrid попадают при вызове другой формы. при смене в cxImageComboBox Itemsа данные в NextGrid меняются. как сделать так,
чтобы при смене индекса в cxImageComboBox данные в NextGrid оставались, не очищаясь? что-то никак не соображу...
NextGrid заполняется так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 if CDS.FieldByName('_ATTRTYPE').AsInteger in [0,1,2,3,5] then begin
        GridAttrs.AddRow;
        GridAttrs.CellByName['ColImg',GridAttrs.LastAddedRow].AsInteger:=Icon_Attr;
        GridAttrs.CellByName['ColAttr',GridAttrs.LastAddedRow].AsString:=CDS.FieldByName('_NAME').AsString; //èìÿ àòðèáóòà
        GridAttrs.CellByName['ColAttrType',GridAttrs.LastAddedRow].AsInteger:=CDS.FieldByName('_ATTRTYPE').AsInteger;
        GridAttrs.CellByName['ColValueList',GridAttrs.LastAddedRow].AsString:=CDS.FieldByName('_LIST').AsString;
        GridAttrs.CellByName['ColMeasureID',GridAttrs.LastAddedRow].AsString:=MeasureID;
        GridAttrs.CellByName['ColValue',GridAttrs.LastAddedRow].AsString:=CDS.FieldByName('_DEFAULT').AsString;
        if CDS.FieldByName('_ATTRTYPE').AsInteger=3 then GridAttrs.CellByName['ColValue',GridAttrs.LastAddedRow].AsDateTime:=Date;
        if CDS.FieldByName('_NAME').AsString='Íàèìåíîâàíèå' then GridAttrs.CellByName['ColValue',GridAttrs.LastAddedRow].AsString:=TypeList[Index].DefaultName;
         if CDS.FieldByName('_NAME').AsString='Ðàçðàáîòàë' then GridAttrs.CellByName['ColValue',GridAttrs.LastAddedRow].AsString:='' ;
         end;


форма -редактор называется frmEditAttrValue.
спасибо!
...
Рейтинг: 0 / 0
06.06.2018, 14:19
    #39656507
TsYekaterina
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строки в nextgrid
в последних двух строках крокозябры - это 'Наименование' и 'Разработал'
...
Рейтинг: 0 / 0
06.06.2018, 16:01
    #39656631
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строки в nextgrid
Запихивая данные в NextGrid вы занимаетесь ерундой.
Подозреваю что CDS - ClientDataSet.
В приведённом коде cxImageComboBox никак не фигурирует, поэтому как ваш NextGrid связан с cxImageComboBox неясно
...
Рейтинг: 0 / 0
06.06.2018, 16:07
    #39656633
TsYekaterina
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строки в nextgrid
DimaBr,
естественно, это часть кода. добавление происходит как раз в обработчике cxImageComboBox
Код: sql
1.
procedure TfrmCreate.cmbTypePropertiesChange(Sender: TObject);


мб целесообразно весь код процедуры показать....
...
Рейтинг: 0 / 0
06.06.2018, 16:10
    #39656637
TsYekaterina
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строки в nextgrid
Код: sql
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.
begin
  if cmbType.ItemIndex=-1 then cmbType.ItemIndex:=0;
  CDS.Data:=RunMethod('GetInfoAboutType',[cmbType.Text,1,ReturnCode,ErrorMessage]);

  TypeID:=cmbType.Properties.Items[cmbType.ItemIndex].Value;
  Index:=TypeIndexByID(TypeID);

  LockWindowUpdate(Handle);
  Tree.Items.Clear;
  GridAttrs.ClearRows;
  PanelMiddle.DestroyComponents;
  PanelMiddle.Height:=0;
  Frames:=nil;
  while not CDS.Eof do begin
    CDS2.Data:=RunMethod('GetInfoAboutAttribute',[CDS.FieldByName('_NAME').AsString,2,ReturnCode,ErrorMessage]);
    CDS2.Filter:='_DEFAULT=1';
    CDS2.Filtered:=True;
    if not CDS2.Eof then
      MeasureID:=CDS2.FieldByName('_ID_MEASURE').AsString
    else
      MeasureID:='';
    CDS2.Filtered:=False;

    if CDS.FieldByName('_OBLIGATORY').AsInteger=0 then begin
      if CDS.FieldByName('_ATTRTYPE').AsInteger in [0,1,2,3,5] then begin
        GridAttrs.AddRow;
        GridAttrs.CellByName['ColImg',GridAttrs.LastAddedRow].AsInteger:=Icon_Attr;
        GridAttrs.CellByName['ColAttr',GridAttrs.LastAddedRow].AsString:=CDS.FieldByName('_NAME').AsString; //èìÿ àòðèáóòà
        GridAttrs.CellByName['ColAttrType',GridAttrs.LastAddedRow].AsInteger:=CDS.FieldByName('_ATTRTYPE').AsInteger;
        GridAttrs.CellByName['ColValueList',GridAttrs.LastAddedRow].AsString:=CDS.FieldByName('_LIST').AsString;
        GridAttrs.CellByName['ColMeasureID',GridAttrs.LastAddedRow].AsString:=MeasureID;
        GridAttrs.CellByName['ColValue',GridAttrs.LastAddedRow].AsString:=CDS.FieldByName('_DEFAULT').AsString;
        if CDS.FieldByName('_ATTRTYPE').AsInteger=3 then GridAttrs.CellByName['ColValue',GridAttrs.LastAddedRow].AsDateTime:=Date;
        if CDS.FieldByName('_NAME').AsString='Íàèìåíîâàíèå' then GridAttrs.CellByName['ColValue',GridAttrs.LastAddedRow].AsString:=TypeList[Index].DefaultName;
         if CDS.FieldByName('_NAME').AsString='Ðàçðàáîòàë' then GridAttrs.CellByName['ColValue',GridAttrs.LastAddedRow].AsString:='' ;
         end;


опять же часть кода, показывающая связь с cxImageComboBox .
...
Рейтинг: 0 / 0
06.06.2018, 16:12
    #39656638
TsYekaterina
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строки в nextgrid
я предположила сделать
Код: sql
1.
2.
if Index=TypeIndexByID(TypeID) then
           if CDS.FieldByName('_NAME').AsString='Разработал' then GridAttrs.CellByName['ColValue',GridAttrs.LastAddedRow].AsString:=frmEditAttrValue.Value;


но Access Violation...
...
Рейтинг: 0 / 0
06.06.2018, 16:16
    #39656639
TsYekaterina
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строки в nextgrid
при этом данные в строке "Разработал" при смене Itemsa в cxImageComboBox не исчезают
...
Рейтинг: 0 / 0
06.06.2018, 21:38
    #39656936
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строки в nextgrid
при смене в cxImageComboBox Itemsа данные в NextGrid меняются
Вы же сами их очищаете и заполняете снова при смене cmbTypePropertiesChange
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
procedure TfrmCreate.cmbTypePropertiesChange(Sender: TObject);
begin
  if cmbType.ItemIndex=-1 then cmbType.ItemIndex:=0;
  CDS.Data:=RunMethod('GetInfoAboutType',[cmbType.Text,1,ReturnCode,ErrorMessage]);

  TypeID:=cmbType.Properties.Items[cmbType.ItemIndex].Value;
  Index:=TypeIndexByID(TypeID);

  LockWindowUpdate(Handle);
  Tree.Items.Clear;
  GridAttrs.ClearRows;
...
...
Рейтинг: 0 / 0
07.06.2018, 08:18
    #39657026
TsYekaterina
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строки в nextgrid
DimaBr,

если не очищать, то при каждой смене индекса cxImageComboBox будет накопление в NextGrid. как это побороть тогда?
...
Рейтинг: 0 / 0
07.06.2018, 08:21
    #39657027
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строки в nextgrid
Ну так вы определитесь, нужно менять данные при смене cxImageComboBox или не нужно.
чтобы при смене индекса в cxImageComboBox данные в NextGrid оставались, не очищаясь?
противоречит
если не очищать, то при каждой смене индекса cxImageComboBox будет накопление в NextGrid
...
Рейтинг: 0 / 0
07.06.2018, 08:42
    #39657035
TsYekaterina
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строки в nextgrid
DimaBr,

нужно, чтобы при переключении не очищались некоторые строки в Nextgrid. просто если не очищать таблицу, то при переключении в ней будет накопление данных.
...
Рейтинг: 0 / 0
07.06.2018, 08:50
    #39657037
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строки в nextgrid
TsYekaterinaнужно, чтобы при переключении не очищались некоторые строки в Nextgrid.
Ну так не очищайте, разрешаю
...
Рейтинг: 0 / 0
07.06.2018, 08:53
    #39657039
TsYekaterina
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строки в nextgrid
DimaBr,

спасибо! только как не очищать отдельную строку?
...
Рейтинг: 0 / 0
07.06.2018, 09:12
    #39657049
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строки в nextgrid
Ну если есть
Код: pascal
1.
GridAttrs.AddRow;


то наверняка есть и
Код: pascal
1.
GridAttrs.DeleteRow;


Поймите, с такими экзотическими компонентами как NextGrid никто не работает.
Да и вообще, для работы с данными в датасете есть cxGrid с DB-вьюшками
...
Рейтинг: 0 / 0
07.06.2018, 09:19
    #39657053
TsYekaterina
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строки в nextgrid
DimaBr,

понятно! спасибо!)
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / строки в nextgrid / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]