Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
6-67936
IronWit
2003-05-15 11:09
2003.07.21
как из dll получить кол-во писем на pop3 сервере


3-67699
Тфьу
2003-06-26 22:56
2003.07.21
Как в Interbase задать формат даты?


14-68051
Soft
2003-07-04 17:55
2003.07.21
Давайте мерятся графическими редакторами


1-67811
McSimm2
2003-07-09 13:27
2003.07.21
Нехватка памяти


3-67735
Sceptik
2003-06-29 14:03
2003.07.21
Как удалить все записи из таблицы ????





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский