Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.12.07;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
2-1225112211
X-Type
2008-10-27 15:56
2008.12.07
COM (Initialize)


15-1221852310
DevilDevil
2008-09-19 23:25
2008.12.07
один svchost.exe жрёт процессор. Что делать ?


6-1196058046
Alex_C
2007-11-26 09:20
2008.12.07
Немогу соединиться с SNTP сервером


15-1223040224
Николай_
2008-10-03 17:23
2008.12.07
Сильно грелся процессор - в чем могло быть дело?


2-1225095258
Zhekson
2008-10-27 11:14
2008.12.07
MessageDlg, три варианта ответа, да, нет, отмена.