翻譯|其它|編輯:郝浩|2006-06-30 13:41:00.000|閱讀 1507 次
概述:
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
在一些圖形處理和建筑CAD軟件中,常常可以看到窗體界面的狀態欄中的top、left、button、righ會隨著鼠標的移動而改變其中的數值,始終保持記錄鼠標的位置。其實,這個實現起來很簡單,下面就讓我們來實現這一功能。
打開Delphi應用程序,新建一窗體,在控件面板第三頁的win32中找到statusbar控件,拖放到窗體的底部,調整好大小,在其屬性面板中找到panels,點擊右面的小工具圖標,打開editing
statusbar panels小界面,用add
new命令添加panels[0]、panels[1]、panels[2]、panels[3]四個項,并且在其text屬性中命名為top、left、button、righ。添加以下代碼,其功能是在窗體中畫矩形,并且,其狀態欄記錄鼠標的位置,非常簡單,在此不再贅述。
代碼如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls;
type
TForm1 = class(TForm)
StatusBar1: TStatusBar;
procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift:
TShiftState; X, Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState;
X, Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
private
{Private declarations}
public
{Public declarations}
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
startx,starty:integer;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift:
TShiftState; X, Y: Integer);
begin
startx:=x;
starty:=y;
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift:
TShiftState; X, Y: Integer);
begin
form1.Canvas.Rectangle(startx,starty,x,y);
statusbar1.panels[0].text:='';
statusbar1.panels[1].text:='';
statusbar1.panels[2].text:='';
statusbar1.panels[3].text:='';
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y:
Integer);
begin
//form1.Canvas.Rectangle(startx,starty,x,y);
if y>starty then
begin
statusbar1.panels[0].text:='Top:'+intTostr(starty);
statusbar1.panels[2].Text:='botton:'+inttostr(y);
end
else
begin
statusbar1.panels[0].text:='top:'+inttostr(y);
statusbar1.panels[2].text:='botton:'+inttostr(starty);
end;
if x>startx then
begin
statusbar1.panels[1].text:='left:'+inttostr(startx);
statusbar1.panels[3].text:='right:'+inttostr(x);
end
else
begin
statusbar1.panels[1].text:='left:'+inttostr(x);
statusbar1.panels[3].text:='right:'+inttostr(startx);
end;
end;
end.
注:本程序在Win98、Delphi6中運行通過。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn