Показать сообщение отдельно
  #4  
Старый 22.02.2009, 11:41
Аватар для Rokuell
Rokuell Rokuell вне форума
Активный
 
Регистрация: 27.12.2006
Адрес: Псков
Сообщения: 274
Версия Delphi: Delphi 7
Репутация: 497
Сообщение Используй Sender

Есть 2 варианта.

1:
Используй свойство Tag у компонента TShape
при его создании и занесении в массив записывай туда индекс массива.
Код:
var V : array [1..10] of vtype; // для примера взял статический массив

procedure TForm1.FormCreate(Sender: TObject);
var i:word;
begin
 for i:=0 to now-1 do // now - количество вершин
  begin
   v[i].Form_.OnMouseDown:=MMouseDown;
   v[i].Form_.Tag := i;
  end;
end;

procedure TForm1.MMouseDown(Sender: TObject);
var abc:integer;
begin
 abc := (Sender as TShape).Tag;
 v[abc].Form_.Brush.Color:=clGreen; // abc - номер вершины
end; 

2:
Если тебе в принципе индекс объекта в массиве больше ни для чего не нужен, а только чтобы изменить цвет, то можно сделать проще:
Код:
procedure TForm1.MMouseDown(Sender: TObject);
begin
 (Sender as TShape).Brush.Color:=clGreen;
 // номер вершины нам не нужен, мы можем сразу изменять 
 // свойства объекта Sender , для которого было вызвано событие
end;
__________________
Велик и могуч наш Object Pascal !
ICQ: 357-591-887
Ответить с цитированием