Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.03.20;
Скачать: [xml.tar.bz2];

Вниз

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

 
абт   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.007 c
14-64349
PrettyFly
2003-03-03 19:35
2003.03.20
Форум...


14-64279
Zhenka
2003-03-03 10:36
2003.03.20
У кнопки


1-64067
Начинающийй
2003-03-09 19:53
2003.03.20
Динамический масив в записи


14-64306
Дмитрий К.К.
2003-03-04 06:13
2003.03.20
Именинники 4 марта


1-64177
Andy BitOff
2003-03-07 21:01
2003.03.20
Передача параметра





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский