Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Label в виде гиперссылки, проблема, должен подсвечиваться при наведении 
V
    Опции темы
Etar
Дата 20.1.2009, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 21.2.2008

Репутация: нет
Всего: 1



Привет!
Подскажите пожалуйста.

Пытаюсь сделать так чтобы у меня Label был как гиперссылка.
Т.е. когда я на него навожу, то курсор становится в виде руки, а сам текст меняет цвет (например).

Так вот:

проблема 1: установил свойство Cursor Label'а на crHandPoint  - все нормально, но только курсор это не виндосовский; у меня установлен в винде другой курсор руки, и какой бы я не ставил у себя - в программе используется встроенный курсор руки, а хотелось чтобы был виндосовский

проблема 2: цвет текста должен меняться назад, когда мышь уходит с Label'а, меняться то он меняется...
да вот только если мышью нажать на этом label'е и не отпуская переместить курсор в сторону - то цвет (и курсор) остается старым, а должен пропадать
т.е. с нажатой мышью событие MouseLeave не возникает

подскажите пожалуйста как можно это решить

спасибо
PM MAIL   Вверх
THandle
Дата 20.1.2009, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 65
Всего: 372



PM   Вверх
Etar
  Дата 9.4.2009, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 21.2.2008

Репутация: нет
Всего: 1



Посмотрел, сделал так же, но вторую проблему это нисколько не решило.

Нужно чтобы было так:

1. Навел мышью на Label - Label сменил цвет, курсор стал в виде руки - работает
2. Нажал мышью на Label и переместил мышь В ПРЕДЕЛАХ Label'а - Label и курсор остались теми же - работает
3. Переместил мышь ЗА ПРЕДЕЛЫ Label'а - Label сменил цвет на обычный, курсор стал в виде стрелки - НЕ работает
4. Отпустил кнопку мыши
 
Исходный код:


Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Label1MouseLeave(Sender: TObject);
    procedure Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Label1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses ShellAPI;

procedure TForm1.FormCreate(Sender: TObject);
begin
Screen.Cursors[crHandPoint]:=LoadCursor(0,IDC_HAND);

  Label1.Cursor:=crHandPoint;
  Label1.Font.Style := Label1.Font.Style + [fsUnderLine];
end;

procedure TForm1.Label1Click(Sender: TObject);
begin
  ShellExecute(Handle, nil, 'http://forum.vingrad.ru', nil, nil, SW_SHOW);
end;

procedure TForm1.Label1MouseLeave(Sender: TObject);
begin
  Label1.Font.Color := clGreen;
end;

procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  Label1.Font.Color:=clRed;
end;

end.




Это сообщение отредактировал(а) Etar - 9.4.2009, 08:33
PM MAIL   Вверх
Etar
  Дата 9.4.2009, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 21.2.2008

Репутация: нет
Всего: 1



Еще один момент мне не понятный:

есть компонент один, как раз такой какой мне нужен: http://www.torry.net/vcl/labels/linklabels/THyperLink.zip
тем есть исходник и exe

так вот, запустив exe - все работает просто супер, как мне и хотелось бы

а вот попытался установить - и НЕ ФИГА, работает с проблемой 2!!!

может здесь дело в самой Delphi??

(у меня 2009)
PM MAIL   Вверх
razsagal
Дата 9.4.2009, 09:55 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 23.10.2007
Где: Украина, Днепродз ержинск

Репутация: 1
Всего: 1



только что в 2009 попробовал: все правильно работает, правда, если зажать мышку и переместить, то ссылка остается светится, но как только отпустить кнопку на мыши, то шрифт становится прежним.
но, если у вас так и не работает, то пробуйте отслеживать перемещение мышки (поможет PtinRect(rect,point(X,Y)))
или
попробуйте отследить момент ухода с компонента по точкам останова(модули Graphics и StdCtrls).

З.Ы. отчего ж у вас не работает, может дополнения какие установили... и вместо Label1MouseMove лучше поставьте Label1MouseEnter

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  example.rar 195,03 Kb
PM MAIL ICQ   Вверх
MetalFan
Дата 9.4.2009, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



2007я. MouseLeave приходит не при уходе курсора с зажатой ЛКМ, а при отпускании ЛКМ неважно где.


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Etar
Дата 9.4.2009, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 21.2.2008

Репутация: нет
Всего: 1



Ура!

Решил проблему 2, причем очень просто:

(тот же код, но):

Код

procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  Label1.Font.Color:=clRed;
  ReleaseCapture;
end;

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0880 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.