RRYTY писал(а):Учебник, в данном случае, нужен по FreePascal.
Безусловно, язык знать получше мне бы не помешало.

Но всё же сущности типа Self, Sender, Tag и т. д. и т. п. больше относятся к Delphi / Lazarus / VCL. Всегда плохо понимал, что всё это значит и как его использовать. Но до сей поры и не требовалось.
svk12 писал(а):Код: Выделить всё
procedure TForm1.LabelClick(Sender :TObject);
begin
label_index := Self.Tag;
end;
Self - объект, которому принадлежит метод, в данном случае - экземпляр класса TForm1.
Объект, вызвавший обработчик, передаётся через параметр Sender.
Спасибо всем за разъяснения, из них многое стало понятным.
Добавлено спустя 40 минут 11 секунд:
Почитал статьи на тему Self и Sender.
Насколько я понял, записи
Код: Выделить всё
procedure TForm1.LabelClick(Sender :TObject);
begin
label_index := Tag;
end;
и
Код: Выделить всё
procedure TForm1.LabelClick(Sender :TObject);
begin
label_index := Self.Tag;
end;
полностью равносильны. Просто обычно случаев Self не указывается (опускается) при манипуляциях внутри метода этого класса, указываются просто свойства / методы класса (например, класса формы). Self - это как $this в php
А если нам нужно внутри метода класса использовать свойство объекта другого класса (например, TLabel), мы используем конструкцию вида
или
для чего и нужен параметр Sender в методе класса.