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

Вниз

Модальные формы и данные   Найти похожие ветки 

 
Viktor   (2003-05-07 11:51) [0]

Привет мастерам!
Возникла следующая проблема.
Помогите разобраться.

Существует Form1 (MDI)
Form2 (Child)

из Form2 вызываю модальную форму Form3
на Form3 есть Edit1

для ввода дополнительных данных вызываю еще одну модальную форму
Form4
при нажатии на ней кнопки присваиваю
Label1.Caption := Form3.Edit1.Text;

Выдается ошибка Access violation или что-то в этом роде.

Не могу понять в чем дело
форма есть, а данных прочесть не могу.

Заранее спасибо.


 
крот   (2003-05-07 12:11) [1]

Какая именно ошибка возникает. Приведт код обработчика кнопки на форме Form4.


 
REA   (2003-05-07 12:42) [2]

1) Называйте формы своими именами
2) Называйте компоненты своими именами
3) Не стоит присваиваить данные из формы Form3 в Form4 по нажатию кнопки - лучше присвоить данные при инициализации формы 4.


 
Viktor   (2003-05-08 09:02) [3]

MDI
вызов Childa
procedure TFrmMdi.dxBarButtonJournalDocClick(Sender: TObject);
begin
if not Assigned(FrmDocList) then
Application.CreateForm(TFrmDocList, FrmDocList);
FrmDocList.Show;
end;

вызов модального окна
procedure TFrmDocList.TBtnOfferClick(Sender: TObject);
begin
if TblDocList.FieldByName("IdType").Value = 1 then
begin
with TFrmCreateStandartModel.Create(Self) do
begin
Caption := "Выбор стандартной модели окна";
try
if ShowModal = mrOk then
begin
//
end;
finally
Free;
end;
end;
end
else
MessageDlg("Предложение добавляется только к договору", mtWarning, [mbOK], 0);
end;

вызов втрого модального окна с проверками
procedure TFrmCreateStandartModel.BtnOkClick(Sender: TObject);
var
Modal : TFrmSelectionAccessories;
begin
if WWidth.Text = "" then
begin
MessageDlg("Необходимо ввести высоту Рамы", mtWarning, [mbOK], 0);
WWidth.SetFocus;
Exit;
end;
if WHeight.Text = "" then
begin
MessageDlg("Необходимо ввести ширину Рамы", mtWarning, [mbOK], 0);
WHeight.SetFocus;
Exit;
end;
if (BayTop.Checked = True) And (BayTopHeigh.Text = "") then
begin
MessageDlg("Необходимо ввести высоту верхнего Просвета", mtWarning, [mbOK], 0);
BayTopHeigh.SetFocus;
Exit;
end;
if (BayBottom.Checked = True) And (BayBottomHeigh.Text = "") then
begin
MessageDlg("Необходимо ввести высоту нижнего Просвета", mtWarning, [mbOK], 0);
BayBottomHeigh.SetFocus;
Exit;
end;
if (StrToInt(WWidth.Text) < 200) Or (StrToInt(WHeight.Text) < 200) then
begin
MessageDlg("Слишком маленькое значение", mtWarning, [mbOK], 0);
WWidth.SetFocus;
Exit;
end;
if (BayTop.Checked = True) And (StrToInt(BayTopHeigh.Text) < 120) then
begin
MessageDlg("Слишком маленькое значение", mtWarning, [mbOK], 0);
BayTopHeigh.SetFocus;
Exit;
end;
if (BayBottom.Checked = True) And (StrToInt(BayBottomHeigh.Text) < 120) then
begin
MessageDlg("Слишком маленькое значение", mtWarning, [mbOK], 0);
BayBottomHeigh.SetFocus;
Exit;
end;
// Сохраняем конфигурацию окна
CreateWindow;
// Вызываем дополнительную форму
Modal := TFrmSelectionAccessories.Create(Self);
try
Modal.ShowModal
finally
Modal.Free;
end;
ModalResult := mrOk;
end;

нажимаем кнопку
procedure TFrmSelectionAccessories.BitBtn3Click(Sender: TObject);
var
Bmp : TBitmap;
i, NP, HR, WR : Integer;
begin
// нарисовать и загрузить рисунок в Image
try
Bmp := TBitmap.Create;
HR := FrmCreateStandartModel.WHeigh.Text;
WR := FrmCreateStandartModel.WWidth.Text;
Bmp.Canvas.Brush.Color := clAqua;
Bmp.Width := WR;
Bmp.Height := HR;
Bmp.Canvas.Rectangle(0, 0, WR, HR);
NP := FrmCreateStandartModel.TblDocModel.FieldByName("NumberPart").Value;
for i := 1 to NP do
begin
Bmp.Canvas.Rectangle(4+Round((WR-4)*(i-1)/NP), 4, Round(i*(WR-4)/NP), HR-4);
end;
dxGraphic.Picture.Bitmap := Bmp;
finally
//
end;
end;

из последнего не видно ни одного компонента
такое ощущение что формы уже нет

Error
Project Horizon.exe raised exception class EAccessViolation with message
"Access violation at address 0056D496 in module "HORIZON.EXE". Read address FFFFFFFF."
Process stopped. Use step or Run to Continue.

запуск приложения не из под Delphi
Access violation at address 0056D496 in module "HORIZON.EXE". Read address FFFFFFFF.


 
NewN   (2003-05-08 09:43) [4]

А на самом деле, переменной FrmCreateStandartModel нигде не присваивается никакого значения, вот и ошибки.
Вот здесь -
>>procedure TFrmDocList.TBtnOfferClick(Sender: TObject);
>>begin
>> if TblDocList.FieldByName("IdType").Value = 1 then
>> begin
>> with TFrmCreateStandartModel.Create(Self) do
>> begin
- создаётся объект класса TFrmCreateStandartModel, но он никак не связан с переменной FrmCreateStandartModel, к которой ты потом обращаешься.


 
AlexSV   (2003-05-08 10:42) [5]

Попробуй так:

procedure TFrmSelectionAccessories.BitBtn3Click(Sender: TObject);
var
FCSM:TFrmCreateStandartModel;
Bmp : TBitmap;
i, NP, HR, WR : Integer;
begin
FCSM := TFrmCreateStandartModel(self.owner);

и далее

HR := FCSM.WHeigh.Text;
WR := FCSM.WWidth.Text;

если только Text типа Integer


 
Viktor   (2003-05-08 19:00) [6]

>AlexSV
Спасибо огромное!!!



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

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

Наверх





Память: 0.47 MB
Время: 0.006 c
1-70323
Silver_
2003-05-08 14:35
2003.05.22
EhLib SumList когда Master -> Detail


14-70461
stimm
2003-05-03 10:20
2003.05.22
Скажите что это такое , может адрес какой-то


1-70315
GIL
2003-05-08 15:16
2003.05.22
GIF


1-70278
wwwasya
2003-05-12 17:35
2003.05.22
Application.CreateForm vs TForm.Create


14-70486
faustinio
2003-05-04 01:20
2003.05.22
vremennaya blokirovka





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