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

Вниз

Создание комонентов в 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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.035 c
14-67969
Sergey26
2003-07-05 17:39
2003.07.21
Палитра компонентов


14-67973
zep
2003-07-05 23:45
2003.07.21
Разрыв Online


4-68108
Frankenstein
2003-05-14 12:58
2003.07.21
systray


3-67663
Senator
2003-06-26 10:03
2003.07.21
IBX


14-68050
dimodim
2003-07-04 12:57
2003.07.21
Как установить GlSCENE под 5-й делфи СРОЧНО!