Форум: "Потрепаться";
Текущий архив: 2003.07.21;
Скачать: [xml.tar.bz2];
ВнизСоздание комонентов в Run-Time Найти похожие ветки
← →
J_S (2003-07-02 19:03) [0]Возникла проблема создания визуальных компонентов в RUN-TIME для D7
следующий код не проходит
......
var x:TImage;
begin
x:=TImage.create(Self);
x.Parent:=Form1; <--- access violation
может кто-то имел дело с подобным?
← →
Юрий Зотов (2003-07-02 19:07) [1]Вероятно, переменная Form1 содержит неверную ссылку. Возможно, вместо Form1 нужно указывать Self, но это зависит от задачи и от того, где написан этот код.
← →
panov (2003-07-02 19:07) [2]Вместо SELF nil не пробовала поставить?
← →
J_S (2003-07-02 19:21) [3]Вообщем-то элементарнейший случай
procedure TForm1.FormShow(Sender: TObject);
var Ed:TEdit;
begin
Ed:=TEdit.Create(Self);
Ed.Parent:=TWidgetControl(Form1);
end;
Вариации с Self и nil результата не дали:(
← →
Юрий Зотов (2003-07-02 19:27) [4]1. Точно, что переменная Form1 содержит ВЕРНУЮ ссылку?
2. Form1 действительно относится к классу TWidgetControl?
В общем, нужно видеть первую строку объявления класса TForm1 и код, в котором инициализируется переменная Form1.
← →
J_S (2003-07-02 19:45) [5]да правильно была помарочка - форма было порождена от TForm
исправила
TForm1 = class(TWidgetControl)
....
в файле проекта
Application.CreateForm(TWidgetControl, Form1);
ошибок больше нет - но и ничего не видно, даже формы...:(((...
← →
Юрий Зотов (2003-07-02 20:04) [6]Здесь все нормально, идем дальше - нужна первая строка объявления класса TWidgetControl.
← →
Anatoly Podgoretsky (2003-07-02 20:07) [7]J_S © (02.07.03 19:21)
Ed:=TEdit.Create(Self);
Ed.Parent:=TWidgetControl(Form1);
Здесь все равно правильнее
Ed.Parent := TWidgetControl(Self);
поскольку это потенциальная ошибка, часто итих Form1 оказывается больше одной, а еще лучше Ed.Parent := Self;
← →
reonid (2003-07-02 20:10) [8]>TForm1 = class(TWidgetControl)
а разве TForm - это не TWidgetControl?
(Нет у меня CLXa под рукой, не могу посмотреть)
>Application.CreateForm(TWidgetControl, Form1);
Это зря, создавать надо именно TForm1.
И попробуй, включив отладочные DCU, пройтись по
SetParent и посмотреть, где именно возникает ошибка.
← →
J_S (2003-07-02 20:19) [9]TWidgetControl = class(TControl) взяла из QControls.pas
← →
Юрий Зотов (2003-07-02 20:19) [10]Да, reonid прав, а я просмотрел. Конечно, надо
Application.CreateForm(TForm1, Form1);
← →
Юрий Зотов (2003-07-02 20:24) [11]> J_S © (02.07.03 20:19)
Дык... если логика построения CLX не отличается от VCL, то ведь тогда Form1 не будет ФОРМОЙ, а будет просто контролом. К тому же, еще и неоконным. То есть, быть чьим-то Parent"ом она никак не может, а вот ей самой нужен Parent.
← →
J_S (2003-07-03 11:31) [12]дык и что делать?
Вариант с TShape прошел причем Form1 есть наследник TForm
← →
Юрий Зотов (2003-07-03 11:44) [13]> J_S © (03.07.03 11:31)
Ясное дело, а что бы ему не пройти? Это же стандартный вариант. Создается обычная форма, а на ней обычный контрол. Все ОК.
Давайте начнем по порядку - а что вообще требуется? Понимаете, Вы даете обрывочную информацию, поэтому и тыркаемся туда-сюда. Расскажите о самой задаче. Думаю, после этого вопрос решится в 2 минуты. Код сам по себе очень простой, только нужно знать, к чему конкретно он будет прилеплен. От этого все детали и зависят.
← →
KSergey (2003-07-03 14:22) [14]Простите, сначала наездик: а за какие заслуги перед Родиной у задавателя этого вопроса имеется значек красненький?
По сути - прочитайте статью
http://www.delphikingdom.com/helloworld/runtime_comp.htm
"Жизнь и смерть в режиме run-time" - там по данной проблеме все аккуратно и по полочкам.
← →
MBo (2003-07-03 15:01) [15]>KSergey сначала наездик
Один (одна) из создателей сайта
← →
KSergey (2003-07-03 15:07) [16]> MBo © (03.07.03 15:01)
Значит создатели живьем имеют место быть, а как что переделать - так всегда один вопрос: а кто ж этим заниматься будет...
Ну да это так, брюзжание скорее.
← →
Mystic (2003-07-03 17:11) [17]> KSergey © (03.07.03 14:22)
Вот полный список :) http://www.delphimaster.ru/about.html
← →
KSergey (2003-07-03 17:56) [18]То что они перечислены - не равно их жизненности, так скажем ;)
Впрочем, от темы явно отвлекся, извините.
PS: я уточню, почему я так эту тему развиваю: не так давно поднял вопрос о большом размере страниц. Основным ответом было "а кто будет переделывать-то?". Я как-то всегда думал, что это забота создателей - пестовать свое детище, но по приведенному вопросу скложилось печатление, что все они уже почили (виртуально, разумеется, долгих им лет). А тут получается, что они все же имеют место быть, но тогда получается, что я неверно понимаю их цели и задачи...
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.07.21;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.008 c