Форум: "Основная";
Текущий архив: 2003.10.06;
Скачать: [xml.tar.bz2];
Внизсоздание компонента Найти похожие ветки
← →
webpauk (2003-09-24 14:12) [0]ув. господа! Написал компонент, наследник Tpanel, на котором располагаю еще 2 Panel(Align 1:alTop; 2:alClient). Возникла прабл- когда я на этот компонент бросаю сверху еще какие-нибудь компоненты, то в DesignTime они видны, а при активации приложения исчезают. Кто знает что к чему?
← →
Skier (2003-09-24 14:34) [1]еще2Panel.ControlStyle := еще2Panel.ControlStyle + [ csAcceptsControls]
← →
Murad (2003-09-24 14:41) [2]2Skier
у TPanel при создании в ControlStyle есть csAcceptsControls
← →
Skier (2003-09-24 14:41) [3]Отбой. csAcceptsControls уже есть в конструкторе TCustomPanel.
> а при активации приложения исчезают
Поясни.
← →
webpauk (2003-09-24 14:45) [4]визуальные компоненты, которы я бросаю на этот компонент при запуске программы не видны. судя по всему они располагаются под одной из наложенных панелей
← →
willys (2003-09-24 14:46) [5]имхо, дело в Parent. при добавлении компонентов, их родителем становится твой компонент, и панели их просто перекрывают. отлавливай добавление дочерних компонентов и устанавливай им Parent"ом одну из тех 2 панелей.
← →
VAleksey (2003-09-24 14:47) [6]У них парент твоя главная панель, а должны быть панели, которые сверху :-))))
← →
webpauk (2003-09-24 14:52) [7]дык, прабл в том, что эти 2 panel вообще никак в новом компоненты не отображаются и для изменения их св-в добавляю в компонент новые properity. и каким образом для бросаемых сверху компонентов изменять parent?
← →
Skier (2003-09-24 14:57) [8]
> и каким образом для бросаемых сверху компонентов изменять
> parent?
Вообще-то есть вирт. метод SetParent, но зачем он тебе понадобился, для твоей задачи, IDE установит того родителя, на которого ты бросил компонент, но 1) если компонент - визуальный, и 2) если у потенциального родителя установлен флаг csAcceptsControls
Вообще расскажи про общую задачу. Пару слов...
← →
VAleksey (2003-09-24 14:58) [9]Я что-то в ступор впадаю...
А нафига вообще эти панели две нужны? Какие проперти? Какие св-ва панелей меняешь?
Может тогда как раз наоборот? Паренты эти панели, а посколько они не видимы то невидимы и компоненты которые на них находятсяю
← →
webpauk (2003-09-24 15:04) [10]2skier
в приложении задаю определленый стиль для множества панелек: главная панель, на ней-панель для отображения названия главной панели и панель на которую цепляются различные компоненты.
← →
webpauk (2003-09-24 15:08) [11]
type
TMyPanel1 = class(TPanel)
private
FMyPanel0, FMyPanel1, FMyPanel2: TPanel;
{ Private declarations }
protected
procedure Paint; override;
{ Protected declarations }
public
constructor Create(AOwner: TComponent); override;
{ Public declarations }
published
{ Published declarations }
end;
procedure Register;
implementation
constructor TMyPanel1.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
ControlStyle := ControlStyle - [csSetCaption];
Color:=clWhite;
BevelOuter:=bvNone;
BorderWidth:=2;
FMyPanel0:=TPanel.Create(Self);
FMyPanel0.Align:=alClient;
FMyPanel0.Color:=MyColorBackground;
FMyPanel0.BevelOuter:=bvNone;
FMyPanel0.Visible:=True;
FMyPanel0.BorderWidth:=1;
InsertControl(FMyPanel0);
FMyPanel1:=TPanel.Create(FMyPanel0);
FMyPanel1.ParentColor:=True;
FMyPanel1.Align:=alTop;
FMyPanel1.Font.Size:=10;
FMyPanel1.Font.Color:=MyColorFont;
FMyPanel1.Font.Style:=[fsBold];
FMyPanel1.Height:=15;
FMyPanel1.BevelOuter:=bvNone;
FMyPanel1.Visible:=True;
FMyPanel0.InsertControl(FMyPanel1);
FMyPanel2:=TPanel.Create(FMyPanel0);
FMyPanel2.Color:=clWhite;
FMyPanel2.Align:=alClient;
FMyPanel2.BevelOuter:=bvNone;
FMyPanel2.Visible:=True;
FMyPanel0.InsertControl(FMyPanel2);
end;
procedure TMyPanel1.Paint;
begin
inherited;
end;
← →
Alex_Raider (2003-09-24 15:14) [12]Убери InsertControl.
используй Parent
и не плоди такое количество панелей, так как каждая аллоцирует
окно. Это ни к чему.
Используй TGraphic / TCustom Control.
← →
webpauk (2003-09-24 15:21) [13]2Alex_Raider
хрен редьки не слаще. Эффект тот же
← →
willys (2003-09-24 16:14) [14]писал ведь уже... попробуй перехватить бросание компонентов...
т.е. в protected-секцию добавь:
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
и в ней уже пишешь:
procedure TMyPanel1.Notification(AComponent: TComponent; Operation: TOperation);
begin
if (Operation = opInsert) and (AComponent is TControl) then
AComponent.Parent := FMyPanel2;
end;
по идее должно сработать.
← →
VAleksey (2003-09-24 16:15) [15]Еще раз.
Какая из этих панелей является Parent-ом для компонентов, которые ты помещаешь на свой компонент?
← →
webpauk (2003-09-24 17:14) [16]2VAleksey
Fmypanel2
← →
webpauk (2003-09-24 17:16) [17]2willys
Undeclared identifier: "parent"
← →
willys (2003-09-24 17:18) [18]сорри, запамятовал :) надо так:
(AComponent as TControl).Parent := FMyPanel2;
← →
webpauk (2003-09-24 17:25) [19]2willys
компонент запустился, только при попытке чего-нибудь на нем разместить = страшно и нецензурно ругается (типа попытка записать в запрещенную область памяти)
← →
webpauk (2003-09-24 17:46) [20]а вообще можно прогр.путем разместить компонент выше(ниже) всех остальных?
← →
Юрий Зотов (2003-09-24 17:52) [21]> webpauk (24.09.03 17:46) [20]
BringToFront/SendToBack.
На общем Parent"е.
← →
webpauk (2003-09-24 18:30) [22]вобщем прабл следующий: panel, лежащий на родительском Panel имеющий свойство align=alclient во время запуска приложения закрывает собой остальные компоненты. может кто знает как от этого избавиться?
← →
VAleksey (2003-09-25 15:30) [23]Посмотри сюда:
constructor TsmPanel.Create(AOwner: TComponent);
var Pnl:TPanel;
begin
inherited Create(AOwner);
With TPanel.Create(AOwner) do
begin
Height := Round(Self.Height/3);
BevelInner := bvLowered;
BevelOuter := bvLowered;
Align := alTop;
ControlStyle := ControlStyle - [csAcceptsControls];
Parent:=Self;
end;
With TPanel.Create(Self) do
begin
Align := alClient;
BevelInner := bvRaised;
BevelOuter := bvRaised;
ControlStyle := ControlStyle - [csAcceptsControls];
Parent := Self;
end;
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.10.06;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.007 c