Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

не отображаются компоненты [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 на нем и отображается.


Наверх

Титульная страница Поиск, карта сайта Написать письмо