注册 登录
编程论坛 Delphi论坛

[求助]一个让我郁闷的鼠标操作

ideajun 发布于 2006-04-06 13:31, 563 次点击
一个让我郁闷的鼠标操作

我想做一个鼠标点击Label标签,标签变色的简单操作,可是失败了~~~~~~~
当我把label1MouseDown放进panel1MouseDown中时,点击panel1是标签变色了,但这不是我想要的.
下面是我的代码:((请多多指教!!))(拖动到是还行)
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Panel1: TPanel;
Label1: TLabel;
Button1: TButton;
procedure Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Button1Click(Sender: TObject);
procedure Label1EndDrag(Sender, Target: TObject; X, Y: Integer);
procedure Panel1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Label1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);

private
{ Private declarations }
public
{ Public declarations }
panel1_x,panel1_y,label1_x,label1_y : integer;
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
label1_x :=x;
label1_y := y;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
close();
end;

procedure TForm1.Label1EndDrag(Sender, Target: TObject; X, Y: Integer);
begin
label1.Left:=panel1_x-label1_x;
label1.top :=panel1_y-label1_y;
end;

procedure TForm1.Panel1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
panel1_x:=x;
panel1_y:=y;
end;

procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
panel1_x:=x;
panel1_y:=y;
end;


procedure TForm1.Label1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if button = mbleft
then label1.Color:=cllime;
end;}

end.

4 回复
#2
ysp_19842006-04-09 17:53

不只你为什么在窗体上加panel组件。如果你只是想做一个鼠标点击Label标签,标签变色的简单操作。我觉得不用那么麻烦。
procedure TForm1.Label1Click(Sender: TObject);
begin
label1.Color:=RGB(random(255),random(255),random(255));
end;
用上面的代码,每单击一次label1。label1就变成另一种颜色。是不是你想要得?

#3
wqwy1112006-04-10 15:14
“RGB(random(255),random(255),random(255));”有什么含义?为什么这样写?
#4
liuxu6142006-06-07 23:43
#5
woistianyi2006-06-15 16:33
哈哈哈,笑死我了
1