![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
не отображаются компоненты [D7, WinXP]
snake2003 © (2004-06-18 11:29:00)создал потомка от TCustomControl
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
Self.Width := FEditor.Width;
SetWindowPos(Handle, HWND_TOP, Origin.X, Origin.Y, 0, 0,SWP_NOSIZE or SWP_NOZORDER or SWP_NOACTIVATE or SWP_SHOWWINDOW);
FList := TSnPopupList.Create(Self);
with FList do
begin
Parent := Self;
Visible := True;
Left := 0;
Top := 0;
Width := Self.Width - GetSystemMetrics(SM_CXVSCROLL);
Height := Self.Height;
Color := clRed;
end;
FEditor.SetFocus;
FVisible := True;
end;
так вот после этого их не видно, но если пишу так:
FList.Parent := FEditor;
то список отображается на FEditor в чем тут косяк ?
snake2003 (2004-06-18 18:34:00) [1]мля. день что ли неудачный сегодня. пришлось перезагрузить тачку и после перезагрузки все заработало - че было не знаю.
всем большое спасибо. особенно TUser.
snake2003 (2004-06-18 18:17:00) [2]вот и мне кажется что должно работать.
если я этот кусок кода выношу из компонента в форму то все ОК или ставлю родителем все что угодно кроме своего выпадающего списка то тоже все ОК. вот я и парюсь.
TUser (2004-06-18 17:58:00) [3]А так все должно работать. Например, так работает
procedure TForm1.FormCreate(Sender: TObject);
var Pan: TPanel;
begin
Pan:=TPanel.Create(Application);
with Pan do begin
Parent:=self;
Left := 0;
Top := 0;
Width := Self.Width - GetSystemMetrics(SM_CXVSCROLL);
Height := Self.Height;
end;
end;
TUser (2004-06-18 17:51:00) [4]Мой предыдуший пост считай навеянным Старым Похмельником *)
TUser (2004-06-18 17:49:00) [5]Ну, так ты писал выше (я так понял) про самого себя. А то, что родителем (но не предком - вот пойми эту терминологию :) является объект 'на котором он расположен', так это всегда так.
Вот здесь Self - это FList, т.к. with
> FList := TSnPopupList.Create(Self);
> with FList do
> begin
> Parent := Self;
snake2003 (2004-06-18 17:37:00) [6]я код не правильный привел вверху пишу так:
FList := TSnPopupList.Create(Self);
FList.Parent := Self;
т.е. родителем является не сам объект, а окно на котором он расположен.
а в TControl имеется в виду что нельзя на себя ссылаться.
TUser (2004-06-18 12:40:00) [7]procedure TControl.SetParent(AParent: TWinControl);
begin
if FParent <> AParent then
begin
if AParent = Self then
raise EInvalidOperation.CreateRes(@SControlParentSetToSelf);
Увы, Ж:)
snake2003 (2004-06-18 12:10:00) [8]а мне надо чтобы родителем был Self т.е. само выпадающее окно
pasha_golub (2004-06-18 12:08:00) [9]Все правильно, родитель FEditor на нем и отображается.