Форум: "Основная";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];
Внизне отображаются компоненты Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.037 c