![]() |
|
|
#16
|
|||
|
|||
|
Снова проблема
, надеюсь последняя: каким образом реализовать MouseDown, MouseMove, MouseUp на заполненом OnFormCreate массиве из TImage?Т.е. мне нужно, чтобы при нажатии на один из элементов массива с ним проделывались определённые действия, только что пробовал создать свою процедуру - окончательно запутался, подскажите пожалуйста как это сделать, заранее спасибо. Последний раз редактировалось LobaS, 27.01.2007 в 17:18. |
|
#17
|
||||
|
||||
|
Ну, события к ImageList'у (если о нем речь), никак не привяжешь, но можно создать какой-либо список, в который будут заноситься, различные данные по изображению и при нажатии на элементе в этом списке уже можно будет работать с ImageList'ом через индексы...
Если я конечно понял, о чем речь... |
|
#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 есть у объектов, которые хранятся в нём, следовательно нужно в цикле вызывать его для всех объектов, хранящихся в массиве.
|