Wywoływanie procedur (metod) już zdefiniowanych dla innego zdarzenia. Błąd E2076.

0

Witam,

Mam problem z wywołaniem procedury (metody) i nie bardzo wiem jak to obejść.

Klasa zdefiniowana jest tak:

type
  TMainWindow = class(TForm)
    PageControl1: TPageControl;
    ButCreateTab: TButton;
    ButRemoveTab: TButton;
    EdycjaNazwy1: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure ButCreateTabClick(Sender: TObject);
    procedure ButRemoveTabClick(Sender: TObject);
    procedure EdycjaNazwy1KeyPress(Sender: TObject; var Key: Char);
    private
    public
  end;

Mam już napisaną działającą procedurę ButCreateTabClick i teraz chcę by procedura EdycjaNazwy1KeyPress wykonywała wewnątrz ten sam kod co ta pierwsza, żeby nie duplikować go. Wygląda to tak:

procedure TMainWindow.EdycjaNazwy1KeyPress(Sender: TObject; var Key: Char);
begin
   if Key=#13 then
      begin
        TMainWindow.ButCreateTabClick(EdycjaNazwy1);
        Key:=#0;
      end;
end;

Program nie chce się skompilować gdyż wyskakuje błąd:
E2076 This form of method call only allowed for class methods or constructor

W jaki sposób powinienem kod poprawić by to działało?

Pozdrawiam

1
TMainWindow.ButCreateTabClick(EdycjaNazwy1);

ButCreateTabClick musiałoby być metodą statyczną, ponieważ próbujesz wywołać metodę na klasie (TMainForm), a nie obiekcie (MainForm).
Innymi słowy: MainForm.ButCreateTabClick(EdycjaNazwy1);.
Btw, nie mieszaj polskich oraz angielskich nazw.

0

Błędem jest ta linia:

TMainWindow.ButCreateTabClick(EdycjaNazwy1);

Co ona ma w ogóle oznaczać? Nie możesz wywoływać metod klasy, która nie posiada utworzonej w pamięci instancji (obiektu formularza); Musisz stworzyć obiekt tej klasy, a następnie wywołać odpowiednią metodę obiektu;

Spróbuj:

Self.ButCreateTabClick(EdycjaNazwy1);

lub

MainWindow.ButCreateTabClick(EdycjaNazwy1);

jeśli MainWidnow jest globalnym obiektem stanowiącym formularz klasy TMainWindow.


EDIT: Możesz też wykorzystać metodę Click przycisku, czyli:

ButCreate.Click();

1 użytkowników online, w tym zalogowanych: 0, gości: 1