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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.08.2010, 12:30   #1
skalt12
Пользователь
 
Регистрация: 05.07.2009
Сообщений: 87
По умолчанию реакция на наведение указателя на участок формы. Canvas

Приветствую всех!
У меня такой вопрос, вот смотрите, у меня на форме есть два слова, написанных при помощи canvas:
Код:
...
  canvas.Font.Name := 'Arial';
  canvas.Font.Color := TCOLOR($00000);
  canvas.Font.Size := 8;
 
  canvas.TextOut(20, 20, 'Lorem Ipsum');
  canvas.TextOut(20, 35, 'Lorem Ipsum1');
...
мне нужно, чтобы когда указатель мыши находится над одной из этих строк, текст соответствующей строки становился жирным..
все, что пришло в голову мне, это добавить два TImage, с координатами, равными координатам строк:
Код:
...
   with Image1 do
      begin
         Left := 20;
         Top := 20;
      end;

   with Image2 do
      begin
         Left := 20;
         Top := 35;
      end;
...
потом присвоить переменную глобально:
Код:
var zone, zone1: TFontStyles;
и затем, в OnMouseEnter и onMouseLeave TImage присваивать переменной zone, определенный стиль шрифта и перерисовывать форму.. а в onPaint формы канвасу присваивать значение этой переменной:
Код:
...
   canvas.Font.Style := zone;
...
теперь вопрос: как достичь того же эффекта, только правильно?
skalt12 вне форума Ответить с цитированием
Старый 11.08.2010, 12:38   #2
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Вместо игры с Image в OnMouseEnter и onMouseLeave просто посылайте форме InvalidateWindow на область с текстом, если мышь пересекла границы области текста.

А в своём OnPaint смотрите: если курсор мыши на тексте - то рисуете жирно, нет - рисуете обычно.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 11.08.2010, 12:40   #3
Ins
Форумчанин
 
Регистрация: 29.12.2007
Сообщений: 137
По умолчанию

Да Label просто кинь на форму, у него есть и OnMouseEnter, и OnMouseLeave, а внем - Label.Font.Style := ...
Ins вне форума Ответить с цитированием
Старый 11.08.2010, 13:09   #4
skalt12
Пользователь
 
Регистрация: 05.07.2009
Сообщений: 87
По умолчанию

Цитата:
Сообщение от GunSmoker Посмотреть сообщение
Вместо игры с Image в OnMouseEnter и onMouseLeave просто посылайте форме InvalidateWindow на область с текстом, если мышь пересекла границы области текста.

А в своём OnPaint смотрите: если курсор мыши на тексте - то рисуете жирно, нет - рисуете обычно.
Понято, спасибо за наводку )
skalt12 вне форума Ответить с цитированием
Старый 11.08.2010, 13:09   #5
skalt12
Пользователь
 
Регистрация: 05.07.2009
Сообщений: 87
По умолчанию

Цитата:
Сообщение от Ins Посмотреть сообщение
Да Label просто кинь на форму, у него есть и OnMouseEnter, и OnMouseLeave, а внем - Label.Font.Style := ...
про Label в курсе, но что-то с canvas поработать захотелось
skalt12 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
какой именно участок кода в Delphi отвечает за связь с Fortran Bezo Помощь студентам 3 25.06.2010 13:56
Наведение мыши. DevilMaster HTML и CSS 11 12.06.2010 19:33
Открыть файл как Hex найти там некий участок кода, заменить его и сохранить AstraZak Общие вопросы C/C++ 10 05.03.2010 18:58
Наведение курсором на объект. segail Microsoft Office Excel 2 14.10.2009 16:39
наведение курсора на кнопку segail Microsoft Office Excel 1 27.06.2009 22:10