Solved

OnMoveMove Event

Posted on 1998-12-18
7
282 Views
Last Modified: 2012-05-04
Hi

My problem is quite straight forward. I have got 2 edit boxes. if the mouse is over edit1, then it will make edit2 go RED, else it will make edit2 go WHITE.

I have used the OnMouseMove event of edit1 and make edit2 RED. All OK. then, I have used the OnMouseMove event of the form to set the edit2 to WHITE. All OK

Now, if i place edit1, close to the edge of the form, and move my mouse fast enough out of the form, edit2 remains RED, because the move movement was to fast to go through the OnMouseMove event of the form.

How do i overcome this? any better ideas anyone?

Regards
Keith
0
Comment
Question by:keithcsl
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 2
7 Comments
 
LVL 3

Expert Comment

by:Matvey
ID: 1351777
Yes, there is a better method. There are events called CM_MOUSEENTER and CM_MOUSELEAVE. They aren't implemented in all controls, but we can make a "remix" of the edit, and use it insted. If I don't come back in 10 minutes, DIY ;-)
0
 
LVL 8

Expert Comment

by:ZifNab
ID: 1351778
Hi keithcsl,

a very easy solution is :

procedure TForm1.Edit1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
 if (X = 0) or (X=(Sender as TEdit).width) or
      (Y=0) or (Y=(Sender as TEdit).Height) then edit2.Color := clWhite
      else edit2.Color := clRed;
end;

Regards, Zif.
0
 
LVL 8

Expert Comment

by:ZifNab
ID: 1351779
reject my answer. Matvey's solution will be better.
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
LVL 3

Expert Comment

by:Matvey
ID: 1351780
Heh, OK, I'm a bit late, but here it is:

_________________________________________________________________________
unit MUEdit;

interface

uses
  Messages, Classes, Controls, StdCtrls;

type
  TMUEdit = class(TEdit)
  private
    FOnMouseEnter: TNotifyEvent;
    FOnMouseLeave: TNotifyEvent;
    procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
  published
    property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
    property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
  end;

procedure Register;

implementation

procedure TMUEdit.CMMouseEnter(var Message: TMessage);
begin
  inherited;
  if Assigned(FOnMouseEnter) then FOnMouseEnter(Self);
end;

procedure TMUEdit.CMMouseLeave(var Message: TMessage);
begin
  inherited;
  if Assigned(FOnMouseLeave) then FOnMouseLeave(Self);
end;

procedure Register;
begin
  RegisterComponents('Samples', [TMUEdit]);
end;

end.
_________________________________________________________________________

Install this component, and you have got the TMUEdit on the Samples panel. If you put it on your form, you have the OnMouseEnter and OnMouseLeave events which you can use with absolutely no farther work required. These events will be fired no meter which way the cursor enters or leavs the edit rectangle. Why the guys from Borland weren't so kind and did it themselvs??? :)

--Matvey
0
 
LVL 1

Author Comment

by:keithcsl
ID: 1351781
matvey

could u post it as an answer?
thanks heaps

Regards
keith
0
 
LVL 3

Expert Comment

by:Matvey
ID: 1351782
Hi Keith, glad it's one headache less!
0
 
LVL 3

Accepted Solution

by:
Matvey earned 40 total points
ID: 1351783
Woopst...
0

Featured Post

On Demand Webinar - Networking for the Cloud Era

This webinar discusses:
-Common barriers companies experience when moving to the cloud
-How SD-WAN changes the way we look at networks
-Best practices customers should employ moving forward with cloud migration
-What happens behind the scenes of SteelConnect’s one-click button

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

A lot of questions regard threads in Delphi.   One of the more specific questions is how to show progress of the thread.   Updating a progressbar from inside a thread is a mistake. A solution to this would be to send a synchronized message to the…
Have you ever had your Delphi form/application just hanging while waiting for data to load? This is the article to read if you want to learn some things about adding threads for data loading in the background. First, I'll setup a general applica…
In this brief tutorial Pawel from AdRem Software explains how you can quickly find out which services are running on your network, or what are the IP addresses of servers responsible for each service. Software used is freeware NetCrunch Tools (https…
This is my first video review of Microsoft Bookings, I will be doing a part two with a bit more information, but wanted to get this out to you folks.
Suggested Courses
Course of the Month8 days, 20 hours left to enroll

617 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question