Подскажите пожалуйста как можно эту процедуру вызвать из какого-либо участка кода?
--------------------
♣♣♣ "Себя великим не считай, гордясь величьем предков, Величья не добудешь ты и золота ценою! Хоть светит на небе луна, но отраженным светом - Чужою славой не живи, не будь второй луною!!!" ♣♣♣
// В классе формы: private { Private declarations } function GetIndexes(AImage: TImage; var ALine, ACol: Integer): Boolean;
// ...
// Реализация: пробегаем по всей матрице Panel-ей, и проверяем // хранящееся в каждой из них изображение (выше мы уже выяснили, // что Image хранится в списке дочерних компонентов под нулевым номером) // на равенство тому изображению, по которому щелкнули мышью.
// Если такое изображение найдено - немедленно возвращаем // его координаты (Line/Col) и выходим. Если ни одно изображение // не соответствует - функция вернет False, как признак неудачи. function TForm1.GetIndexes(AImage: TImage; var ALine, ACol: Integer): Boolean; var i, j: integer; begin result := True; for i := 0 to Length(arrPanels) - 1 do for j := 0 to Length(arrPanels[0]) - 1 do if (arrPanels[i, j].Components[0] as TImage) = AImage then begin ALine := i; ACol := j; Exit; end; result := False; end;
// Вызывать - вот так: procedure TForm1.myImageClick(Sender: TObject); var myParent: TPanel; Line, Col: integer; begin myParent := (Sender as TImage).Parent as TPanel;
// Вызываем функцию с учетом того, что может быть неудача - это нужно делать // всегда, даже если тебе это кажется невероятным. Мало ли что может произойти, // лучше добавить if ... then, чем потом сидеть и думать, где ошибка.
// Теперь о том, что передается первым параметром. Как известно, в обработчик // OnClick передается указатель на тот объект, на котором произошел щелчок мышью. // Соответственно, и в myImageClick тоже будет передан адрес того объекта (а точнее - // того изображения), на котором пользователь щелкнул мышью. Вот именно потому, что // я уверен: "Объект - это именно изображение, и ничего кроме него" (почему я уверен // в этом - попробуй догадаться и рассказать мне), я и передаю в GetIndexes адрес // объекта, приведенный к типу TImage... Что произойдет, если вдруг Sender будет // другого типа - это тоже ты мне расскажешь, договорились?
if GetIndexes(Sender as TImage, Line, Col) then Memo1.Lines.Add(Format('i = %d, j = %d', [Line, Col])); // Для теста - вывожу в мемо
myParent.OnClick(myParent); end;
Читай комментарии внимательно. Там есть два вопроса для тебя Я очень хотел бы, чтобы ты на них ответил. Это важно.