詳細については本文を編集してください。
EnpView ユニットで定義された ENP というフォームがあります。ENP フォームは、メイン フォーム (TPrincipal) のツールバー項目をクリックしたハンドラー イベントから作成および表示されます。
procedure TPrincipal.ENP1Click(Sender: TObject);
begin
TENP.Create(self).Show();
end;
Enp フォームは (パブリック宣言で) clearGrid() メッセージを知っています。
ENP フォームには、StringGrid と呼ばれる TStringGrid があります。そして「追加」というボタン。[追加] ボタンをクリックすると、別のフォームが作成されて表示されます: EnpViewAdd ユニットで定義された AddEnp フォーム。
procedure TENP.opAgregarClick(Sender: TObject);
begin
TAddEnp.Create(self).Show();
end;
AddEnp フォームには TEdit があります。入力の値は、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 メソッドは、クラス内で送信する場合に機能します。何か案は ?。