Работа с текстовыми полями Edit1.Text из своих процедур в Lazarus

Рейтинг: 0Ответов: 2Опубликовано: 05.04.2023

Хочу сделать функцию очистки текстовых полей, т.к. одно и то же действие предполагается делать при помощи двух кнопок (кнопкой очистить и после сохранения текстового файла) - то это уменьшит размер кода. Для этого делаю процедуру:

procedure Edit_Clear();
begin
  Edit1.Text:='';
end;

И вызываю ее после нажатия кнопки:

procedure TForm1.Clear_BtnClick(Sender: TObject);
begin
  Edit_Clear()
end;

Но Lazarus при компиляции говорит что переменная Edit1 не найдена (unit1.pas(190,3) Error: Identifier not found "Edit1" ). При этом если работать с ней в стандартной функции, которую генерирует Lazarus - она выполняется.
Как сделать свою функцию, которая могла бы работать с текстовым полем?

Ответы

▲ 2Принят

Сделайте метод формы - объявите Edit_Clear() в public разделе формы, и сгенерируйте имплементацию (в Delphi это делается CTRL-SHIFT-C, если у вас нет такого шортката, то другой должен быть или просто руками)

procedure TForm1.Edit_Clear();

Внутри метода будут видны поля формы.

Иначе, если вы хотите иметь standalone процедуру (не метод) (хотя в данном случае смысла в этом нет), вам придётся обращаться к полям формы через Form1.Edit1 (Form1 обычно объявлено в var разделе, но может быть и удалено оттуда программистом)

▲ 0

Так может быть или я не понял вопроса?

procedure Edit_Clear(var edit0: Tedit);
begin
  Edit0.Text:='';
end;

Использовать тогда

procedure TForm1.Clear_BtnClick(Sender: TObject);
begin
  Edit_Clear(edit1);
end;