Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 26.10.2012
Сообщений: 11
1

OnMouseMove и OnMouseLeave компонента label

06.03.2013, 13:22. Показов 2408. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте многоуважаемые форумчане, помогите пожалуйста разобраться с событиями OnMouseMove и OnMouseLeave. В приклепленных файлах есть проект, в котором нужно исправить следующее:
1) При наведении на Label его цвет менялся светлокрасный(это я реализовал)
2) При нажати на Label(событие OnClick) его цвет менялся на темнокрасный + цвет шрифта менялся на белый(это я реализовал)
3) При покидании мыши компонента Label(событие OnMouseLeave) его цвет не изменялся на светлокрасный. К примеру пользователь нажал на первый Label, его цвет изменился на темнокрасный, но при наведени на другие 7 Label'ов цвет первого нажатого Label'а не изменялся до тех пор, пока пользователь не нажмет к примеру на 2-ой или 7-ой Label. Помогите пожалуйста разобраться, зарнее спасибо!
Вложения
Тип файла: rar Пример 2.rar (219.9 Кб, 17 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.03.2013, 13:22
Ответы с готовыми решениями:

События OnMouseEnter и OnMouseLeave для компонента TBitBtn
Препод показал пример в Delphi 7, где при наведении курсором на TBitBtn он менял "цвет". Если я не...

Как создать собственное событие OnMouseEnter и OnMouseLeave для динамического компонента label[Y]?
Господа, требуется сделать событие OnMouseEnter и OnMouseLeave для создаваемых label. Есть некий...

Как переопределить методы компонента, обрабатывающие события OnMouseEnter, OnMouseLeave
У многих компонентов есть события OnMouseEnter, OnMouseLeave, но нет методов, которые эти события...

Обработчик события OnMouseMove для компонента Memo, с выводом сообщения "Курсор находится над объектом"
Конечно это перебор, но не могли вы помочь с этими мелкими программками))) 1. В компоненте...

3
0 / 0 / 0
Регистрация: 26.10.2012
Сообщений: 11
07.03.2013, 07:11  [ТС] 2
Тема все еще актуальна. Выкладываю код программы, ребят выручайте плиз, мне надо проект сдать в субботу...

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, jpeg, ExtCtrls;
 
type
  TForm1 = class(TForm)
    scrlbx1: TScrollBox;
    img1: TImage;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    procedure Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure FormCreate(Sender: TObject);
    procedure nored(ds:boolean);
    procedure Label1MouseLeave(Sender: TObject);
    procedure Label1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
(sender as TLabel).Transparent:=False;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
Label1.Color:=RGB(226,192,189);
Label2.Color:=RGB(226,192,189);
Label3.Color:=RGB(226,192,189);
Label4.Color:=RGB(226,192,189);
Label5.Color:=RGB(226,192,189);
Label6.Color:=RGB(226,192,189);
Label7.Color:=RGB(226,192,189);
Label8.Color:=RGB(226,192,189);
end;
 
procedure TForm1.nored(ds:boolean);
var
i: integer;
begin
if ds then
for i:=1 to 8 do
with self.FindComponent('Label'+inttostr(i))as tlabel do
begin
Transparent:=True;
Font.Color:=clBlack;
Color:=RGB(226,192,189);
end
end;
 
procedure TForm1.Label1MouseLeave(Sender: TObject);
begin
nored(true);
end;
 
procedure TForm1.Label1Click(Sender: TObject);
begin
(sender as TLabel).Color :=RGB(205,34,25);
(sender as TLabel).Font.Color :=clWhite;
end;
 
end.
0
http://1248.site
130 / 118 / 20
Регистрация: 15.05.2012
Сообщений: 341
Записей в блоге: 10
07.03.2013, 15:15 3
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, jpeg, ExtCtrls;
 
type
  TForm1 = class(TForm)
  ////.......
  private
    { Private declarations }
    clicked:TObject;
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if Sender=clicked then Exit; // если нажали то ничего не делаем
  (sender as TLabel).Transparent:=False;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
//...............
procedure TForm1.nored(ds:boolean);
//..............
procedure TForm1.Label1MouseLeave(Sender: TObject);
begin
  if Sender=clicked then Exit;
  // гасим если не нажимали
  with Sender as TLabel do
   begin
    Transparent:=True;
    Font.Color:=clBlack;
    Color:=RGB(226,192,189);
   end
//nored(true);
end;
 
procedure TForm1.Label1Click(Sender: TObject);
begin
  (sender as TLabel).Color :=RGB(205,34,25);
  (sender as TLabel).Font.Color :=clWhite;
  // запоминаем если нажали
  clicked:=Sender;
end;
 
end.
Как то так, может быть
0
0 / 0 / 0
Регистрация: 26.10.2012
Сообщений: 11
08.03.2013, 14:06  [ТС] 4
RinatV ваш предложенный код - это уже что-то близкое, к чему я стремлюсь, но здесь есть одно "но", как сделать так, чтобы после того, как пользователь нажал на 2-ой Label, темнокрасный цвет ранее нажатого Label'а изменялся на исходный(т.е серый)?

Добавлено через 22 часа 41 минуту
К примеру я подвел мышь на 1-ый Label, событие OnMouseMove отработала нормально(1-ый Label подсветился светлокрасным цветом), затем я нажал на 1-ый Label, событие OnClick 1-го Label'a отработала нормально( цвет 1-го Label'a изменился на темнокрасный цвет), затем я нажимаю нажимаю на 2-ой Label, цвет 2-го Label'a подсветился темнокрасным цветом. Но как сделать так, чтобы после того как я нажал на 2-ой Label, цвет 1-го Label'a автоматически изменился на исходный(серый цвет), т.е из всех 8-ми Label'ов темнокрасным цветом должен гореть только один Label. Пожалуйста помогите разобраться...
0
08.03.2013, 14:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.03.2013, 14:06
Помогаю со студенческими работами здесь

Прозрачный фон у компонента Label
собственно возможно ли это??? чтобы оставлся один текст, а фона не было?? или нужно использовать...

Идеи, темы, компонента Label
Qq, дали тему курсовой "Создать программу работы компонента Label" Просьба накидать о чем или что...

Программное удаление компонента label
Здравствуйте. У меня возникла проблема и не знаю как её решить. procedure...

Не меняются размеры компонента Label
Здравствуйте. у меня такая проблема, я установил, Microsoft Visual C++ 2010 Express, запустил...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru