powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / странное поведение cxCombobox
25 сообщений из 31, страница 1 из 2
странное поведение cxCombobox
    #39653158
TsYekaterina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
доброго дня! помогите решить такой вопрос: есть форма, на ней cxCombobox. в нем отображаются некоторые данные из БД (свойства). при выборе какого-либо свойства в NextGrid отображаются значения. у каждого свойства свои значения.
но вот в чем затык, если свойства имеют одинаковое название, то данные в NextGrid как-то странно обновляются: выбираешь одно из одинаковых свойств - в гриде отображаются одни значения, другое - данные те же самые (хотя на самом деле разные). ID в бд у них разные.
например: два разынх свойства с названием "Тип соединителя". у этих свойств разные значения, у первого, например: 1, 5, 6; у второго - 8, 10, 12. в БД у них разные ID. если я выбираю в combo первое свойство, в NexGrid
появляются значения 1, 5, 6; если я выбираю второе свойство, то значения не обновляются, то есть они так же и остались 1, 5, 6, хотя должны быть 8, 10, 12. Если между их выбором выбрать свойство с другим названием, но данные будут меняться в NextGrid.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
procedure ShowVals(ID:string);
begin
  FormAddField.GridValues.ClearRows;
  StdMainForm.ADOQuery.Close;
    StdMainForm.ADOQuery.Sql.Clear;
    StdMainForm.ADOQuery.SQL.Text:='Select * from ListValues where List_id='+QuotedStr(ID);
 StdMainForm.ADOQuery.Open;
  with StdMainForm.DataSource.DataSet do begin
    //Добавляем значения в таблицу
    FormAddField.GridValues.BeginUpdate;
    FormAddField.GridValues.AddRow(RecordCount);
    while not Eof do begin
      FormAddField.GridValues.Cell[0, RecNo-1].AsString:=FieldByName('Val_ID').AsString;
     FormAddField.GridValues.Cell[1, RecNo-1].AsBoolean:=false; //По умолчанию отмечены все значения!!!
      FormAddField.GridValues.Cell[2, RecNo-1].AsString:=FieldByName('Value').AsString;
       FormAddField.GridValues.Cell[3, RecNo-1].AsString:=FieldByName('Code').AsString;
      FormAddField.GridValues.Cell[4, RecNo-1].AsString:=FieldByName('Description').AsString;
      Next;
    end;
    FormAddField.GridValues.EndUpdate;
  end;
end;
...
Рейтинг: 0 / 0
странное поведение cxCombobox
    #39653161
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeviantArt
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
странное поведение cxCombobox
    #39653179
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Какой ID вы передаёте в процедуру ?
2. Почему процедура не метод формы ?
3. Почему процедура управляет двумя формами одновременно ?
4. Почему cx и Next в одной куче ?
...
Рейтинг: 0 / 0
странное поведение cxCombobox
    #39653184
TsYekaterina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr,
1. ID наименования свойства (из другой таблицы).
2. в событие формы в данной случае нецелесообразно помещать.
3. потому что ADOQuery на другой форме, к нему идет привязка.
4. не думаю, что это создало проблему
...
Рейтинг: 0 / 0
странное поведение cxCombobox
    #39653185
TsYekaterina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
проблема возникает только с одинаковым наименованием свойств, с остальными все в порядке.
при трассировке происходит то же самое: если я выбираю первое из свойств, у второго ID не передается, если я выбираю, второе - у первого ID не передается....
...
Рейтинг: 0 / 0
странное поведение cxCombobox
    #39653191
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
покажите код, который вызывает процедуру
...
Рейтинг: 0 / 0
странное поведение cxCombobox
    #39653204
TsYekaterina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr,
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
procedure TFormAddField.cmbEnumerationPropertiesChange(Sender:TObject);
var
  ID:string;
begin
  if (cmbEnumeration.Text='')or(chkNominalRow.Checked and(grpValuesType.ItemIndex=1)) then exit;
  GridValues.ClearRows;
  ID:=MasID[cmbEnumeration.ItemIndex];
  ShowVals(ID);
end;
...
Рейтинг: 0 / 0
странное поведение cxCombobox
    #39653221
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Передаваемый ID правильный ?
...
Рейтинг: 0 / 0
странное поведение cxCombobox
    #39653224
Belotsky Serge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TsYekaterina,

Пробовали SQL вручную выполнить (из среды поддержки СУБД, не из RAD)? Что возвращает?
...
Рейтинг: 0 / 0
странное поведение cxCombobox
    #39653228
TsYekaterina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Belotsky Serge,

с СУБД выполняет код без ошибки
...
Рейтинг: 0 / 0
странное поведение cxCombobox
    #39653229
TsYekaterina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr,

если я выбираю первое из свойств, у второго ID не передается, если я выбираю, второе - у первого ID не передается....
...
Рейтинг: 0 / 0
странное поведение cxCombobox
    #39653245
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsYekaterina,

ID, который вы передаёте в процедуру ShowVals, это число или название?

Если число, то смотрите, как вы это число получаете. Т.е. функцию MasID
...
Рейтинг: 0 / 0
странное поведение cxCombobox
    #39653253
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsYekaterinaDimaBr,

если я выбираю первое из свойств, у второго ID не передается, если я выбираю, второе - у первого ID не передается....
Пять раз прочитал, ни разу не понял.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
begin
  if (cmbEnumeration.Text='')or(chkNominalRow.Checked and(grpValuesType.ItemIndex=1)) then exit;
  GridValues.ClearRows;
  ID:=MasID[cmbEnumeration.ItemIndex];
  ShowMessage(ID); // тут ID правильный ?
  ShowVals(ID);
end;
...
Рейтинг: 0 / 0
странное поведение cxCombobox
    #39653283
TsYekaterina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr,

при выборе первого из одинаковых свойств, ID передается = 442, при выборе тут же второго - не передается.
...
Рейтинг: 0 / 0
странное поведение cxCombobox
    #39653286
TsYekaterina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TsYekaterinaDimaBr,

при выборе первого из одинаковых свойств в Combobox, ID передается = 442, при выборе тут же второго - не передается.
...
Рейтинг: 0 / 0
странное поведение cxCombobox
    #39653289
TsYekaterina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
goldmi45,

procedure ShowVals(ID:string) возвращает число. MasID - это массив.
...
Рейтинг: 0 / 0
странное поведение cxCombobox
    #39653296
Belotsky Serge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TsYekaterinaBelotsky Serge,

с СУБД выполняет код без ошибки

приведите, плиз, выборку с разными ID и одинаковыми свойствами. Хотя бы скриншот. Тяжело понять, что у вас за данные там.
...
Рейтинг: 0 / 0
странное поведение cxCombobox
    #39653303
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть уже на этом этапе у вас ID не верный. Зачем же вы в начале топика показываете процедуру где этот НЕПРАВИЛЬНЫЙ ID что-то неправильно делает ?

Срабатывает ли ShowMessage при выборе первого, за затем второго (такого же) значения ?
...
Рейтинг: 0 / 0
странное поведение cxCombobox
    #39653322
TsYekaterina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr,

при выборе первого срабатывает, при выборе второго - нет.
...
Рейтинг: 0 / 0
странное поведение cxCombobox
    #39653326
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВОТ !!!
Теперь осталось понять, что такое OnChange, и когда оно срабатывает.
А срабатывает оно, когда изменяется ТЕКСТ, а у вас он ОДИНАКОВЫЙ
...
Рейтинг: 0 / 0
странное поведение cxCombobox
    #39653327
TsYekaterina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Belotsky Serge,
...
Рейтинг: 0 / 0
странное поведение cxCombobox
    #39653333
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Используйте TcxLookupComboBox и событие OnEditValueChanged
...
Рейтинг: 0 / 0
странное поведение cxCombobox
    #39653342
Belotsky Serge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TsYekaterinaBelotsky Serge,

Понятно, DimaBr правильно определил.

Не пойму только одно, думаете пользователю удобно будет ориентироваться в одинаковых свойствах? Здесь можно запутаться. Ну назовите один из них 'Тип разъемов', например.
...
Рейтинг: 0 / 0
странное поведение cxCombobox
    #39653346
TsYekaterina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Belotsky Serge,

это уже другая проблема, но они должны так называться, именно одинаково, спасибо! буду пробовать!
...
Рейтинг: 0 / 0
странное поведение cxCombobox
    #39653395
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsYekaterina,

У вас дерево. Поэтому для его отображения не нужно использовать ComboBox, который представляет просто список. Используйте TreeView или VirtualStringTree.
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / странное поведение cxCombobox
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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