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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2010, 13:09   #1
varelik
Форумчанин
 
Регистрация: 21.08.2009
Сообщений: 140
По умолчанию выделение image

доброго дня.
Подскажите: как можно выделить текущую image (одну из многих на форме) цветом, наведя на нее курсор???? Причем не полностью ее залить, а чтоб изображение на ней было видно.- просто какбы ее фон менялся.
Причем при печати на принтере этого выделения не должно наблюдаться.

Последний раз редактировалось varelik; 17.02.2010 в 13:12.
varelik вне форума Ответить с цитированием
Старый 17.02.2010, 13:16   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Хм...
Я бы скорее всего поступил так:
Каждую Image кинул на Panel. При клике на Image панель подсвечивал другим цветом, таким образом получая рамку вокруг Image, и соответственно в цикле возвращал стандартный цвет остальным панелям.
Код:
procedure TForm1.Image1Click(Sender: TObject);
var i:integer;
begin
 for i:=0 to Controlcount -1 do begin
  if Controls[i] is TPanel then TPanel(Controls[i]).Color:=clWindow;
 end;
 TPanel(TImage(sender).parent).Color:=clred;
end;
Это обработчик клика по image. Он для всех един.
Для Панелей выставь BorderWidth:=3 чтоб видно было.

А для печати просто ставь цвет панелей в цвет фона.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.02.2010, 13:43   #3
varelik
Форумчанин
 
Регистрация: 21.08.2009
Сообщений: 140
По умолчанию

Ну всеже не совсем то что хотелось. У меня все image создаются динамически и мышью по форме таскаются.
Если вы говорите про то, чтоб для каждой имадж- своя панель- это не подойдет.
varelik вне форума Ответить с цитированием
Старый 17.02.2010, 13:48   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...ну дык, навесь сверху вторую форму (с прозрачностью в центре и по размерам image) по клику на image и сделай ее привязку при передвижении картинки.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 17.02.2010, 13:55   #5
varelik
Форумчанин
 
Регистрация: 21.08.2009
Сообщений: 140
По умолчанию

а как нибудь без ввода дополнительных форм и компонентов можно реализовать?
если цветом нельзя, то хотябы рамку сделать?
и при наведении на например второй имадж, на первом имадже она убираться должна

Последний раз редактировалось varelik; 17.02.2010 в 13:58.
varelik вне форума Ответить с цитированием
Старый 17.02.2010, 14:10   #6
mkile
 
Регистрация: 16.02.2010
Сообщений: 5
По умолчанию

как вариант, поработать с изображением, которое в image лежит, может сделать его черно-белым, может на нем рамку нарисовать, может еще как-нибудь исхитриться
mkile вне форума Ответить с цитированием
Старый 17.02.2010, 14:15   #7
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

варианты еще...
1- рисуйте рамку прямо в канвасе image и сохраняйте во временный буфер или битмап то, что было на месте рамки каждый раз когда кликаете, а при печати восстанавливайте
2- если-уж динамически создаете image-ы, то никто не мешает динамически и подложку в виде панели, как уже указал Stilet
3- форму тоже динамически создать нетрудно
...тощо
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 17.02.2010, 14:23   #8
varelik
Форумчанин
 
Регистрация: 21.08.2009
Сообщений: 140
По умолчанию

А вот поподробней про 1. ?
как понимаю через canvas.framerect и canvas.brush.color надо делать (если речь о рамке). Но пока не выходит. Просто выделить по щелчку каждую картинку например clred я могу. А вот чтоб например если одну выделил, а на остальных выделение исчезло- пока никак.
Вобщем есть у меня mousedown, mousemove,mouseup, onclick процедуры.
2 и 3 варианты мне не подойдут точно.
И самое главное- при печати эта рамка остается- это уж совсем неприемлимо.

Последний раз редактировалось varelik; 17.02.2010 в 14:26.
varelik вне форума Ответить с цитированием
Старый 17.02.2010, 15:40   #9
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Код:
var num: integer; // временный номер
     buf : tbitmap; // временный буфер
     imagemas: array of timage;

procedure TForm1.ImagemasMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer); // общий обработчик для всех imagemas
begin
 with (sender as timage) do begin

  buf.Assign(picture.Bitmap);
  canvas.brush.color:= cllime;
  canvas.FrameRect(canvas.ClipRect);

  if button <> mbLeft then move:= false
   else begin
    move:= true;
    x0:= x;
    y0:= y;
    rec:= BoundsRect
   end;

  if tag <> num then imagemas[num].Picture.Bitmap.Assign(buf);
  num:= tag
 end
end;
смысл ясен?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 17.02.2010, 15:51   #10
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

или вот так
Вложения
Тип файла: zip 1.ZIP (222.9 Кб, 74 просмотров)

Последний раз редактировалось SERG1980; 17.02.2010 в 15:54.
SERG1980 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выделение инициалов XFilippowX Помощь студентам 5 16.01.2010 10:07
Выделение masterenergy Microsoft Office Excel 2 04.09.2009 19:45
Вопрос по Image (скачанная картинка не хочет выводиться в Image) Radnor Мультимедиа в Delphi 2 06.07.2009 02:20
выделение StasSv Microsoft Office Excel 8 26.01.2009 14:02
выделение StasSv Microsoft Office Excel 2 10.11.2008 17:15