Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.04;
Скачать: CL | DM;

Вниз

не отображаются компоненты   Найти похожие ветки 

 
snake2003   (2004-06-18 11:29) [0]

создал потомка от 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 в чем тут косяк ?


 
pasha_golub ©   (2004-06-18 12:08) [1]

Все правильно, родитель FEditor на нем и отображается.


 
snake2003   (2004-06-18 12:10) [2]

а мне надо чтобы родителем был Self т.е. само выпадающее окно


 
TUser ©   (2004-06-18 12:40) [3]

procedure TControl.SetParent(AParent: TWinControl);
begin
 if FParent <> AParent then
 begin
   if AParent = Self then
     raise EInvalidOperation.CreateRes(@SControlParentSetToSelf);

Увы, Ж:)


 
snake2003   (2004-06-18 17:37) [4]

я код не правильный привел вверху пишу так:
FList := TSnPopupList.Create(Self);
FList.Parent := Self;
т.е. родителем является не сам объект, а окно на котором он расположен.

а в TControl имеется в виду что нельзя на себя ссылаться.


 
TUser ©   (2004-06-18 17:49) [5]

Ну, так ты писал выше (я так понял) про самого себя. А то, что родителем (но не предком - вот пойми эту терминологию :) является объект "на котором он расположен", так это всегда так.

Вот здесь Self - это FList, т.к. with

>  FList := TSnPopupList.Create(Self);
>  with FList do
>  begin
>    Parent  := Self;


 
TUser ©   (2004-06-18 17:51) [6]

Мой предыдуший пост считай навеянным Старым Похмельником *)


 
TUser ©   (2004-06-18 17:58) [7]

А так все должно работать. Например, так работает
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;


 
snake2003   (2004-06-18 18:17) [8]

вот и мне кажется что должно работать.
если я этот кусок кода выношу из компонента в форму то все ОК или ставлю родителем все что угодно кроме своего выпадающего списка то тоже все ОК. вот я и парюсь.


 
snake2003   (2004-06-18 18:34) [9]

мля. день что ли неудачный сегодня. пришлось перезагрузить тачку и после перезагрузки все заработало - че было не знаю.
всем большое спасибо. особенно TUser.



Страницы: 1 вся ветка

Текущий архив: 2004.07.04;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.049 c
1-1087338679
Алексей
2004-06-16 02:31
2004.07.04
Чем отличается функция GetCurrentProcessId от GetCurrentThreadId


8-1082041971
Pa5ha
2004-04-15 19:12
2004.07.04
ColorKey&amp;Direct3D


1-1087922647
zep
2004-06-22 20:44
2004.07.04
Edit


1-1087504411
Gear
2004-06-18 00:33
2004.07.04
Статическая линковка lib файлов


1-1087456832
Virus
2004-06-17 11:20
2004.07.04
Скрытие окошка копирования