Ну вот, опоздал  
 worm2 в принципе все правильно написал, но если копнуть глубже, то проблема ваша - в непонимании основ языка. Скорее всего, вы учили его по не самым хорошим книгам, а то и вообще перешли с паскаля, потому что "там все то же самое"  

 Для полноты знаний порекомендую книгу Марко Кэнту "Delphi 7 для профессионалов".
Если вкратце, то события работают так. Событие - это поле класса процедурного типа. Для вызова и обработки событий используется примерно такой код:
Код:
type
TOnButtonClick = procedure (Sender: TObject) of object;
...
class TCustomButton (<не помню, кто там у него предок ;)>)
  private
    FOnButtonClick: TOnButtonClick;
    procedure SomeBehaviorProc;
  public
    property OnButtonClick: TOnButtonClick read FOnButtonClick write FOnButtonClick;
  end;
...
implementation
procedure TCustomButton.SomeBehaviorProc;
begin
...
  if FOnButtonClick <> nil then
     FOnButtonClick(Self);
...
end;
 
Здесь FOnButtonClick - свойство класса, которое хранит ссылку на процедуру обработки. Когда вы в IDE создаете форму и обработчик клика, а потом запускаете программу на выполнение, в эту переменную помещается адрес вашей процедуры TForm1.Button1Click - так программа узнает, что делать при клике (Это назначение скрыто глубоко в недрах библиотеки VCL, но подобную операцию легко прописать руками). Это к вопросу 
Но процедуры обработчиков кликов по кнопкам не принимают записи вида 
Код:
procedure TForm1.Button1Click( Sender: TObject; Var a:TMatrix );
Говорят 
Код:
Declaration of 'Button1Click' differs from previous declaration
Я не понимаю, почему так.
Поле FOnButtonClick ждет на вход адрес процедуры с определенной сигнатурой, а вы суете ему совсем другую процедуру. 
На вопрос 
И тем более не понимаю, как мне ещё передать массив в обработчик другой кнопки.
в общем случае ответить сложнее, потому как истинно православная архитектура ПО - это густой дремучий лес, и предела совершенству там тоже нет. Для простоты в учебном проекте можно писать так:
Код:
Class TForm1 (TCustomForm)
  private 
    FMyArray: TMyArray;
  public
    procedure Output;
    procedure Calculate;
end; 
implementation
procedure TForm1.Output;
begin
// тут выводите
end;
procedure TForm1.Calculate;
begin
 // тут вычисляете
end;
А уже вызов этих процедур засовываете в обработчики кликов.
Если какие слова непонятны или на ругательства похожи - вы спрашивайте, не стесняйтесь.
-- 05.03.2015, 22:53 --Понимаете, мне нужно передать выведенный массив
Нет, вам это не нужно  

 Ну в том смысле, что передать массив так, как хотите вы - не единственный и даже не лучший способ решения.
-- 05.03.2015, 22:59 --Что-то молчат программисты
Ничего себе у вас запросы, да на эту тему целый трактат можно написать, а вы хотите, чтобы за 40 минут после создания топика вам уже ответ дали 

 Да тут людей, писавших на делфи, по пальцам одной руки пересчитать можно.
P. S. ТСу рекомендую читать блог 
http://www.gunsmoker.ru/ - наверно, лучший русскоязычный блог о Delphi и один из лучших о программировании вообще.