![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Создаю программно два Combobox'a.
Код:
var FormModel: TFormModel; var i,j:integer; cmbx:TComboBox; adit:TEdit; combomeas:TComboBox; dtpckr1:TDateTimePicker; massiv_combo1:array[0..25] of TComboBox; massiv_combo2:array[0..25] of TComboBox; Код:
procedure TFormModel.AddEditsClick(Sender: TObject); var sql:string; begin i:=i+1; createedits(i); end; Код:
procedure TFormModel.GroupSelectProc(Sender:TObject);
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT [Название]');
ADOQuery1.SQL.Add('FROM purchase');
ADOQuery1.SQL.Add('WHERE [Группа] = '''+(Sender as TComboBox).Text+'''');
ADOQuery1.Open;
try // Заносим значения в список
ADOQuery1.First;
cmbx.Items.Clear;
cmbx.Text:='';
While not ADOQuery1.Eof do
begin
cmbx.Items.Add(ADOQuery1.Fields[0].Value);
ADOQuery1.Next;
end;
// AddEdits.Enabled:=true;
except
end;
cmbx.Visible:=true;
adit.Visible:=true;
combomeas.Visible:=true;
dtpckr1.Visible:=true;
end;
procedure TFormModel.createedits(offset: integer);
var edit: tedit;
combo:TComboBox;
dtpckr:TDateTimePicker;
n:integer;
begin
n:=offset;
//Название
combo := TComboBox.Create(FormModel);
combo.Parent := FormModel;
combo.Left:=NameM.Left;
combo.Top := EditModel.Top+30 * offset;
combo.Visible := false;
//combo.Name := 'comboG'+inttostr(offset);
combo.Width:= NameM.Width;
combo.text := '';
combo.AutoComplete := False;
combo.ItemIndex:=0;
cmbx:=combo;
massiv_combo1[n]:=combo;
//Группа
//combobox
combo := TComboBox.Create(FormModel);
combo.Parent := FormModel;
combo.Left:=Group.Left;
combo.Top := Group.Top+30 * offset;
combo.Visible := true;
combo.Name := 'comboG'+inttostr(offset);
combo.Width:= Group.Width;
combo.text := '';
combo.AutoComplete := False;
combo.ItemIndex:=0;
combo.OnEnter:=GroupEnterProc;
combo.OnSelect:=GroupSelectProc;
massiv_combo2[n]:=combo;
end;Я добавляю несколько Combobox'ov. При Событии OnSelect на любом из первых Combobox'ov список появляется только на последнем(см. вложениеexample.PNG) Что надо написать в событии OnSelect, чтобы это исправить? |
|
#2
|
|||
|
|||
|
Естественно.
Просто когда ты создаешь, то в переменную combx всегда присваивается ссылка на последний созданный. Тебе надо. 1. Для всех создаваемых комбобоксов в свойство Tag указать его номер. 2. В обработчике события OnSelect надо получить этот номер из свойства Tag и заполнять комбобокс с Tag = Tag текущего + 1. и все заработает ![]() |