![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
создание своего combobox [D7, WinXP]
snake2003 © (2004-06-10 13:12:00)выпадающее окно становится активным при выборе мышкой - как такое предотвратить ? смотрел в исходниках вроде так же сделал.
привожу свой код - может чего недопонял или проглядел - ткните носом.
procedure TSnPopupWindow.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do
begin
Style := WS_POPUP or WS_BORDER or WS_CLIPCHILDREN;
ExStyle := WS_EX_TOOLWINDOW or WS_EX_TOPMOST;
WindowClass.Style := CS_SAVEBITS;
end;
end;
procedure TSnPopupWindow.ShowPopup(Origin: TPoint);
begin
SetWindowPos(Handle, HWND_TOP, Origin.X, Origin.Y, 0, 0,SWP_NOSIZE or SWP_NOACTIVATE or SWP_SHOWWINDOW);
FVisible := True;
end;
constructor TSnComboEdit.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
ControlStyle := ControlStyle - [csSetCaption];
FDropDownRows := 8;
FPopup := TSnPopupWindow.Create(Self);
with FPopup do
begin
Parent := Self;
Width := Self.Width;
Height := FDropDownRows*19;
Visible := False;
end;
FPopupVisible := False;
end;
procedure TSnComboEdit.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do
begin
if NewStyleControls and Ctl3D
then ExStyle := ExStyle or WS_EX_CLIENTEDGE
else Style := Style or WS_BORDER or WS_CLIPCHILDREN;
end;
end;
dm (2004-06-25 11:59:00) [1]procedure DropDownListBox.ONEnter;
begin
parent.setfocus; // parent = EDIT, к которому привязан ListBox
end;
Игорь Шевченко (2004-06-21 14:17:00) [2]
> а по поводу WS_CHILD кто может объяснить ?
Задай свой вопрос в отдельной ветке и в другой конференции, например, в WinAPI
snake2003 (2004-06-15 17:18:00) [3]с активацией окна поборолся так
procedure TSnPopupWindow.WMMouseActivate(var Msg: TMessage);
begin
Msg.Result := MA_NOACTIVATE;
end;
а по поводу WS_CHILD кто может объяснить ?
snake2003 (2004-06-15 11:16:00) [4]и еще вопрос(для общего развития): почему на C++ когда создают выпадающее окно пишут WS_CHILD а на дельфях WS_POPUP, пробовал создавать как в си так окно просто не отображается. в чем тут загвоздка ?
snake2003 (2004-06-15 11:10:00) [5]этот пример я уже видел - там та же проблема. в обсуждении рекомендуют разобраться с флагами - но у меня как раз это и не получается.
malkolinge (2004-06-14 12:44:00) [6]http://www.delphikingdom.com/helloworld/treecombobox.html
snake2003 (2004-06-11 14:23:00) [7]а в TComboBoxEx нельзя изменять мышкой размер выпадающего окна.
к тому же мне интересен принцип работы таких компонентов. я потом планирую на выпадающем окне отображать несколько других компонентов.
Игорь Шевченко (2004-06-11 13:52:00) [8]snake2003 (11.06.04 11:44)
> охота сдела комбо как в IE
TComboBoxEx
snake2003 (2004-06-11 11:44:00) [9]охота сдела комбо как в IE может кто подскажет где пример глянуть
snake2003 (2004-06-11 11:00:00) [10]прикольно конечно - Игорь Шевченко. но это не ответ, мне надо что бы активным оставался edit.
Игорь Шевченко (2004-06-10 16:40:00) [11]
> выпадающее окно становится активным при выборе мышкой
А каким оно должно становиться, если в него мышкой ткнули ?