Форум: "Начинающим";
Текущий архив: 2008.12.07;
Скачать: [xml.tar.bz2];
ВнизTDBLookupComboBox открыть список сверху от эдита Найти похожие ветки
← →
Fynjy84 (2008-10-28 08:18) [0]Нужно сделать для конкретного комбика сделать открывание списка вверх
в исходном коде компонентаprocedure TDBLookupComboBox.DropDown;
var
P: TPoint;
I, Y: Integer;
S: string;
ADropDownAlign: TDropDownAlign;
begin
.....
P := Parent.ClientToScreen(Point(Left, Top));
Y := P.Y + Height;
if Y + FDataList.Height > Screen.Height then Y := P.Y - FDataList.Height;
......
end;
Вот как бы мне сделать, чтобы не лезть варварски в этот код заставить комбик выдавать список вверх?
З.Ы. Нужно это для того чтобы список не уезжал под панель задач, сейчас он опускается вниз за пределы формы и уезжает под панель задач
← →
Fynjy84 (2008-10-29 09:57) [1]Видимо нужно объявить наследника от TDBLookupComboBox ... а вот как переопределить метод DropDown?
Подскажите куда копать, пожалуйста.
← →
Fynjy84 (2008-10-29 10:15) [2]Вопрос снимается
Бросил в папку с проектом dbctrls.pas
if Y + FDataList.Height > Screen.Height then Y := P.Y - FDataList.Height;
заменил на
if Y + FDataList.Height > Screen.WorkAreaHeight then Y := P.Y - FDataList.Height;
в принципе и с таким костылём пойдёт )))))
← →
sniknik © (2008-10-29 10:29) [3]> а вот как переопределить метод DropDown?
стандартно. переопределение виртуальных методов это основа ООП.
> Подскажите куда копать, пожалуйста.
в исходники vcl...
скопируй к себе в проект модуль DBCtrls (это чтоб не править генофонд),
найди процедуру procedure TDBLookupComboBox.DropDown;
в ней строчкуif Y + FDataList.Height > Screen.Height then Y := P.Y - FDataList.Height;
поменяй ее наif Y + FDataList.Height > Screen.WorkAreaHeight then Y := P.Y - FDataList.Height;
все.
если есть желание то можешь это исправление отдельным компонентом сделать... перенести весь код из DropDown в свой перекрытый, inherided не делать. все просто.
← →
sniknik © (2008-10-29 10:30) [4]долго писал...
← →
Правильный$Вася (2008-10-29 11:34) [5]
> Нужно это для того чтобы список не уезжал под панель задач,
> сейчас он опускается вниз за пределы формы и уезжает под
> панель задач
а поставить комбик повыше?
а то понадобится тебе еще один сделать, вверху формы, а он будет уезжать за верхний край экрана...
← →
sniknik © (2008-10-29 13:34) [6]> а он будет уезжать за верхний край экрана...
не будет.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.12.07;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c