Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2011, 08:46   #1
bunukar
Пользователь
 
Регистрация: 26.04.2010
Сообщений: 40
По умолчанию Много TImage

Вобщем ситуация такая. Делаю Таблицу Менделеева. Каждый Элемент - Timage. Нужно чтобы при наведении курсора(OnMouseMove) изменялась картинка элемента, на который навели.
Я делаю просто изменением всех картинок. Но на каждый МаусМув по 118 строк кода(1 кратинка изменяется, а все другие изменяются на изначальную). Проблема в том, что измененная картинка долго грузится, да и кода только для МаусМув получится на 11к строк.
Как можно это реализовать лучше? Спасибо заранее.

Последний раз редактировалось bunukar; 12.04.2011 в 08:48.
bunukar вне форума Ответить с цитированием
Старый 12.04.2011, 08:54   #2
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

1) отказаться от TImage;
2) рисовать на канве;
3) использовать MouseMove формы.
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 12.04.2011, 09:05   #3
bunukar
Пользователь
 
Регистрация: 26.04.2010
Сообщений: 40
По умолчанию

Цитата:
Сообщение от Sparkman Посмотреть сообщение
1) отказаться от TImage;
2) рисовать на канве;
3) использовать MouseMove формы.
1)А как это можно сделать?
Я просто совсем новичок ещё
Ещё была идея всделать Таблицу на HTML. Там ведь проще, да и грузиться должно быстрее. Но как реализовать HTML в Дельфи так и не разобрался.
bunukar вне форума Ответить с цитированием
Старый 12.04.2011, 09:06   #4
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Если язык С++, то через разыменование классов:
Для TImage не делал, но для чекбоксов вот (как пример)
Код:
if(!((TCheckBox *)Form1->Controls[Index]->Checked)
Получаем индекс чекбокса и обрабатываем в одной функции.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 12.04.2011, 09:07   #5
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

Цитата:
Сообщение от bunukar Посмотреть сообщение
1)А как это можно сделать?
Я просто совсем новичок ещё
Ещё была идея всделать Таблицу на HTML. Там ведь проще, да и грузиться должно быстрее. Но как реализовать HTML в Дельфи так и не разобрался.
см. п.2
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 12.04.2011, 09:17   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

графика не мой конёк. Но, ИМХО:

думаю, что главная ошибка TC в том, что он для каждого TImage пишет СВОЙ код.
я бы лично создал массив указателей на TImage. (или использовал ImageList)
и дальше обработчик писал ТАК, чтобы он (обработчик) был универсальный (один и тот же код ДЛЯ ВСЕХ картинок!

bunukar, выложите исходники проекта в архиве.
лень рисовать пример с нуля...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.04.2011, 09:24   #7
bunukar
Пользователь
 
Регистрация: 26.04.2010
Сообщений: 40
По умолчанию

Smitt&Wesson
Забыл уточнить. Делаю на Delphi 7

Sparkman
С канвас совсем не знаком. Только прмитивно - фигурки, таблицы - основы вобщем.

Serge_Bliznykov
Тоже не совсем понимаю, как реализовать в массиве.

Прикрепляю исходники. Весь тот код по 118 строк на каждую картинку я удалил, т.к. это точно не вариант.


_________
ЗАМЕНИЛ ВЛОЖЕНИЕ!
теперь без вируса!

Модератор
Вложения
Тип файла: rar project2.rar (1.79 Мб, 10 просмотров)

Последний раз редактировалось Serge_Bliznykov; 12.04.2011 в 10:26.
bunukar вне форума Ответить с цитированием
Старый 12.04.2011, 10:16   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

так, сразу, пока не началось - бегом в тему
Delphi-“вирус” проверьте свою установленную Delphi!
и лечить свою заражённую Delphi!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.04.2011, 10:59   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Вы не написали, что собственно должно изменяться при наведении.
поэтому при наведении берём картинку из ImageList, при уходе с поля восстанавливаем то, что там было...

как это сделано:
1) у элементов водород, гелий, Li, Be, B назначены поле Tag ручками вписано индекс картинки из ImageList

2) все эти кнопки выделены (через Shift) и им всем назначен ОДИН и тот же обработчик события MouseEnter
и один и тот же обработчик события MouseLeave

собственно обработчики вот:
Код:
procedure TForm1.Image1MouseEnter(Sender: TObject);
var b:Tbitmap;
begin
  if Not (Sender is TImage) then Exit;

  SaveImage.Assign (TImage(Sender).Picture.Bitmap );
  b:=tbitmap.Create;
  imagelist1.GetBitmap(TImage(Sender).Tag,b);
  TImage(Sender).Picture.Bitmap:=b;
  b.Free;
end;

procedure TForm1.Image2MouseLeave(Sender: TObject);
begin
  if Not (Sender is TImage) then Exit;
  TImage(Sender).Picture.Bitmap := SaveImage;
end;
ну и полностью посмотреть код и посмотретЬ, как это работает можно в исходнике во вложенном архиве.
внимание! Там не полностью исходник, а только то, что менялось!
Вложения
Тип файла: rar src_only.rar (200.7 Кб, 8 просмотров)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.04.2011, 11:00   #10
bunukar
Пользователь
 
Регистрация: 26.04.2010
Сообщений: 40
По умолчанию

Просмотрел. Примерное понял как делается.
Но у меня не находит эти процедуры в Events. При запуске исходника выскочил впорос, игнорировать или Cancel. Что делать?
Вложения
Тип файла: rar 11(2).rar (2.27 Мб, 7 просмотров)

Последний раз редактировалось bunukar; 12.04.2011 в 11:07.
bunukar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не много теории world12_tk Помощь студентам 0 29.12.2009 15:24
Много объектов. Манжосов Денис :) Общие вопросы Delphi 5 04.09.2008 22:34
Много переменных Altera Общие вопросы Delphi 15 18.07.2008 08:06
много регистров nntpaha Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 22.12.2007 19:01
Помогите! (много вопросов!) илья too Общие вопросы Delphi 2 20.08.2007 19:58