Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.08.2015, 21:10
BelSergi BelSergi вне форума
Прохожий
 
Регистрация: 17.08.2015
Сообщения: 1
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Форма как Listbox у ComboBox

Привет всем!
По событию нажатия кнопки нужно отобразить форму как выпадающий listbox у combobox'а, т. е. без деактивации главного окна.
Использую компонент EhLib DBEditEh с кнопкой.
Собственно за основу взят тот же механизм что и у TCustonDBComboBoxEh.
Форма выводится, как и нужно поверх родителей, но при этом всё, что на форме недоступно (кнопки не кликаются, в текстовые поля курсор не ставится).
Это код всплывающей формы:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
constructor TForm2.create(Owner: TComponent);
begin
    inherited create(Owner);
    BorderStyle:=bsNone;
    Color:=clRed;
    FSizeGrip:=TSizeGripEh.Create(Self);
    with Sizes do
    begin
        Height:=SelGroups.Height;
        Width:=SelGroups.width;
    end;
    if Height = 0 then Height:= 300;
    if Width = 0 then Width:= 400;
 
    with FSizeGrip do
    begin
        Parent:=Self;
        TriangleWindow:=True;
    end;
 
end;
 
procedure TForm2.createParams(var params: TCreateParams);
begin
    inherited createParams(params);
    with params do
    begin
        Style := Style or WS_CLIPCHILDREN;
        ExStyle := (ExStyle or WS_EX_TOOLWINDOW or WS_EX_TOPMOST) and not WS_EX_CLIENTEDGE;
    end;
end;
 
procedure TForm2.createwnd;
begin
    inherited createwnd;
    windows.SetParent(Handle, 0);
    CallWindowProc(DefWndProc, Handle, WM_SETFOCUS, 0, 0);
end;
А это процедура кнопки:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TForm1.DBEditEh1EditButtons0Click(Sender: TObject;
    var Handled: Boolean);
var
    P: TPoint;
begin
    if TComponent(Sender).Owner = DBEditEh1 then
    begin
        newfrm:=TForm2.create(DBEditEh1);
        with newfrm do
        begin
            Parent:=DBEditEh1;//указываем nil форма получает фокус, что деактивирует главное окно
            P:=AlignDropDownWindow(DBEditEh1, newfrm, daLeft);
            SetWindowPos(Handle, HWND_TOP, p.X, p.Y, 0, 0, SWP_NOSIZE or SWP_SHOWWINDOW);
            Show;
            OnMouseUp:=FormMouseUp;
        end;
    end;
end;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:28.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025