Показать сообщение отдельно
  #9  
Старый 17.05.2007, 09:57
Аватар для Decoding
Decoding Decoding вне форума
Местный
 
Регистрация: 03.06.2006
Адрес: Почту найдете на моем сайте
Сообщения: 576
Версия Delphi: D10.2
Репутация: 214
По умолчанию

>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), и запоминаем соответствующие изменения в массиве, для того, чтобы в последствии их можно было восстановить…
Ответить с цитированием