Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 26.01.2007, 22:42
LobaS LobaS вне форума
Прохожий
 
Регистрация: 15.01.2007
Сообщения: 11
Репутация: 10
По умолчанию

Снова проблема , надеюсь последняя: каким образом реализовать MouseDown, MouseMove, MouseUp на заполненом OnFormCreate массиве из TImage?
Т.е. мне нужно, чтобы при нажатии на один из элементов массива с ним проделывались определённые действия, только что пробовал создать свою процедуру - окончательно запутался, подскажите пожалуйста как это сделать, заранее спасибо.

Последний раз редактировалось LobaS, 27.01.2007 в 17:18.
Ответить с цитированием
  #17  
Старый 29.01.2007, 11:05
Аватар для 4kusNick
4kusNick 4kusNick вне форума
Местный
 
Регистрация: 06.09.2006
Адрес: Россия, Санкт-Петербург
Сообщения: 444
Репутация: 550
По умолчанию

Ну, события к ImageList'у (если о нем речь), никак не привяжешь, но можно создать какой-либо список, в который будут заноситься, различные данные по изображению и при нажатии на элементе в этом списке уже можно будет работать с ImageList'ом через индексы...
Если я конечно понял, о чем речь...
__________________
THE CRACKER IS OUT THERE
Ответить с цитированием
  #18  
Старый 29.01.2007, 11:49
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Не слабо было бы указать размерность массива, ну да ничего, будем исходить из того что он у тебя двумерный (матрица)
Код:
//заполнение
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  
Старый 29.01.2007, 18:00
LobaS LobaS вне форума
Прохожий
 
Регистрация: 15.01.2007
Сообщения: 11
Репутация: 10
По умолчанию

Вот, спасибо! больше вопросов нет Всем ещё раз огромное спасибо!
Ответить с цитированием
  #20  
Старый 29.01.2007, 19:00
Tigrillo Tigrillo вне форума
Прохожий
 
Регистрация: 18.01.2007
Сообщения: 38
Репутация: 10
По умолчанию

к сведению, по себе знаю, что от Nil лучше ничего не создавать, создавай от Self или Application.
Ответить с цитированием
  #21  
Старый 29.01.2007, 23:06
ilang ilang вне форума
Новичок
 
Регистрация: 11.12.2006
Сообщения: 68
Репутация: 10
По умолчанию

А вообще, я бы тебе порекомендовал прочесть немного теории об ООП. Дабы не возникало подобных ситуаций:
Цитата:
Сообщение от LobaS
у меня массив назван kletki, так вот, строку kletki.free не воспринимает, пишет, что ошибка в программном коде
Ответить с цитированием
  #22  
Старый 30.01.2007, 07:22
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Tigrillo
к сведению, по себе знаю, что от Nil лучше ничего не создавать, создавай от Self или Application.
ИХМО, правильнее все что создаешь самостоятельно, самостоятельно и убивать.
Ответить с цитированием
  #23  
Старый 03.02.2007, 00:44
TRUNK TRUNK вне форума
Прохожий
 
Регистрация: 24.01.2007
Адрес: Москва
Сообщения: 3
Репутация: 10
По умолчанию

У массива нет метода Free, у него вообще нет методов. Метод Free есть у объектов, которые хранятся в нём, следовательно нужно в цикле вызывать его для всех объектов, хранящихся в массиве.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:13.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter