Редактировать тело для получения более подробной информации.Доступ к StringGrid из другой формы
У меня есть форма под названием ENP, определенная в блоке EnpView. Форма ENP создается и отображается из события обработчика щелчка на элементе панели инструментов в основной форме (TPrincipal).
procedure TPrincipal.ENP1Click(Sender: TObject);
begin
TENP.Create(self).Show();
end;
Форма Enp знает (в открытом объявлении) clearGrid() сообщение.
Форма ENP имеет TStringGrid, называемую StringGrid. И кнопку «Добавить». При нажатии кнопки «Добавить» создается и отображается другая форма: Форма AddEnp, определенная в элементе EnpViewAdd.
procedure TENP.opAgregarClick(Sender: TObject);
begin
TAddEnp.Create(self).Show();
end;
Форма AddEnp имеет любые TEdits. Значения входов должны быть добавлены в EnpView.StringGrid.
Я стараюсь это:
implementation
uses
EnpView, Main;
procedure TAddEnp.AgregarClick(Sender: TObject);
begin
{ Agrego el nodo xml }
Globals.Xml.agregarMuestra(muestra.Text);
Globals.Xml.insertEnp(muestra.Text,golpes.Text,metros.Text);
{ Send messages to EnpView Form }
ENP.clearGrid();
ENP.populateGrid();
end;
ClearGrid сообщения проваливается в строке 1, с нарушением доступа:
procedure TENP.clearGrid();
begin
Self.StringGrid.RowCount := 2;
Self.StringGrid.Rows[1].Clear();
end;
Методы clearGrid работает, если отправить в классе. Есть идеи ?.
ENP назначается? – bummi
ENP - это форма внутри первого блока. ENP, уже созданная при выполнении второй формы. – ramiromd
Что такое объявление 'stringgrid'? это назначено? поместите точку останова на проблемную строку и перед ее выполнением оцените «указатель (Self)» и «pointer (Self.stringgird)», имеют ли они какое-либо разумное значение –