есть стандартные классы TDriveComboBox(показывает доступные диски), TDirictoryListBox(связываем с ДрайвБоксом и отображает папки на указанном диске), TFileListBox(связываем с ДирБоксом и отображает файлы в указаной папке).
Задача: хочу связать TDriveComboBox напрямую с TFileListBox
Для этого создаём потомка от TDriveComboBox и называем его скажем MyDriveComboBox. Вот его описание:
Цитата:
MyDriveComboBox = class(TDriveComboBox)
FDirList : TFileListBox;
constructor Create;
procedure SetDirListBox(Value: TFileListBox); override;
end;
|
(у родителя FDirList указывает на TDirictoryListBox)
немного изменяем метод SetDirListBox:
Цитата:
procedure MyDriveComboBox.SetDirListBox (Value: TFileListBox);
begin
if FDirList <> nil then FDirList.FDriveCombo := nil;
FDirList := Value;
if FDirList <> nil then
begin
FDirList.FDriveCombo := Self;
FDirList.FreeNotification(Self);
end;
|
после этого компилятор сообщает что DriveComboBox1: MyDriveComboBox на саом деле должна быть типа ТDriveComboBox. Игонрируем. потом вылазят ошибки инициализации и прочие. может кто нибудь сможет подсказать как это всё сделать проще или в чём тут ошибка.