Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.20;
Скачать: CL | DM;

Вниз

Как получить индекс объекта   Найти похожие ветки 

 
абт   (2003-03-07 19:23) [0]

Имеется переменная slin: array[0..10] of Tshape;
при нажатии на кнопку создается графический объект slin[j]
Например создал 4 прямоугольника и как при клики мыши на один из объектов получить индекс данного объекта slin[?] что бы можно было изменить его. Как получить индекс объекта ?
Зарание благодарю.


 
Palladin ©   (2003-03-07 20:06) [1]

для этого объект должен иметь обратную связь с массивом...
хранить свой индекс


 
Song ©   (2003-03-07 20:08) [2]

По координатам. В структуре объектов храни где-нибудь их Rect


 
Palladin ©   (2003-03-07 20:13) [3]


> Song © (07.03.03 20:08)

а если они пересекаются?

можно конечно брать Sender как TShape и искать в массиве перебором на предмет совпадения, это простое решение при 4 обектах или 10, а если их гораздо больше? все время пробегать чтоли?

проще создавать их и присваивать Name примерно так "_"+inttostr(n)
где n его индекс и потом обращатся к нему...


 
Song ©   (2003-03-07 20:17) [4]

Ну пусть пересекаются тогда результатом функции будет то что 2 фигуры активные.


 
Palladin ©   (2003-03-07 20:22) [5]


> абт (07.03.03 19:23)

в общем выбирай из двух вариантов, какой нравится...


 
KpeHgeJIb   (2003-03-07 22:04) [6]

У Tshape есть свойство Tag которое придназначено для нужд програмиста. Опиши процедуру которая по пораметрам одходит к обработчику событий OnMouseDown
в котором ты сможеш получать Tag
например
procedure ShapeMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
......
slin[Tshape(Sender).Tag].Shape:=stRectangle;
......
end;

При создании нового елемента масива slin присваевай его свойству OnMouseDown процедуру ShapeMouseDown. А свойству Tag порядковый номер элемета в масиве .
пример
OnMouseDown:=ShapeMouseDown;
slin[xxx]:=xxx;


 
KpeHgeJIb   (2003-03-07 22:07) [7]

Поправочка.

В последней строчке там не "slin[xxx]:=xxx" а slin[xxx].Tag:=НОМЕР;


 
abt   (2003-03-08 21:46) [8]

Всем спасибо за помощ
Получилось все очень просто:
при создании объекта присваиваю TAGу значение j
slin[j].tag:=j;

а при событии onmousedown получаю tag данного обьекта
tshape(sender).tag;

Получилось все круто !



Страницы: 1 вся ветка

Текущий архив: 2003.03.20;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.019 c
1-64076
Volly
2003-03-09 18:44
2003.03.20
Перетаскивание формы


3-64045
OlegKrt
2003-02-27 08:54
2003.03.20
OnMouseWheel в TDBLookupComboBox? не работает прокрутка


3-64041
Виталий Панасенко
2003-03-01 14:11
2003.03.20
DBLookupComboBox


6-64269
Delphi 5.01
2002-12-06 16:35
2003.03.20
Irc na Delphi


7-64398
GrBob
2003-01-20 20:19
2003.03.20
Перехват лампочки Scroll Lock на клавиатуре