Есть 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;