Форум: "Основная";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];
Внизвыделение в comboBox Найти похожие ветки
← →
Guest00 (2005-01-20 06:09) [0]Здравствуйте !
На ToolBar (TToolBar) размещёно несколько компонент:
dtList (TDateTimePicker), cbVehicle (TComboBox) и др.
cbVehicle.Items заполняется данными в Run Time (выполняется хранимая процедура). После этого устанавливается cbVehicle.ItemIndex := 0;
Плохо то, что cbVehicle выделяет текущие данные, как будто он имеет фокус ввода. Стиль cbVehicle.Style := csDropDown;
Если пройтись клавишей Tab по всем компонентам, выделение у cbVehicle сбрасывается, и дальше компонент работает как положено.
Никак не получается установить cbVehicle.ItemIndex <> -1; и сбросить выделение.
ClearSelection и DeleteSelected устанавливают cbVehicle.ItemIndex в значение -1.
← →
KilkennyCat © (2005-01-20 06:34) [1]может, проще убрать у него фокус ввода? Раз после табпробега работает как надо...
← →
guest00 (2005-01-20 08:58) [2]KilkennyCat !
Он не имеет фокуса ввода, но текст выделен.
Это сбивает меня и пользователей с правильного пути.
← →
Alcogol (2005-01-20 09:28) [3]может сделать setfocus другому компоненту.
(по-моему это тоже самое что и Tab).
← →
geust00 (2005-01-20 09:59) [4]фокуса ввода cbVehicle не имеет, а вот если установить
cbVehicle.Style := csDropDownList; то выделение пропадает, - то, что надо. Но это не решение. Я устанавливал фокус ввода другому компоненту dtList (TDateTimePicker), не помогло, конечно.
Этот comboBox всего-то не сбрасывает выделение.
← →
KilkennyCat © (2005-01-20 10:33) [5]Попробовал воспроизвести ситуацию. Изначально установил TabOrder = 0 другому элементу. Никаких выделений при любых изменениях. Седьмая Делфи, вин2000.
← →
guest00 (2005-01-20 11:37) [6]сейчас принесу текст.
← →
guest00 (2005-01-20 12:07) [7]Ситуация такова.
в главной форме
type
TForm1 = class(TForm)
...
public
waylist1: TWaylistType1;
...
end
есть TWaylistType1 - тоже форма, но с двумя конструкторами
type
TWaylistType1 = class(TForm)
...
public
constructor Create(AOwner: TComponent); overload; override;
constructor Create(AOwner: TComponent; AParent:TWinControl); reintroduce; overload;
...
end
В данном случае вызывается конструктор
waylist1 := TWaylistType1.Create(self, TabSheet1);
Этот код выполняется в конструкторе главной формы TForm1.
"неправильный" компонент cbVehicle расположен
на форме waylist1: TWaylistType1; и заполняется не в конструкторе формы TWaylistType1; а при установке её свойства ADOConn: TADOConnection.
В конструкторе главной формы читается ini - файл. Если в нём указан пароль, в конструкторе (в последних строках) выполняется попытка соединения с БД, т.е. устанавливается свойство waylist1.ADOConn: TADOConnection и заполняется этот cbVehicle.
(это случай 1)
Если пароль не указан, соединение с БД не выполняется, cbVehicle не заполняется. Соединение устанавливается пользователем активизацией соответствующих процедур.
(это случай 2)
В случае 2 всё [ok]. В случае 1 и возникает неожиданная ситуация.
Т. е. в том случае, когда заполнение comboBox происходит в конструкторе главной формы.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.033 c