Ну вот, опоздал
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 и один из лучших о программировании вообще.