Сосбственно сабж, хочу в свой класс(компоненту) добавить что нить типа Label,Edit или прочих прелестей из VCL. Обьявления типа TLabel* Label; Label = new TLabel(this);
не приводят к данному результату.И такой вопрос как управлять данными компонентами в последующем, координаты скажем привязывать к чему?
26 июня 2009 в 19:00
ну как программист я очень весьма начинанющий, даже очень. Ну раньше писал на C++ Builder на делфи перешел когда курсовик по Базам данных писал, как таковое програмирование было 1семестр в универе и все, а хочеться большего узнать, вот и как то делаю
26 июня 2009 в 17:03
А можно теперь я задам тупой вопрос: на каком языке ты писал раньше и что заставило тебя перейти на дельфи?:)
26 июня 2009 в 17:01
Огромное спасибо, и извините за тупые вопросы*Sorry*
26 июня 2009 в 13:01
lab:= TLabel.Create(self);
lab.Parent:= self;
self – это указатель на текущий экземпляр класса
Свойства Left и Top задаются относительно родительского компонента, то есть если label находится внутри твоего компонента, то и координаты нужно указывать относительно него
26 июня 2009 в 8:01
а вот такой вопрос, как в классе, не на форме, задать lab:= TLabel.Create();
lab.Parent:=TWinControl(); так что бы он создавался прям в моем классе.
Скажем есть класс TPanelNew и уже в него нада запихнуть тот самый лейбл.
lab:= TLabel.Create();
lab.Parent:=TWinControl(); //вставки туда типа TPanelNew,PanelNew.TPanelNew,PanelNew к успеху не приводят.
Сразу извиняюсь за нубские вопросы
lab.Left:= 5;
lab.Top:= 10; //как задать относительно кнопки создаваемой опять же..
lab.Left:=CountButton.Leftне будет работать
так вот вопрос сводиться к общему как в своем классе определить создаваемый компонент,то есть получать уже экземпляр или ссылку на будущий экземпляр
25 июня 2009 в 23:01
чисто сам по себе думаю косяк в том что у меня формы как таковой то в классе нету, компонента пишеться чисто отдельно, и он не может унаследовать lab.Parent:= TWinControl(TLabel);
25 июня 2009 в 23:01
Все огромное спасибо за помощь.Бился пару дней над этим вопросом.
lab:= TLabel.Create(self);
lab.Parent:=TWinControl(Aowner);
lab.Left:= 5;
lab.Top:= 10;
lab.Caption:= 'ля-ля';
вот так будет работать
25 июня 2009 в 23:00
Вот как у меня реализовано динамическое создание кнопок
btns[m]:= TButton.Create(paramsbox);
btns[m].Height:= btnheight;
btns[m].Width:= btnwidth;
btns[m].OnClick:= ShowDialog;
btns[m].Parent:= paramsbox;
, где paramsbox: TScrollBox; , а btns – динамический массив указателей на кнопки
25 июня 2009 в 22:05
Однако ругаеться
lab:= TLabel.Create(form);
lab.Parent:= form;
Вот еще обьявил перед классом
var lab: TLabel;
type
TCountBtn = class(TButton)
lab.Parent:= form;//требует наследника TWinControl
пишу
lab:= TLabel.Create(Aowner);//писал TObject
lab.Parent:= TWinControl(TLabel);
вылетает с ошибкой когда добавляешь на форму
25 июня 2009 в 22:05
lab.Parent:= TWinControl(TLabel);
Ты пытаешься один Label запихнуть в другой Label, что невозможно, т.к. компонент Label не является контейнером. А форма – является
25 июня 2009 в 21:01
Во-первых, label – зарезервированное слово, его использовать нельзя.
А вообще в дельфи это делается так:
lab:= TLabel.Create(form);
lab.Parent:= form;
lab.Left:= 5;
lab.Top:= 10;
lab.Caption:= 'Ну что вы смотрите на меня?!';