Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Процедура не хочет выполняться


Автор: Pakshin A. S. 22.10.2004, 19:24
Код

procedure CreateTab(TabName: string;var OwnerComponent: TComponent;var Parent: TWinControl;var PageControl: TPageControl; {const Form: TWinControl;} TabItems: TTabItems);
var
TabSheet: TTabSheet;
i: integer;
CreatePos:integer;
procedure CreateOnTab(const id:TItemKind; caption:string);
var
 Lbl: TLabel;
 Edt: TEdit;
 Check: TCheckBox;
begin
 case id of
   ik_CheckBox: begin
                 Check:=TCheckBox.Create(TabSheet);
                 Check.Left:=5;
                 Check.Top:=CreatePos;
                 Check.Caption:=caption;
                 Check.Name:=TabName + 'Check' + IntToStr(i);
                 Check.Parent:=TabSheet;
                 inc(CreatePos, Check.Height + 3)
                end;
      ik_Label: begin
                 Lbl:=TLabel.Create(TabSheet);
                 Lbl.Left:=5;
                 Lbl.Top:=CreatePos;
                 Lbl.Caption:=caption;
                 Lbl.Name:=TabName + 'Lbl' + IntToStr(i);
                 Lbl.Parent:=TabSheet;
                 inc(CreatePos, Lbl.Height + 3)
                end;
  ik_LabelEdit: begin
                 Lbl:=TLabel.Create(TabSheet);
                 Lbl.Left:=5;
                 Lbl.Top:=CreatePos;
                 Lbl.Caption:=caption;
                 Lbl.Name:=TabName + 'Lbl' + IntToStr(i);
                 Lbl.Parent:=TabSheet;
                 inc(CreatePos, Lbl.Height + 1);
                 Edt:=TEdit.Create(TabSheet);
                 Edt.Left:=5;
                 Edt.Top:=CreatePos;
                 Edt.Name:=TabName + 'Edt' + IntToStr(i);
                 Edt.Parent:=TabSheet;
                 inc(CreatePos, Edt.Height + 3)
                end;
  end
end;
begin
TabSheet:=TTabSheet.Create(OwnerComponent);
TabSheet.Parent:=Parent;
TabSheet.PageControl:=PageControl;
TabSheet.Name:='Tab_' + TabName;
TabSheet.Caption:=TabName;
for i:= 0 to Length(TabItems) - 1 do
  CreateOnTab(TabItems[i].ItemKind, TabItems[i].ItemText)
end;

Как уже успели догадаться - динамическое создание TabSheet'а и компонентов на нем.
Проблема такова: TabSheet успешно создается, но компоненты на нем нет!!! Что самое забавное, если описание процедуры, проведенной выше, засунуть в описание класса формы, то всё работает!!! А мен надо всю эту потеху отсоединить от формы, чтобы работало само по себе! Где ошибаюсь? :stena :(

Автор: Alex 22.10.2004, 19:44
не задоно начальное значение переменной CreatePos

Автор: p0s0l 22.10.2004, 19:45
Явно не хватает строчки CreatePos := 0;...

Добавлено @ 19:46
Опередили :)

Автор: Pakshin A. S. 22.10.2004, 19:49
А как насчет этого?
Что самое забавное, если описание процедуры, проведенной выше, засунуть в описание класса формы, то всё работает!!!
Добавлено @ 19:58
Ладно... можно считать тему закрытой!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)