Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];

Вниз

TRichEdit   Найти похожие ветки 

 
iviom   (2007-03-01 17:30) [0]

Народ, просто руки опускаются. Что с этим компонентом?
Ситуация такая. Форма1. Из нее открывается Форма2. На форме2 лежит вышеупомянутый компонент. Ни одного!! свойства не трогала. Все по умолчанию. Из формы1 открываю форму2. Закрываю форму2. Закрываю форму1 - ошибка!

"Access violation as address..."

Почему?

Цбираю с формы2 этот компоннт. та же последовательность действий - ошибка нет.

В чем тут дело? Он не работает с настройками по умолванию? Что не так?


 
Германн ©   (2007-03-01 17:35) [1]


> Что с этим компонентом?

С "этим компонентом" всё в порядке.


 
Ega23 ©   (2007-03-01 17:36) [2]

Как создаются формы 1 и 2?


 
iviom   (2007-03-01 17:47) [3]


> Как создаются формы 1 и 2?


Форма1 создается по умолчанию, то есть она главная в проекте и самим проектос создается и запускается (возможно криво говорю).

Форма 2 создается так (по нажатию кнопки на форме1):
var
 Form2: TForm2;
begin
Form2:= TForm2.Create(nil);
Form2.ShowModal;
end;

На форме2  лежит компонент TRichEdit c настройками по умолчанию. И когда я закртываю форму1 у меня выдается ошибка Access Violation


 
iviom   (2007-03-01 17:50) [4]

Пардон, люди. Написала у форме1 в событии OnClose() Form2.Destroy;
Ошибка исчезла.


 
Ega23 ©   (2007-03-01 17:50) [5]

var
Form2: TForm2;
begin
Form2:= TForm2.Create(nil);
Form2.ShowModal;
end;


А Free форме 2 Дядя Вася делать будет?


 
Ega23 ©   (2007-03-01 17:52) [6]


> Пардон, люди. Написала у форме1 в событии OnClose() Form2.
> Destroy;
> Ошибка исчезла.
>


Делать это надо в обработчике этой же кнопки:

var
Form2: TForm2;
begin
 Application.CreateForm(TForm2, Form2);
 try
   Form2.ShowModal;
 finally
   Form2.Free;
 end;
end;


 
Ega23 ©   (2007-03-01 17:52) [7]

Ну и убрать нафиг создание из файла проекта.


 
iviom   (2007-03-01 17:57) [8]

Ладно, признаю ошибку. А все таки вопрос. Ну почему, если не делать Free пустой, предположим, форме, то все рабоает, а если с этим контролом, то нет?


 
Германн ©   (2007-03-01 17:58) [9]

Тогда уж лучше так:
begin
 with TForm2.Create(nil) do
   try
     ShowModal;
   finally
     Free;
   end;
end;


 
Ega23 ©   (2007-03-01 18:05) [10]


> Германн ©   (01.03.07 17:58) [9]


Ну это вопрос стиля, ИМХО.
Вот как раз только что написал:

procedure TFMain.CarZonesAdd;
begin
 Application.CreateForm(TCarZonesAddForm, CarZonesAddForm);
 try
   CarZonesAddForm.ShowModal;
   if CarZonesAddForm.ModalResult<>mrOK then Exit;
 finally
   CarZonesAddForm.Free;
 end;
end;


Тут дальше ещё некая фнкциональность будет накручиваться, когда форму доделаю. В частности, коннект передать, значение поля и т.п.
Плюс потом, переоткрывать запрос, по ModalResult или нет...

В целом, для не сильно сложных модальных форм With предпочитаю не использовать, т.к. часто наименования пропертей совпадают.


 
Германн ©   (2007-03-01 18:09) [11]


> Ega23 ©   (01.03.07 18:05) [10]
>
>
> > Германн ©   (01.03.07 17:58) [9]
>
>
> Ну это вопрос стиля, ИМХО.

Не совсем так, имхо.
Тогда у автора не было бы соблазна писАть вот это:
Форма 2 создается так (по нажатию кнопки на форме1):
var
Form2: TForm2;
begin
...


 
Ega23 ©   (2007-03-01 18:10) [12]

А почему бы и нет?


 
Германн ©   (2007-03-01 18:14) [13]


> Ega23 ©   (01.03.07 18:10) [12]
>
> А почему бы и нет?
>

Если я правильно понял автора, в его примере Form2 - локальная переменная в обработчике кнопки.


 
iviom   (2007-03-01 18:19) [14]

Form2 - действительно локальная переменная. Ее класс TForm2 подробно описан в своем юните. А как писать с with или без нее.. для этих трех строчек думаю, без разницы.


> Ладно, признаю ошибку. А все таки вопрос. Ну почему, если
> не делать Free пустой, предположим, форме, то все рабоает,
>  а если на форме этот контрол, то нет?


И все таки мой вопрос остался в стороне.


 
Ega23 ©   (2007-03-01 18:20) [15]


> Если я правильно понял автора, в его примере Form2 - локальная
> переменная в обработчике кнопки.


Ну да. А в юните Unit2 var Form2:TForm2 скорее всего не убрано.
И в самом файле проекта обе формы, скорее всего, автоматом создаются. А какая из них становится главной - дело крайне тёмное.


 
iviom   (2007-03-01 18:25) [16]


>  А в юните Unit2 var Form2:TForm2 скорее всего не убрано.


Убрано-убрано и в самом файле проекта тоже ее нет. А главная только одна - именна та, что в файле проекта. =)


 
Ega23 ©   (2007-03-01 18:29) [17]


> Убрано-убрано и в самом файле проекта тоже ее нет. А главная
> только одна - именна та, что в файле проекта. =)


Честно говоря, конкретно на этот вопрос в данный момент ответ дать не могу, а лезть и проверять, что там происходит нет времени.
Но:
Если ты создаёшь TComponent и в качестве Owner даёшь nil - будь любезен сам потом его грохнуть.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.045 c
2-1173010622
Roman_S
2007-03-04 15:17
2007.03.25
Как учесть клавишу "BACKSPACE"?


2-1172740953
tia
2007-03-01 12:22
2007.03.25
DLL


2-1172939940
Roman_S
2007-03-03 19:39
2007.03.25
Как узнать размер каталога по пути?


2-1172907376
elserpiente
2007-03-03 10:36
2007.03.25
Что это?


8-1153917194
BadTester
2006-07-26 16:33
2007.03.25
Как из Image сделать полноценную кнопку?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский