Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.188.44.223] |
|
Сообщ.
#1
,
|
|
|
Помогите плз. Я хочу написать свой TDriveBoxEx на основе TComboBoxEx. Насколько я понял там нужно новые классы составлять на основе TComboExItem, TComboExItems, TComboBoxExStrings. Вообщем компонент в каком-то смысле работает, но в любом случае ошибка появляется. Может кто знает как компоненты на основе TComboBoxEx составлять?
|
Сообщ.
#2
,
|
|
|
Наследуйся от TCustomComboBoxEx и перекрывай нужные тебе методы...
|
Сообщ.
#3
,
|
|
|
Мне нужны скорее не методы, а свойства. Вообщем у меня что-то получилось, только ошибка постоянно вылазиет при открытии списка.
Прикреплённый файлDriveComboBoxEx.rar (1.35 Кбайт, скачиваний: 170) |
Сообщ.
#4
,
|
|
|
Посидели мы с Jack128 на пару и нашли ошибку.
В конструкторе TCustomComboBoxEx есть такая строка: Items := TComboBoxExStrings.Create(Self); Это абсолютно неверный код, так как для определения типа создаваемого класса есть метод function GetItemsClass: TCustomComboBoxStringsClass; override; function TCustomComboBoxEx.GetItemsClass: TCustomComboBoxStringsClass; begin Result := TComboBoxExStrings; end; По логике именно его нужно было тебе перекрыть и все заработало, но вся проблема в первой строке, если бы там было вот так: Items := GetItemsClass.Create(Self); function TCollection.Add: TCollectionItem; begin Result := FItemClass.Create(Self); Added(Result); end; Добавлено Поэтому наследуйся от TCustomCombo и реализуй все правильно... Добавлено А, ну и последнее, вылет был у тебя на вот этой строчке: FDrive := c; Так как TDriveItem не создался, а вместо него создался TComboExItem, то соответственно он и слыхам не слыхивал ни о каком FDrive... |
Сообщ.
#5
,
|
|
|
TCustomCombo - далековато будет.
Спасибо и на этом. |