>r := ( Sender as TPanel ).Tag;
>m := StrToInt( ( Sender as TPanel ).Caption );
Sender - указатель на объект, который вызвал данное событие. Обрати внимание, для всех панелей один обработчик события. По-этому, узнать, какая именно панель вызвала это событие, можно только через Sender. ( Sender as TPanel ) - приведение указателя к типу TPanel. После этого, с Sender'ом можно работать, как с обычной панелью. Для каждой панели в свойстве Tag указан ряд, к которому она принадлежит, а в Caption записано место в этом ряду.
>if not Seans[ComboBox1.ItemIndex][r][m].State then
>begin
>Seans[ComboBox1.ItemIndex][r][m].State := true;
>( Sender as TPanel ).Color := clRed;
>end
>else
>begin
>Seans[ComboBox1.ItemIndex][r][m].State := false;
>( Sender as TPanel ).Color := clBtnFace;
Тут (по принципу, описанному выше), отмечаем место занятым (clRed) или свободным (clBtnFace), и запоминаем соответствующие изменения в массиве, для того, чтобы в последствии их можно было восстановить…
|