Форум: "Потрепаться";
Текущий архив: 2003.01.02;
Скачать: [xml.tar.bz2];
ВнизКомпонент 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.004 c