Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1222800406
axis_of_evil
2008-09-30 22:46
2008.12.07
как получить список процессов ..


2-1225199838
DJones
2008-10-28 16:17
2008.12.07
ghjспро опрос прибора на TTimer


2-1224861382
AlexDan
2008-10-24 19:16
2008.12.07
ProgressBar - изменение цвета и размеров


2-1225178385
ther
2008-10-28 10:19
2008.12.07
Создание компонентов на главнойформе из dll


15-1223172127
axd
2008-10-05 06:02
2008.12.07
MySQL работает не так как надо





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский