Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Combobox с разным наполнением для разных строк в cxGrid   Найти похожие ветки 

 
Куку   (2012-11-12 21:04) [0]

Добрый день!

Есть таблицы: СписокЧегоТоТам,  ЧегоТоТам и ВидЧегоТоТам.

Есть cxGrid, в котором отображен СписокЧегоТоТам примерно в таком виде:
ВидЧегоТоТам1, ЧегоТоТам1, АтрибутыСписокЧегоТоТам1
ВидЧегоТоТам1, ЧегоТоТам11, АтрибутыСписокЧегоТоТам11
ВидЧегоТоТам1, ЧегоТоТам111, АтрибутыСписокЧегоТоТам111
ВидЧегоТоТам2, ЧегоТоТам2, АтрибутыСписокЧегоТоТам2
ВидЧегоТоТам2, ЧегоТоТам22, АтрибутыСписокЧегоТоТам22
...

Пользователь при работе с гридом выбирает ВидЧегоТоТам, то ему в колонке "ЧегоТоТам" выпадал список значений только выбранного вида.
Считаем, что кол-во значений ВидЧегоТоТам ограничено (от 1 до 10).

Как лучше это организовать? Заполнять какой-то (?) PickList? В каком направлении смотреть?


 
Куку   (2012-11-12 21:06) [1]

UPD
Желательно, чтобы уже выбранные ЧегоТоТам не присутствовали в выпадающем списке. Перестраивать каждый раз "на лету" очень бы не хотелось, или хотелось бы, но как-то поэкономнее по времени.


 
brother ©   (2012-11-13 09:19) [2]

ЧегоТоТам
не совсем удачная замена...


 
DimaBr ©   (2012-11-13 09:44) [3]

Внимание! Здесь обсуждаются вопросы, связанные с разработкой компонентов, редакторов свойств, редакторов компонентов и экспертов IDE.
Вопросы по поиску и использованию готовых компонентов, редакторов или экспертов являются нарушением тематики и могут быть удалены.


 
DimaBr ©   (2012-11-13 10:10) [4]

Если у вас все ЧегоТоТам хранятся в одной таблице и выводятся одним запросом, то можно попробовать фильтровать лукап в зависимости от ВидЧегоТоТам. Например:

procedure TForm1.cxLookupComboBox1PropertiesInitPopup(Sender: TObject);
begin
 with cxLookupComboBox1.Properties.Grid do begin
   DataController.Filter.AddItem(nil,Columns.Items[0],foLessEqual,5,"5");// показывать все меньше 5
   DataController.Filter.Active := true;
 end;
end;


 
Куку   (2012-11-14 18:54) [5]

Внимание правильный ответ (найдено в доке по cxGrid):
1) Кидаем на форму (или создаем динамически - кому как нравится) cxEditRepository.
2) Создаем там нужные нам проперти. В нашем случае ComboBoxItem
3) В событии cxGridTableView1Column2GetProperties(
 Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
 var AProperties: TcxCustomEditProperties);
пишем что хотим,
например:
if ARecord.Values[cxStep1ResultTableView1Column1.Index] = null then exit;

  if ARecord.RecordIndex > 3 then
 AProperties := cxEditRepository1ComboBoxItem1.Properties
 else
  begin
  cxEditRepository1ComboBoxItem2.Properties.Items.Clear;
  cxEditRepository1ComboBoxItem2.Properties.Items.Add(ARecord.Values[cxStep1Result TableView1Column1.Index]+"_"+IntToStr(Sender.Index));
  cxEditRepository1ComboBoxItem2.Properties.Items.Add(ARecord.Values[cxStep1Result TableView1Column1.Index]+"_*");

  AProperties := cxEditRepository1ComboBoxItem2.Properties;
  end;



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.076 c
15-1344801222
Jeer
2012-08-12 23:53
2013.03.22
Как молоды мы были...


15-1332880203
Юрий
2012-03-28 00:30
2013.03.22
С днем рождения ! 28 марта 2012 среда


2-1334141822
Chuck Bass
2012-04-11 14:57
2013.03.22
framerect пунктиром


15-1328819405
Юрий
2012-02-10 00:30
2013.03.22
С днем рождения ! 10 февраля 2012 пятница


15-1339144160
xayam
2012-06-08 12:29
2013.03.22
Визуальное программирование