Форум: "Основная";
Текущий архив: 2004.09.05;
Скачать: [xml.tar.bz2];
Внизcm_mouseleave при MouseDown Найти похожие ветки
← →
iBitmap © (2004-08-20 17:18) [0]Доброе время суток!
Я прочитал тему модернизация TImage.
А у меня такой вопрос, есть ли такоя функиция, как CM_MOUSELEAVE, только при нажатой кнопки мыши?
И еще вопрос, можно ли сделать, чтобы при выполнении procedure TImage1.CMMouseEnter(var Msg: TMessage); в переменную String (назовем ее CName: String) записывалось бы имя компонента.
Заранее благодарен.
← →
antonn © (2004-08-20 17:32) [1]>чтобы при выполнении procedure TImage1.CMMouseEnter(var Msg: >TMessage); в переменную String (назовем ее CName: String) >записывалось бы имя компонента.
В OnMouseEnter вставляешь
String:= ( Sender as Timage(ну или как там у тебя) ).name;
>А у меня такой вопрос, есть ли такоя функиция, как CM_MOUSELEAVE, только при нажатой кнопки мыши?
Используй переменную - B:boolean;
При OmMouseDown B:=true;
При OnMouseUp B:=false;
А в OnMouseLeave делай проверку
← →
iBitmap © (2004-08-20 23:53) [2]Вот я написал такой код для компонента
unit BSSSButton;
interface
uses
Windows, Messages, SysUtils, Classes, Controls, ExtCtrls, Dialogs, Graphics;
type
TBSSButton = class(TImage)
private
FOnMouseLeave: TNotifyEvent;
FOnMouseEnter: TNotifyEvent;
procedure CMMouseEnter(var MSG: TMessage); Message CM_MOUSEENTER;
procedure CMMouseLeave(var MSG: TMessage); Message CM_MOUSELEAVE;
protected
procedure MouseEnter; Dynamic;
procedure MouseLeave; Dynamic;
public
{ Public declarations }
published
property OnMouseEnter: TNotifyEvent Read FOnMouseEnter Write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent Read FOnMouseLeave Write FOnMouseLeave;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents("ActiveX", [TBSSButton]);
end;
procedure TBSSButton.CMMouseEnter(var Msg: TMessage);
begin
MouseEnter;
end;
procedure TBSSButton.CMMouseLeave(var Msg: TMessage);
begin
MouseLeave;
end;
procedure TBSSButton.MouseEnter;
begin
If Assigned(FOnMouseEnter) Then
begin
FOnMouseEnter(Self);
!!!Вот здесь нужно определить имя, которое задано в проекте (Name)
и как потом самому себе присвоить картинку с формы из image1.picture.!!!
end;
end;
procedure TBSSButton.MouseLeave;
begin
If Assigned(FOnMouseLeave) Then
FOnMouseLeave(Self);
end;
end.
← →
Gero © (2004-08-21 00:06) [3]
> iBitmap © (20.08.04 23:53)
Похвастаться решил?
← →
iBitmap © (2004-08-21 00:54) [4]Нет.
Там вопрос в процедуре procedure TBSSButton.MouseEnter;
как из компонента управлять объектами на главной форме.. и как узнать имя компонента, которое я задал при проектировании проекта (Name)?
← →
Gero © (2004-08-21 00:59) [5]
> Там вопрос в процедуре procedure TBSSButton.MouseEnter;
Сорри, не увидел.
> как из компонента управлять объектами на главной форме
uses Forms;
...
Application.MainForm
> и как узнать имя компонента, которое я задал при проектировании
> проекта (Name)?
Свойство Name ?
← →
iBitmap © (2004-08-21 01:13) [6]Не имя программы, а вот я компонент на форму добавил и задал ему имя (name), и во время работы программы мне нужно узнать во время выполнения процедуры procedure TBSSButton.MouseEnter;его имя
← →
antonn © (2004-08-21 07:12) [7]А ты вставляй все это дело в Design, в инспекторе объектов. При установленном компоненте.
← →
Gero © (2004-08-21 08:03) [8]
> iBitmap © (21.08.04 01:13)
TComponent.Name
← →
iBitmap © (2004-08-21 12:59) [9]Странно, в TComponent свойства Name нет. Я так пробовал сделать:
procedure TBSSButton.MouseEnter;
begin
If Assigned(FOnMouseEnter) Then
begin
FOnMouseEnter(Self);
(FindComponent(TComponent.Nameas TBSSButton).Picture:= Application.MainForm.Image1.Picture;
end;
end;
Смысл того, что мне нужно в этой процедуре наврное понятен. осталось только ее исправить, чтобы она работала.
← →
iBitmap © (2004-08-21 13:38) [10]Точнее ошибочка вышла... Нужно в другую процедуру писать. но все равно не работает. даже пробовал TBSSButton.Name там тоже нет Name. Нужно в эту процедуру писать:
procedure TBSSButton.CMMouseEnter(var Msg: TMessage);
begin
(FindComponent(TComponent.Name as TBSSButton).Picture:= Application.MainForm.Image1.Picture;
MouseEnter;
end;
Задача такая, хотя наверное она ясна, но все же напишу, нужно компоненту узнать свое имя, потом найти самого себя (FindComponent), и присвоить такую же картинку, как у Image1.
← →
Gero © (2004-08-21 19:55) [11]
> Странно, в TComponent свойства Name нет.
Ничем не могу помочь.
← →
iBitmap © (2004-08-21 21:26) [12]А если как-нибудь через (FindComponent((Sender as TBSSButton).name) as TBSSButton).Picture:= Application.MainForm.Image1.Picture; ?
Может есть какой-нибудь такой способ?
← →
iBitmap © (2004-08-21 22:53) [13]Почти добрался до цели: Вот что получилось (Я просто Sender задал и все):
procedure TBSSButton.MouseEnter(Sender: TObject);
var cbssImage: TImage;
cbssButton: TBssButton;
begin
If Assigned(FOnMouseEnter) Then
begin
cbssButton:= (Sender as TBSSButton);
cbssImage:= (FindComponent(String(Sender) + "_normal") as TImage);
cbssButton.Picture:= Application.MainForm.cbssImage.Picture; //Но на этой строчке дельфи пишет "Undeclared indentifier: "cbssImage"", хотя все объявлено. Еще пишет "Statement expected, but expression of type "TPicture" found".
FOnMouseEnter(Self);
end;
end;
← →
iBitmap © (2004-08-21 23:10) [14]^^ Добавлено к ^^
Я стер Application.MainForm и оставил просто
cbssButton.Picture:= cbssImage.Picture;
После чего компонент успешно проинсталировался, но на этой строчке все равно запарывается.
Пробовал и эту строчку испавить cbssImage:= (FindComponent(String(Sender) + "_normal") as TImage);
Выяснилось, что он в стринг не правильно переводит я оставил только:
cbssImage:= (FindComponent("_normal") as TImage);
Все равно застревает на той строчке (cbssButton.Picture:= cbssImage.Picture;)
← →
iBitmap © (2004-08-21 23:17) [15]^^^^ Добавление к ^^^^
Еще выяснилось, чт0
Здесь:
cbssButton:= (Sender as TBSSButton);
и здесь:
cbssImage:= (FindComponent(String(Sender) + "_normal") as TImage);
Присваевается значение nil, что не есть хорошо,
И если прописать сразу все
Application.MainForm.BSSButton1.Picture:= Application.MainForm.Image1.Picture; ТО даже не запускается.
← →
iBitmap © (2004-08-22 15:34) [16]Никто не знает ответа? Если нет, то я тогда приступаю к нудному, но работоспособному способу.
← →
Dynamic © (2004-08-23 00:58) [17]http://www.vr-online.ru/php/forum/viewtopic.php?p=30342#30342
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.09.05;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.036 c