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

Вниз

Компонент Tpanel и его загадки ;)   Найти похожие ветки 

 
Муть   (2002-12-13 13:25) [0]

Все знают, что такое TPanel.
Я решил написать компонент на его основе. Наследован от Tpanel, он способен хранить список панелей внутри себя. Управлять количеством панелей можно через свойство row. Но возникла интересная проблема.
Ставляю я его на форму, делаю row = 3, например. Он показывает 3 панели. Я добавляю в дизайнере в эти панели пару радиобоксов, например. Запускаю - вижу три панели, но без радиобоксов. Я понимаю, что я что-то неправильно делаю (панели-то создаются динамически). Что именно я делаю неправильно?


 
zavdim   (2002-12-13 13:27) [1]

Parent и прочее как?


 
Муть   (2002-12-13 13:32) [2]

вот код
type
TPanelEx = class(TPanel)
private
panels:tlist;
frows:integer;
parent:tcomponent;
procedure setrows(x:integer);
procedure delpanel(x:integer);
function addpanel:tpanel;
protected
{ Protected declarations }
public
published
property rows:integer read frows write setrows;
constructor create(AOwner:TComponent); override;
end;
///////////////
function TPanelEx.addpanel: tpanel;
begin
result:=tpanel.Create(self);
self.InsertControl(result);
result.Align:=alTop;
end;

constructor TPanelEx.create(AOwner: TComponent);
begin
inherited create(AOwner);
panels:=tlist.create;
rows:=1;
end;

procedure TPanelEx.delpanel(x: integer);
var p:tpanel;
begin
p:=panels[x];
p.Destroy;
panels.delete(x);
end;

procedure TPanelEx.setrows(x: integer);
var z:integer;
begin
if frows<>x then
if x>0 then begin
if frows>x then begin
repeat
delpanel(panels.count-1);
until panels.count=x;
end else begin
repeat
panels.add(addpanel);
until panels.count=x;
end;
frows:=x;
end;
end;


 
Муть   (2002-12-13 15:03) [3]

.


 
Игорь Шевченко ©   (2002-12-13 15:35) [4]

Наверное, то, что ты вставляешь в панели, не сохраняется...Или сохраняется, но во время загрузки им не присваивается Parent, так как твои панели загружаются позже...IMHO, разумеется, я всего кода не вижу...


 
AZ ©   (2002-12-13 20:16) [5]

IMHO, просто все, что Вы вставляете в панели, остается на заднем плане. Попробуйте поманипулировать с планами.


 
Дремучий ©   (2002-12-13 20:43) [6]

Я добавляю в дизайнере в эти панели пару радиобоксов...
в каком дизайнере? своем или дизайнере форм Делфи?
если в своем, то попробуйте так...

function TPanelEx.addpanel: tpanel;
begin
result:=tpanel.Create(self);
self.InsertControl(result);
result.Align:=alTop;
result.Parent = self;
end;


если в Делфи, то ясен перец, что вы ничего не увидите....
потому что добавляете не модифицированную панельку(с радиобоксами), а обыкновенный tpanel



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

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

Наверх




Память: 0.48 MB
Время: 0.006 c
14-1878
Сергей Макаров
2002-12-12 17:16
2003.01.02
И еще одна задачка.


14-1897
Сергей
2002-12-11 18:26
2003.01.02
Случайная величина


1-1806
smok_er
2002-12-20 14:24
2003.01.02
Открытие файла только для чтения


14-1920
de2
2002-12-12 15:15
2003.01.02
подскажите компонент


1-1794
ДмитрийК.
2002-12-20 14:26
2003.01.02
Прекращение выполнения операций на основной форме