Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Позиционирование в Combobox по значению объекта [D7]


Страницы:   1 2

Laguna ©   (2011-09-22 15:27:00) 

Нужно в контрольной работе написать кусок кода, в котором в Combobox в качестве объекта добавлена запись с данными. И в зависимости от подаваемого значения позиционировать на конкретную строку. Для начала вариант первый:

...
ComboBox1.Items.AddObject('Item 1', Pointer(1));
ComboBox1.Items.AddObject('Item 2', Pointer(2));
ComboBox1.Items.AddObject('Item 3', Pointer(3));
....
ComboBox1.ItemIndex := ComboBox1.Items.IndexOfObject(Pointer(k));
// где к - будет указан во входном параметре процедуры(будет 1, 2 или 3)

Здесь все понятно. Непонятна ситуация, когда нужно позицианировать, если сохранялась запись со значениями. Вариант второй:

...
 type
  PComboRec = ^TComboRec;
  TComboRec = record
    Kod   : Longword;
    Poz   : Longword;
    St     : String[5];    
  end;
...
Var
 pRec: PComboRec;
begin
  new(pRec);
  pRec^.ID   := 1;
  pRec^.Poz := 11;
  pRec^.St := 'Бла-Бла-Бла';
  RegComboBox.Items.AddObject('Item 1', Pointer(pRec));
  new(pRec);
  pRec^.ID   := 2;
  pRec^.Poz := 12;
  pRec^.St := 'Бла-Бла-Бла';
  RegComboBox.Items.AddObject('Item 2', Pointer(pRec));
  new(pRec);
  pRec^.ID   := 3;
  pRec^.Poz := 13;
  pRec^.St := 'Бла-Бла-Бла';
  RegComboBox.Items.AddObject('Item 3', Pointer(pRec));
end;

Как применить функцию позиционирования по полю Poz, к примеру, если на входе процедуры подавать некоторые значения
Подойдет ли конструкция ComboBox1.ItemIndex := ComboBox1.Items.IndexOfObject(...)в данном случае или нужно как то по другому?


sniknik   (2011-09-22 20:22:00) [21]

указатель лишний... вместо record-а класс/обьект, вместо new create ... будет проще.


ProgRAMmer Dimonych   (2011-09-22 15:36:00) [22]

Не поможет: указатель на структуру будет отличаться от того, с которым её добавляли в список. А поскольку контрол ничего не знает о структуре, на которую ссылается указатель (в т.ч. и её размера), сравнить он её не сможет. Следовательно, надо пробегать по всем элементам самостоятельно и искать подходящий.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо