Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.12.03;
Скачать: [xml.tar.bz2];

Вниз

динамически содаваемые компоненты   Найти похожие ветки 

 
delphim   (2006-11-14 08:58) [0]

Здравствуйте !
В моём компоненте на форме динамически создаются компоненты 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 устраняет весь выделенный текст, но этого не нужно. Как сбросить выделенный текст ?


 
MBo ©   (2006-11-14 09:37) [1]

SelLength := 0 подойдет?


 
delphim   (2006-11-14 09:53) [2]

MBo !
SelLength := 0; к сожалению, не сбрасывает выделение. Честно говоря, я пробовал все правдободобные методы cb: TComboBox. Ваделение пропадает после прохода (смена фокуса ввода с пом. клавиши Tab) по всем cb. Выполнить это скрытно в run time нежелательно, т.к. компоненты будут "моргать", хотя я не пробовал. Нужно как-то по другому.


 
MBo ©   (2006-11-14 10:03) [3]

Не наблюдаю такого эффекта (D2006)
Подсвечивается только контрол в фокусе


 
delphim   (2006-11-14 10:15) [4]

у меня delphi 7. Эффект есть. Если установить вместо cb.Style  := csDropDown; значение cb.Style  := csDropDownList; текст не выделяется. Но при этом пользователь не может вводить текст в cb.Text. А это удобно, т.к. при этом выполняется автопоиск в cb.Items. Не хочется от этого отказываться.


 
ЮЮ ©   (2006-11-14 10:50) [5]

если стиль csDropDown, то почему
 cb.ItemIndex := col.KeyList.IndexOf(colData);
а не
 cb.Text := colData;


 
delphim   (2006-11-14 11:16) [6]

ЮЮ !
именно так и нужно. Заработало ! Ну, спасибо. А вот объясните, пожалуйста, Вашу фразу "если стиль csDropDown ...". Почему при этом присвоение [cb.ItemIndex :=] выделяет текст, а [cb.Text :=] не выделяет ?


 
ЮЮ ©   (2006-11-14 11:30) [7]

А вот объясните, пожалуйста, Вашу фразу "если стиль csDropDown ...".

Этот стиль позволяет вводить любой текст, независимо от того есть он в списке, или нет. Пэтому, если хочется поставить colData, то и ставь.
Более того, двойное применение  
 ComboBox1.Text := "";
 ComboBox1.ItemIndex := 1;
приводит к тому, что Text остется пустым

Почему при этом присвоение [cb.ItemIndex :=] выделяет текст, а [cb.Text :=] не выделяет ?

У меня не выделяет в обоих случаях (D7)



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

Форум: "Начинающим";
Текущий архив: 2006.12.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.054 c
2-1163759518
Ангела
2006-11-17 13:31
2006.12.03
Вопрос по FillChar


15-1163685032
Андрей Сенченко
2006-11-16 16:50
2006.12.03
Работа с XML на Delphi. Начинающему :)


2-1163530310
Vasiliy
2006-11-14 21:51
2006.12.03
Перекрыл GetClientRect, отрисовывается не весь компонент


15-1163279958
lookin
2006-11-12 00:19
2006.12.03
Еврохоккейтур - матч второй


15-1162764541
kaliv
2006-11-06 01:09
2006.12.03
кпк и делфи





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский