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

Вниз

Access Violation в MDI-приложении   Найти похожие ветки 

 
and_sp   (2003-02-13 13:09) [0]

Уважаемые МАСТЕРА!
Такая ошибка: Access violation при передачи данных из одной
MDIChildForm в другую... Когда был SDI всё работало. В чем ошибка?
Перестали работать простейшие операторы
присваивания из одной формы в другую. При передачи данных формы
активны... ничего не понимаю. Причем это происходит при любых попытках в проекте передать данные из формы в форму... Что делать???
Помогите!!!


 
Паша   (2003-02-13 13:18) [1]

Как передаешь данные? Скорее всего, переменная, к которой обращаешься, = nil или там мусор.


 
smok_er   (2003-02-13 13:57) [2]

Код в студию!


 
and_sp   (2003-02-13 16:05) [3]

Привожу код в "студию"
Есть три формы:
Form1 - MDIForm
Form2 - MDIChild
Form3 - MDIChild
Причем Form3 вызывается из Form2. На Form2 ставлю Label1 и Button1 которая вызывает Form3 а на Form3 ставлю кнопку в обработчик которой пишу:
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.Label1.Caption:="Почему не работает?";
end;
Form2 и Form3 создаю следующим образом:
procedure Form1.Button1Click(Sender: TObject);
var Form2:TForm2;
begin
Form2:=TForm2.create(Application);
Form2.Show;
end;


 
Паша   (2003-02-13 17:41) [4]

>на Form3 ставлю кнопку в обработчик которой пишу:procedure TForm1.Button1Click(Sender: TObject); ???
может TForm3.Button1Click(Sender: TObject); ?

посмотри в отладчике, что сидит в Form2.Label1.Caption
или Form2 или Form2.Label1 не инициализированны.

Не совсем понятно. Form2 и Form3 создаются из Form1?

procedure Form1.Button1Click(Sender: TObject);
var Form2:TForm2; // -это локальеая переменная
begin

и тогда глобальная из unit2.pas -> Form2 = nil. ИМХО


 
smok_er   (2003-02-13 17:49) [5]

Ты уверен, что в момент Form2.Label1.Caption:="Почему не работает?" у тебя создана форма?
и еще...
что-то подозрительно у тебя объявлена форма Form2 и Form3...
внутри процедуры...


 
smok_er   (2003-02-13 17:51) [6]

:)
Начал отвечать, срочно вызвали по работе, пришел, ответил :)


 
and_sp   (2003-02-14 12:37) [7]

Вот нашел решение:
Обращаюсь через родительскую форму...
TLabel(Application.MainForm.MDIChildren[1].FindComponent("Label1")).Caption:="Почему не работает";


 
Игорь Шевченко   (2003-02-14 13:38) [8]

and_sp (14.02.03 12:37)

Криво до безобразия.
Ни одной проверки на ошибки, нет гарантии, что MDIChildren[1] будет именно формой, содержащей компонент Label1.

if Application.MainForm.MDIChildren[1] is TForm2 then
TLabel(Application.MainForm.MDIChildren[1].FindComponent("Label1")).Caption:="Почему не работает";



 
smok_er   (2003-02-14 15:42) [9]

Игорь Шевченко © (14.02.03 13:38)

Сильно громоздко.
А вот компактный вариант:

if Application.MainForm.MDIChildren[1] is TForm2 then
(Application.MainForm.MDIChildren[1] as TForm2).Label1.Caption:="Почему не работает";



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

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

Наверх





Память: 0.46 MB
Время: 0.008 c
8-76036
Luc
2002-11-10 23:23
2003.02.24
Градиент на BMP


1-75909
badaxe
2003-02-14 11:23
2003.02.24
Как запихать картинку в Popup Menu?


1-76009
Lizard
2003-02-13 11:22
2003.02.24
Планировщик


1-75870
Kair
2003-02-13 20:33
2003.02.24
Расширение файла


3-75767
sav00
2003-02-03 11:57
2003.02.24
Печать DBGrid





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