|
#16
|
|||
|
|||
Снова проблема , надеюсь последняя: каким образом реализовать MouseDown, MouseMove, MouseUp на заполненом OnFormCreate массиве из TImage?
Т.е. мне нужно, чтобы при нажатии на один из элементов массива с ним проделывались определённые действия, только что пробовал создать свою процедуру - окончательно запутался, подскажите пожалуйста как это сделать, заранее спасибо. Последний раз редактировалось LobaS, 27.01.2007 в 17:18. |
#17
|
||||
|
||||
Ну, события к ImageList'у (если о нем речь), никак не привяжешь, но можно создать какой-либо список, в который будут заноситься, различные данные по изображению и при нажатии на элементе в этом списке уже можно будет работать с ImageList'ом через индексы...
Если я конечно понял, о чем речь... THE CRACKER IS OUT THERE |
#18
|
||||
|
||||
Не слабо было бы указать размерность массива, ну да ничего, будем исходить из того что он у тебя двумерный (матрица)
Код:
//заполнение var ImageData:array [1..10,1..10] of TImage; //глобальный ... ... var i,j:integer; begin for i:=1 to 10 do for j:=1 to 10 do ImageData[i,j]:=TImage.Create(nil); ... //тут заполение прочих полей, типа Left, Top, Parent и т.д. ImageData[i,j].Tag:=256*i+j; //По этому числу будем идентифицировать картинку в массиве ImageData[i,j].OnMouseDown:=ImageDataEventMouseDown; next; //j next; //i end; //Реакция на событие procedure [Твоя_Форма_или_Что_У_Тебя_Там].ImageDataEventMouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var i,j:integer; begin if Sender is TImage then //проверка, а действительно ли правильный объект вызвал событие begin if (Sender as TImage).Tag > 0 then //Это "наш" TImage begin i:=(Sender as TImage).Tag div 256; j:=(Sender as TImage).Tag mod 256; ImageData[i,j] //Вот это TImage в твоем массиве, делай с ним чего хошь. end; end; end; другие события по аналогии ЗЫЖ Писано прямо тут, так что в синтаксисе наверное полно ошибок |
#19
|
|||
|
|||
Вот, спасибо! больше вопросов нет Всем ещё раз огромное спасибо!
|
#20
|
|||
|
|||
к сведению, по себе знаю, что от Nil лучше ничего не создавать, создавай от Self или Application.
|
#21
|
|||
|
|||
А вообще, я бы тебе порекомендовал прочесть немного теории об ООП. Дабы не возникало подобных ситуаций:
Цитата:
|
#22
|
||||
|
||||
Цитата:
|
#23
|
|||
|
|||
У массива нет метода Free, у него вообще нет методов. Метод Free есть у объектов, которые хранятся в нём, следовательно нужно в цикле вызывать его для всех объектов, хранящихся в массиве.
|