怎样让用户在运行期实现设计期那样的界面设计方式
来源:互联网 发布:苹果6蜂窝移动数据设置 编辑:程序博客网 时间:2024/05/22 00:07
object frmMain: TfrmMain
Left = 335
Top = 199
BorderStyle = bsSingle
Caption = 'Form1'
ClientHeight = 183
ClientWidth = 320
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -10
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
Position = poScreenCenter
Scaled = False
PixelsPerInch = 96
TextHeight = 13
object GroupBox1: TGroupBox
Left = 16
Top = 8
Width = 73
Height = 81
Caption = 'GroupBox1'
TabOrder = 0
OnMouseDown = ControlMouseDown
OnMouseMove = ControlMouseMove
OnMouseUp = ControlMouseUp
end
object CheckBox1: TCheckBox
Left = 40
Top = 120
Width = 97
Height = 17
Caption = 'CheckBox1'
TabOrder = 1
OnMouseDown = ControlMouseDown
OnMouseMove = ControlMouseMove
OnMouseUp = ControlMouseUp
end
object Button1: TButton
Left = 102
Top = 16
Width = 75
Height = 25
Caption = 'Button1'
TabOrder = 2
OnMouseDown = ControlMouseDown
OnMouseMove = ControlMouseMove
OnMouseUp = ControlMouseUp
end
object Edit1: TEdit
Left = 136
Top = 64
Width = 121
Height = 21
TabOrder = 3
Text = 'Edit1'
end
end
********************************************************
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Registry, ExtCtrls, ComCtrls;
type
TfrmMain = class(TForm)
GroupBox1: TGroupBox;
CheckBox1: TCheckBox;
Image1: TImage;
Button1: TButton;
procedure ControlMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure ControlMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure ControlMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
downX, downY: Integer;
dragging: Boolean;
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
frmMain: TfrmMain;
implementation
{$R *.DFM}
type
TMoveCracker = class(TControl);
procedure TfrmMain.ControlMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
downX := X;
downY := Y;
dragging := TRue;
TMoveCracker(Sender).MouseCapture := True;
end;
procedure TfrmMain.ControlMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if dragging then
with Sender as TControl do
begin
Left := X - downX + Left;
Top := Y - downY + Top;
end;
end;
procedure TfrmMain.ControlMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if dragging then
begin
dragging := False;
TMoveCracker(Sender).MouseCapture := False;
end;
end;
end.
定义三个方法ControlMouseUp,ControlMouseMove,ControlMouseDown,分别对应桌面所有控件的OnMouseDown,OnMouseMove,OnMouseUp方法即可。
2. 关于动态控件生成和控件属性、方法赋值的问题。
这是标准的Delphi RTTI调用,Delphi Inspector自己也是通过RTTI调用的,没有什么好简单的吧,本来就很简单。
- 怎样让用户在运行期实现设计期那样的界面设计方式
- C++中多态如何在编译期和运行期实现
- C#实现运行期控件设计
- 怎样让自己的足疗店长期发展下去
- java务必让常量的值在运行期保持不变
- Eclipse怎样进行类似Visual Studio那样的 GUI界面设计
- C++的多态如何在编译和运行期实现
- C++的多态如何在编译和运行期实现
- C++的多态如何在编译和运行期实现
- C++的多态如何在编译和运行期实现
- C++的多态如何在编译和运行期实现
- 什么是运行期包与设计期包 (同时解释了产生 DesignIntf 错误的原因)
- 什么是运行期包与设计期包
- Access Violation分成两大类:运行期和设计期
- 运行期包与设计期包详解
- 控件开发中的设计期包和运行期包
- C++多态在编译和运行期的差别
- 软件在运行期,修改panel的位置与大小
- 对话框贴图方法
- 曲线绘制
- 在Delphi中使用Indy控件实现邮件群发
- secureCRT tips (转)
- Qt中不规则窗体和部件的实现
- 怎样让用户在运行期实现设计期那样的界面设计方式
- 一种定位内存泄露的方法(Solaris)
- 使用RemObject SDK
- 潜能有多大,你知道吗
- Android开发3:项目目录介绍&HelloWorld
- HTTP协议中的Tranfer-Encoding:chunked编码解析
- 着色模式
- 转:Proguard使用教程
- 嵌入式系统的动态电源管理技术