![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
динамически содаваемые компоненты [D7, 2000]
delphim © (2006-11-14 08:58:00)Здравствуйте !
В моём компоненте на форме динамически создаются компоненты cb: TComboBox. Вот фрагмент кода:
cb := TComboBox.Create(self); // self - это type TForm компонента
cb.Name := 'dyn' + IntToStr(i);
cb.Parent := ScrollBox;
cb.Style := csDropDown;
cb.Text := '';
cb.Top := lb.Top; // lb: TLabel - ранее соданный компонент
cb.Width := colWidth + 16;
cb.Tag := i;
cb.TabOrder := i;
cb.Items := col.PickList;
cb.ItemIndex := col.KeyList.IndexOf(colData);
После выполнения ShowModal все компоненты cb: TComboBox имеют выделенный текст, хотя фокус ввода установлен на другом компоненте. Никак не могу сбросить это выделение текста. Метод cb.ClearSelection устраняет весь выделенный текст, но этого не нужно. Как сбросить выделенный текст ?
ЮЮ (2006-11-14 11:30:00) [1]А вот объясните, пожалуйста, Вашу фразу "если стиль csDropDown ...".
Этот стиль позволяет вводить любой текст, независимо от того есть он в списке, или нет. Пэтому, если хочется поставить colData, то и ставь.
Более того, двойное применение
ComboBox1.Text := '';
ComboBox1.ItemIndex := 1;
приводит к тому, что Text остется пустым
Почему при этом присвоение [cb.ItemIndex :=] выделяет текст, а [cb.Text :=] не выделяет ?
У меня не выделяет в обоих случаях (D7)
delphim (2006-11-14 11:16:00) [2]ЮЮ !
именно так и нужно. Заработало ! Ну, спасибо. А вот объясните, пожалуйста, Вашу фразу "если стиль csDropDown ...". Почему при этом присвоение [cb.ItemIndex :=] выделяет текст, а [cb.Text :=] не выделяет ?
ЮЮ (2006-11-14 10:50:00) [3]если стиль csDropDown, то почему
cb.ItemIndex := col.KeyList.IndexOf(colData);
а не
cb.Text := colData;
delphim (2006-11-14 10:15:00) [4]у меня delphi 7. Эффект есть. Если установить вместо cb.Style := csDropDown; значение cb.Style := csDropDownList; текст не выделяется. Но при этом пользователь не может вводить текст в cb.Text. А это удобно, т.к. при этом выполняется автопоиск в cb.Items. Не хочется от этого отказываться.
MBo (2006-11-14 10:03:00) [5]Не наблюдаю такого эффекта (D2006)
Подсвечивается только контрол в фокусе
delphim (2006-11-14 09:53:00) [6]MBo !
SelLength := 0; к сожалению, не сбрасывает выделение. Честно говоря, я пробовал все правдободобные методы cb: TComboBox. Ваделение пропадает после прохода (смена фокуса ввода с пом. клавиши Tab) по всем cb. Выполнить это скрытно в run time нежелательно, т.к. компоненты будут "моргать", хотя я не пробовал. Нужно как-то по другому.
MBo (2006-11-14 09:37:00) [7]SelLength := 0 подойдет?