Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.02.18;
Скачать: [xml.tar.bz2];

Вниз

StringGrid + ComboBox   Найти похожие ветки 

 
BlankAlex   (2002-02-04 14:47) [16]

Я сделал так:
На основную форму бросил компонент, который выгляди как Combobox (у меня TDBEditEh из библиотеки DBgidEh),
по нажатию кнопки вызываю окно, в которое запихнул DBGrid, т.к. мне надо вытаскивать значения из БД. У тебя окно может содержать ListBox


Function SelectValueFromList(HostControl: TControl):Boolean ;
Begin
fm:=Tfm.Create(Application) ;
With fm Do
Try
AdjustDropDownForm(fm,HostControl);

Visible := True;
ModalResult := mrCancel;
While (Visible) Do Application.ProcessMessages;
If ModalResult = mrOk Then Result:=True ;
Finally
Release ;
End;
End ;

{Расчет координат выпадения окна
AdjustDropDownForm( <форма, которая имитирует открывающийся список> ,< компонент >);}
procedure AdjustDropDownForm(AControl : TControl; HostControl: TControl);
var
WorkArea: TRect;
HostP, PDelpta: TPoint;
begin
SystemParametersInfo(SPI_GETWORKAREA,0,@WorkArea,0);
HostP := HostControl.ClientToScreen(Point(0,0));
PDelpta := AControl.ClientToScreen(Point(0,0));

AControl.Left := HostP.x -2;
AControl.Top := HostP.y + HostControl.Height -2;

if (AControl.Width > WorkArea.Right - WorkArea.Left) then
AControl.Width := WorkArea.Right - WorkArea.Left;

if (AControl.Left + AControl.Width > WorkArea.Right) then
AControl.Left := WorkArea.Right - AControl.Width;
if (AControl.Left < WorkArea.Left) then
AControl.Left := WorkArea.Left;


if (AControl.Top + AControl.Height > WorkArea.Bottom) then
begin
if (HostP.y - WorkArea.Top > WorkArea.Bottom - HostP.y - HostControl.Height) then
AControl.Top := HostP.y - AControl.Height - 2;
end;

if (AControl.Top < WorkArea.Top) then
begin
AControl.Height := AControl.Height - (WorkArea.Top - AControl.Top);
AControl.Top := WorkArea.Top;
end;

if (AControl.Top + AControl.Height > WorkArea.Bottom) then
begin
AControl.Height := WorkArea.Bottom - AControl.Top;
end;
end;



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.02.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.44 MB
Время: 0.004 c
4-57260
Man In Red
2001-12-20 21:04
2002.02.18
Как отправить SMS?


14-57208
ReNoiZer
2001-12-24 17:49
2002.02.18
по поводу


14-57222
ллл
2001-12-20 00:08
2002.02.18
Индексация


4-57250
Стас
2001-12-19 20:12
2002.02.18
Программирование смарт карт


14-57191
dido
2001-12-28 09:09
2002.02.18
Хочу совет





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский