Форум по 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.
Форма выводится, как и нужно поверх родителей, но при этом всё, что на форме недоступно (кнопки не кликаются, в текстовые поля курсор не ставится).
Это код всплывающей формы:
Код:
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;
А это процедура кнопки:
Код:
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, время: 03:59.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter