автозапуск кнопки

Есть форма в котором размещен кнопка, например Button1. Как сделать, чтобы при запуске формы это кнопка автоматически исполнилось один раз, а далее ручным кликом?

Обработайте событие формы Shown. В обработчике вызовите обработчик события кнопки.

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

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

И ещё, это простенький вопрос, обычно такое в Помощь новичкам пишут. А темы имеет смысл создавать только для сложных вопросов. Ну раз создали - уже не важно, это так, на будущее.

А мы не знаем, какие действия выполняет кнопка. Она может как-то модифицировать форму.

Какая разница. Я говорю про то что лучше делать так:

{$reference 'System.Windows.Forms.dll'}

uses System.Windows.Forms;

type
  f1=class(Form)
    
    b1:Button;
    
    procedure Общее_для_кнопки_и_запуска_формы;
    begin
      //ToDo
    end;
    
    constructor;
    begin
      b1 := new Button;
      b1.Click += (o,e)->
      begin
        Общее_для_кнопки_и_запуска_формы;
      end;
      
      self.Shown += (o,e)->
      begin
        Общее_для_кнопки_и_запуска_формы;
      end;
    end;
    
  end;

begin end.

А вызов эвента нажатия кнопки вручную - это всегда костыль, даже если из эвента запуски формы.

А такие лямбды работают? В целом - так и правда лучше. Я примерно так и предлагал, только не думал, что там надо будет свой класс вводить.

Ну, именно так свой класс вводить не надо, просто таким образом кнопка - это поле формы, это как то логичнее.

А лямбда всегда может авто определить тип своих параметров, когда её присваивают эвенту. Я как узнал что можно o:System.Object, e:System.Windows.Forms.***************************EventArgs не писать (где вместо *** - какое то очень длинное название, которое я до этого просто копировал) - сразу стал только лямбдами это и не делать.

Но лямбды/не лямбды - это не касается того что я пытался донести. Из процедуры которую ставят на эвент - лучше вызывать отдельную процедуру. Чтоб из эвента Form.Shown вызывать не обработчик эвента а нормальную процедуру. Потому что, как я и сказал:

Ну я и говорю - Ваш вариант лучше.