實現控制元件的移動、改變大小(DELPHI實現) (轉)
實現的移動,改變大小(實現)
主要使用Perform方法
function Perform(Msg: Cardinal; WParam, LParam: Longint): Longint;
只要能夠使用類似於的SendMessage(),本方法同樣可在其他環境裡應用。
用Delphi實現
首先,建立一個應用,在一個窗體里加入一個Panel1,儲存為main.pas;
然後,分別在Panel1的滑鼠移動、滑鼠按下事件裡新增程式碼;
滑鼠移動:控制游標的形狀
procedure TForm1.Panel1MouseMove(Sender: T; Shift: TShiftState; X,
Y: Integer);
begin
if (x>=0)and(x<=3) then
begin
if (y>=0)and(y<=3) then Panel1.Cursor:=crSizeNWSE;
if (y>3)and(y
end
else if (x>3)and(x
if (y>=0)and(y<=3) then Panel1.Cursor:=crSizeNS;
if (y>3)and(y
end
else if (x>=Panel1.Width-3)and(x<=Panel1.Width) then
begin
if (y>=0)and(y<=3) then Panel1.Cursor:=crSizeNESW;
if (y>3)and(y
end;
end;
滑鼠按下:控制Panel的大小或位置
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
if (x>=0)and(x<=3) then
begin
file://左上角方向改變大小
if (y>=0)and(y<=3) then Panel1.Perform(WM_Symmand,$F004,0);
file://左側
if (y>3)and(y
if (y>=Panel1.Height-3)and(y<=Panel1.Height) then Panel1.Perform(WM_SysCommand,$F007,0);
end
else if (x>3)and(x
file://上側
if (y>=0)and(y<=3) then Panel1.Perform(WM_SysCommand,$F003,0);
file://移動控制元件
if (y>3)and(y
if (y>=Panel1.Height-3)and(y<=Panel1.Width) then Panel1.Perform(WM_SysCommand,$F006,0);
end
else if (x>=Panel1.Width-3)and(x<=Panel1.Width) then
begin
file://右上角
if (y>=0)and(y<=3) then Panel1.Perform(WM_SysCommand,$F005,0);
file://右側
if (y>3)and(y
if (y>=Panel1.Height-3)and(y<=Panel1.Width) then Panel1.Perform(WM_SysCommand,$F008,0);
end;
end;
主要使用 Perfo方法為
附錄1.全部程式碼如下:
unit main;
interface
uses
, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Panel1: TPanel;
procedure Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
if (x>=0)and(x<=3) then
begin
if (y>=0)and(y<=3) then Panel1.Perform(WM_SysCommand,$F004,0);
if (y>3)and(y
end
else if (x>3)and(x
if (y>=0)and(y<=3) then Panel1.Perform(WM_SysCommand,$F003,0);
if (y>3)and(y
end
else if (x>=Panel1.Width-3)and(x<=Panel1.Width) then
begin
if (y>=0)and(y<=3) then Panel1.Perform(WM_SysCommand,$F005,0);
if (y>3)and(y
end;
end;
procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if (x>=0)and(x<=3) then
begin
if (y>=0)and(y<=3) then Panel1.Cursor:=crSizeNWSE;
if (y>3)and(y
end
else if (x>3)and(x
if (y>=0)and(y<=3) then Panel1.Cursor:=crSizeNS;
if (y>3)and(y
end
else if (x>=Panel1.Width-3)and(x<=Panel1.Width) then
begin
if (y>=0)and(y<=3) then Panel1.Cursor:=crSizeNESW;
if (y>3)and(y
end;
end;
附錄2.API SendMessage()介紹
SendMessage === user32.lib
LRESULT SendMessage(
HWND hWnd, // handle of destination window
UINT Msg, // message to send
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);
2001.9.27
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1007117/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- java實現控制元件的移動及使用滑鼠改變控制元件大小Java控制元件
- js實現的拖動改變視窗大小功能JS
- 滑鼠移動到button顏色改變的實現
- 在執行時使用滑鼠移動控制元件和改變控制元件的大小 (轉)控制元件
- DELPHI也可以實現控制元件陣列,用定義陣列變數實現控制元件陣列 (轉)控制元件陣列變數
- XE 畫矩形實現拖拉改變大小(屬性)
- Jquery實現滑鼠拖動改變div高度jQuery
- Delphi中停靠技術的實現 (轉)
- Singleton模式之Delphi實現 (轉)模式
- Delphi中TFlowPanel實現滾動條效果
- jquery實現改變所匹配的內容jQuery
- 在Delphi中實現圖片的旋轉、縮放 (轉)
- 一勞永逸讓VB自動改變控制元件大小控制元件
- 用Delphi實現遠端螢幕抓取 (轉)
- 設計模式、用Delphi實現---->Builder模式 (轉)設計模式UI
- 兩種Delphi實現Singleton模式方法 (轉)模式
- 在Delphi中實現任意形狀的窗體 (轉)
- Qt實現控制元件的漸隱漸現動效QT控制元件
- jquery實現的元素以動畫方式移動和漸變效果jQuery動畫
- 4.2.13 主備庫實現自動故障轉移
- PostgreSQL中利用驅動程式實現故障轉移SQL
- Delphi程式設計:完全控制桌面的實現 (轉)程式設計
- 設計模式、用Delphi實現---->Singleton 模式 (轉)設計模式
- NFT 的建立和轉移功能實現
- Delphi中序列通訊的實現 作者:阮幫秋 (轉)
- delphi 判斷類是否實現介面,獲取類實現的介面
- JS實現拖動div層移動JS
- Delphi系列談之:Delphi中的靜態屬性及靜態方法的實現 (轉)
- 用rman copy current controlfile實現控制檔案路徑改變的遷移
- ae+C#實現圖層管理控制元件上的圖層移動功能C#控制元件
- C#實現控制元件陣列 (轉)C#控制元件陣列
- Delphi建立ActiveX控制元件,實現安全介面及無介面程式碼控制元件
- iOS開發UI篇--使用CAShapeLayer實現一個音量大小動態改iOSUI
- Delphi7下仿Ado.Net類的實現 (轉)
- Heartbeat實現LVS的故障轉移
- DOTween實現緩動變值動效
- 移動端實現內滾動的4種方案
- 用Delphi在區域網中實現網上影院 (轉)