FireMonkey 的控件都是自己绘制的(而不是基于系统组件), 我想它们应该是基于一些基本图形; 就从基本图形开始吧.

FMX.Objects 单元给出的类:


TShape //基本图形的基类
TLine
TRectangle
TRoundRect
TCalloutRectangle
TEllipse
TCircle
TPie
TArc
TPath
TTextTImage
TPaintBox
TSelection
TSelectionPoint


添加一个 TRectangle, 先纵观一下它的可用功能:


{ TRectangle }publicconstructor Create(AOwner: TComponent); override;publishedproperty Fill;property Stroke;property StrokeCap;property StrokeDash;property StrokeJoin;property StrokeThickness;property XRadius: Single read FXRadius write SetXRadius;property YRadius: Single read FYRadius write SetYRadius;property Corners: TCorners read FCorners write SetCorners stored IsCornersStored;property CornerType: TCornerType read FCornerType write SetCornerType default TCornerType.ctRound;property Sides: TSides read FSides write SetSides stored IsSidesStored;{ TRectangle 的父类 TShape }protectedprocedure FillChanged(Sender: TObject); virtual;procedure StrokeChanged(Sender: TObject); virtual;function GetShapeRect: TRectF;procedure Painting; override;procedure AfterPaint; override;publicconstructor Create(AOwner: TComponent); override;destructor Destroy; override;property Fill: TBrush read FFill write SetFill;property Stroke: TBrush read FStroke write SetStroke;property StrokeThickness: Single read FStrokeThickness write SetStrokeThickness stored IsStrokeThicknessStored;property StrokeCap: TStrokeCap read FStrokeCap write SetStrokeCap default TStrokeCap.scFlat;property StrokeDash: TStrokeDash read FStrokeDash write SetStrokeDash default TStrokeDash.sdSolid;property StrokeJoin: TStrokeJoin read FStrokeJoin write SetStrokeJoin default TStrokeJoin.sjMiter;property ShapeRect: TRectF read GetShapeRect;{ TShape 的父类 TControl(来自 FMX.Types) }publicconstructor Create(AOwner: TComponent); override;destructor Destroy; override;procedure AddObject(AObject: TFmxObject); override;procedure RemoveObject(AObject: TFmxObject); override;procedure SetNewScene(AScene: IScene); virtual;procedure SetBounds(X, Y, AWidth, AHeight: Single); virtual;{ matrix }function AbsoluteToLocal(P: TPointF): TPointF; virtual;function LocalToAbsolute(P: TPointF): TPointF; virtual;function AbsoluteToLocalVector(P: TVector): TVector; virtual;function LocalToAbsoluteVector(P: TVector): TVector; virtual;function PointInObject(X, Y: Single): Boolean; virtual;{ optimizations }procedure RecalcUpdateRect; virtual;procedure RecalcNeedAlign; virtual;procedure RecalcOpacity; virtual;procedure RecalcAbsolute; virtual;procedure RecalcEnabled; virtual;procedure RecalcHasEffect; virtual;{ drag and drop }function MakeScreenshot: TBitmap;{ caret }procedure ShowCaretProc;procedure SetCaretPos(const APoint: TPointF);procedure SetCaretSize(const ASize: TPointF);procedure SetCaretColor(const AColor: TAlphaColor);procedure HideCaret;{ align }procedure BeginUpdate; virtual;procedure EndUpdate; virtual;procedure Realign; virtual;{ paining }procedure ApplyEffect;procedure Painting; virtual;procedure DoPaint; virtual;procedure AfterPaint; virtual;{ effects }procedure UpdateEffects;{ }procedure SetFocus;procedure PaintTo(const ACanvas: TCanvas; const ARect: TRectF; const AParent: TFmxObject = nil);procedure Repaint;procedure InvalidateRect(ARect: TRectF);procedure Lock;property AbsoluteMatrix: TMatrix read GetAbsoluteMatrix;property AbsoluteOpacity: Single read GetAbsoluteOpacity;property AbsoluteWidth: Single read GetAbsoluteWidth;property AbsoluteHeight: Single read GetAbsoluteHeight;property AbsoluteScale: TPointF read GetAbsoluteScale;property AbsoluteEnabled: Boolean read GetAbsoluteEnabled;property HasEffect: Boolean read GetAbsoluteHasEffect;property HasDisablePaintEffect: Boolean read GetAbsoluteHasDisablePaintEffect;property HasAfterPaintEffect: Boolean read GetAbsoluteHasAfterPaintEffect;property ChildrenRect: TRectF read GetChildrenRect;property InvertAbsoluteMatrix: TMatrix read GetInvertAbsoluteMatrix;property InPaintTo: Boolean read FInPaintTo;property LocalRect: TRectF read GetLocalRect;property AbsoluteRect: TRectF read GetAbsoluteRect;property UpdateRect: TRectF read GetUpdateRect;property BoundsRect: TRectF read GetBoundsRect write SetBoundsRect;property ParentedRect: TRectF read GetParentedRect;property ParentedVisible: Boolean read GetParentedVisible;property ClipRect: TRectF read GetClipRect;property Canvas: TCanvas read GetCanvas;property Scene: IScene read FScene;property AutoCapture: Boolean read FAutoCapture write FAutoCapture default False;property CanFocus: Boolean read FCanFocus write FCanFocus default False;property DisableFocusEffect: Boolean read FDisableFocusEffect write FDisableFocusEffect default False;property DisableDefaultAlign: Boolean read FDisableDefaultAlign write FDisableDefaultAlign;property TabOrder: TTabOrder read GetTabOrder write SetTabOrder default -1;published{ triggers }property IsMouseOver: Boolean read FIsMouseOver;property IsDragOver: Boolean read FIsDragOver;property IsFocused: Boolean read FIsFocused;property IsVisible: Boolean read FVisible;{ props }property Align: TAlignLayout read FAlign write SetAlign default TAlignLayout.alNone;property Cursor: TCursor read GetCursor write SetCursor default crDefault;property DragMode: TDragMode read GetDragMode write SetDragMode default TDragMode.dmManual;property EnableDragHighlight: Boolean read FEnableDragHighlight write FEnableDragHighlight default True;property Enabled: Boolean read FEnabled write SetEnabled default True;property Position: TPosition read FPosition write SetPosition;property RotationAngle: Single read FRotationAngle write SetRotationAngle;property RotationCenter: TPosition read FRotationCenter write FRotationCenter;property Locked: Boolean read FLocked write SetLocked default False;property Width: Single read FWidth write SetWidth;property Height: Single read FHeight write SetHeight;property Margins: TBounds read FMargins write FMargins;property Padding: TBounds read FPadding write FPadding;property Opacity: Single read FOpacity write SetOpacity stored IsOpacityStored;property ClipChildren: Boolean read FClipChildren write SetClipChildren default False;property ClipParent: Boolean read FClipParent write FClipParent default False;property HitTest: Boolean read FHitTest write SetHitTest default True;property CanClip: Boolean read FCanClip write FCanClip default True;property PopupMenu: TCustomPopupMenu read FPopupMenu write SetPopupMenu;property Scale: TPosition read FScale write FScale;property Visible: Boolean read FVisible write SetVisible default True;property DesignVisible: Boolean read FDesignVisible write SetDesignVisible default True;property OnDragEnter: TDragEnterEvent read FOnDragEnter write FOnDragEnter;property OnDragLeave: TNotifyEvent read FOnDragLeave write FOnDragLeave;property OnDragOver: TDragOverEvent read FOnDragOver write FOnDragOver;property OnDragDrop: TDragDropEvent read FOnDragDrop write FOnDragDrop;property OnDragEnd: TNotifyEvent read FOnDragEnd write FOnDragEnd;property OnKeyDown: TKeyEvent read FOnKeyDown write FOnKeyDown;property OnKeyUp: TKeyEvent read FOnKeyUp write FOnKeyUp;property OnClick: TNotifyEvent read FOnClick write FOnClick;property OnDblClick: TNotifyEvent read FOnDblClick write FOnDblClick;property OnCanFocus: TCanFocusEvent read FOnCanFocus write FOnCanFocus;property OnEnter: TNotifyEvent read FOnEnter write FOnEnter;property OnExit: TNotifyEvent read FOnExit write FOnExit;property OnMouseDown: TMouseEvent read FOnMouseDown write FOnMouseDown;property OnMouseMove: TMouseMoveEvent read FOnMouseMove write FOnMouseMove;property OnMouseUp: TMouseEvent read FOnMouseUp write FOnMouseUp;property OnMouseWheel: TMouseWheelEvent read FOnMouseWheel write FOnMouseWheel;property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;property OnPainting: TOnPaintEvent read FOnPainting write FOnPainting;property OnPaint: TOnPaintEvent read FOnPaint write FOnPaint;property OnResize: TNotifyEvent read FOnResize write FOnResize;property OnApplyStyleLookup: TNotifyEvent read FOnApplyStyleLookup write FOnApplyStyleLookup;{ TControl 的父类 TFmxObject (来自 FMX.Types) }publicconstructor Create(AOwner: TComponent); override;destructor Destroy; override;procedure Release(Delay: Single = 0.1);{ check for support interface }function IsIControl: Boolean;function AsIControl: IControl;procedure SetRoot(ARoot: IRoot);{ design }procedure SetDesign(Value: Boolean; SetChildren: Boolean = True);function ItemClass: string; virtual;{ clone }function Clone(const AOwner: TComponent): TFmxObject;procedure CloneChildFromStream(AStream: TStream);{ childs }procedure AddObject(AObject: TFmxObject); virtual;procedure InsertObject(Index: Integer; AObject: TFmxObject); virtual;procedure RemoveObject(AObject: TFmxObject); overload; virtual;procedure RemoveObject(Index: Integer); overload; virtual;procedure Exchange(AObject1, AObject2: TFmxObject); virtual;procedure DeleteChildren; virtual;procedure BringToFront;procedure SendToBack;procedure AddObjectsToList(const AList: TList);procedure AddControlsToList(const AList: TList);procedure Sort(Compare: TFmxObjectSortCompare); virtual;{ notify }procedure AddFreeNotify(const AObject: IFreeNotification);procedure RemoveFreeNotify(const AObject: IFreeNotification);{ tab }procedure GetTabOrderList(const List: TList; AChildren: Boolean);{ i/o }procedure LoadFromStream(const AStream: TStream);procedure SaveToStream(const Stream: TStream);procedure LoadFromBinStream(const AStream: TStream);procedure SaveToBinStream(const AStream: TStream);{ resource }function FindStyleResource(const AStyleLookup: string): TFmxObject; virtual;procedure UpdateStyle; virtual;{ animations }procedure StartAnimation(const AName: string); virtual;procedure StopAnimation(const AName: string); virtual;procedure StartTriggerAnimation(AInstance: TFmxObject; const ATrigger: string); virtual;procedure StartTriggerAnimationWait(AInstance: TFmxObject; const ATrigger: string); virtual;procedure StopTriggerAnimation(AInstance: TFmxObject); virtual;procedure ApplyTriggerEffect(AInstance: TFmxObject; const ATrigger: string); virtual;{ animation property }procedure AnimateFloat(const APropertyName: string; const NewValue: Single; Duration: ...);procedure AnimateColor(const APropertyName: string; NewValue: TAlphaColor; Duration: ...);procedure AnimateFloatDelay(const APropertyName: string; const NewValue: Single; Duration: ...);procedure AnimateFloatWait(const APropertyName: string; const NewValue: Single; Duration: ...);procedure StopPropertyAnimation(const APropertyName: string);{ }property Root: IRoot read FRoot;property Stored: Boolean read FStored write SetStored;{ }property TagObject: TObject read FTagObject write FTagObject;property TagFloat: Single read FTagFloat write FTagFloat;property TagString: string read FTagString write FTagString;{ children }property ChildrenCount: Integer read GetChildrenCount;property Children[Index: Integer]: TFmxObject read GetChild;{ binding }function FindBinding(const ABinding: string): TFmxObject;property Data: Variant read GetData write SetData;property Binding[const Index: string]: Variant read GetBinding write SetBinding;property Parent: TFmxObject read FParent write SetParent;property Index: Integer read GetIndex write SetIndex;publishedproperty BindingName: string read FBindingName write SetBindingName;property StyleName: string read FStyleName write SetStyleName;{ TFmxObject 的父类 TComponent (来自 System.Classes), 到这里不新鲜了 }publicconstructor Create(AOwner: TComponent); virtual;destructor Destroy; override;procedure BeforeDestruction; override;procedure DestroyComponents;procedure Destroying;function ExecuteAction(Action: TBasicAction): Boolean; dynamic;function FindComponent(const AName: string): TComponent;procedure FreeNotification(AComponent: TComponent);procedure RemoveFreeNotification(AComponent: TComponent);procedure FreeOnRelease;function GetEnumerator: TComponentEnumerator;function GetParentComponent: TComponent; dynamic;function GetNamePath: string; override;function HasParent: Boolean; dynamic;procedure InsertComponent(AComponent: TComponent);procedure RemoveComponent(AComponent: TComponent);procedure SetSubComponent(IsSubComponent: Boolean);function SafeCallException(ExceptObject: TObject; ExceptAddr: Pointer): HResult; override;function UpdateAction(Action: TBasicAction): Boolean; virtual;function IsImplementorOf(const I: IInterface): Boolean;function ReferenceInterface(const I: IInterface; Operation: TOperation): Boolean;property ComObject: IUnknown read GetComObject;property Components[Index: Integer]: TComponent read GetComponent;property ComponentCount: Integer read GetComponentCount;property ComponentIndex: Integer read GetComponentIndex write SetComponentIndex;property ComponentState: TComponentState read FComponentState;property ComponentStyle: TComponentStyle read FComponentStyle;property DesignInfo: Longint read FDesignInfo write FDesignInfo;property Owner: TComponent read FOwner;property VCLComObject: Pointer read FVCLComObject write FVCLComObject;property Observers: TObservers read GetObservers;publishedproperty Name: TComponentName read FName write SetName stored False;property Tag: NativeInt read FTag write FTag default 0;{ TComponent 的父类 TPersistent (来自 System.Classes) }publicdestructor Destroy; override;procedure Assign(Source: TPersistent); virtual;function GetNamePath: string; dynamic;{ TPersistent 的父类 TObject (来自 System) }publicconstructor Create;procedure Free;class function InitInstance(Instance: Pointer): TObject;procedure CleanupInstance;function ClassType: TClass; inline;class function ClassName: string;class function ClassNameIs(const Name: string): Boolean;class function ClassParent: TClass;class function ClassInfo: Pointer; inline;class function InstanceSize: Longint; inline;class function InheritsFrom(AClass: TClass): Boolean;class function MethodAddress(const Name: ShortString): Pointer; overload;class function MethodAddress(const Name: string): Pointer; overload;class function MethodName(Address: Pointer): string;class function QualifiedClassName: string;function FieldAddress(const Name: ShortString): Pointer; overload;function FieldAddress(const Name: string): Pointer; overload;function GetInterface(const IID: TGUID; out Obj): Boolean;class function GetInterfaceEntry(const IID: TGUID): PInterfaceEntry;class function GetInterfaceTable: PInterfaceTable;class function UnitName: string;class function UnitScope: string;function Equals(Obj: TObject): Boolean; virtual;function GetHashCode: Integer; virtual;function ToString: string; virtual;function SafeCallException(ExceptObject: TObject; ExceptAddr: Pointer): HResult; virtual;procedure AfterConstruction; virtual;procedure BeforeDestruction; virtual;procedure Dispatch(var Message); virtual;procedure DefaultHandler(var Message); virtual;class function NewInstance: TObject; virtual;procedure FreeInstance; virtual;destructor Destroy; virtual;


慢慢消化...


Delphi XE2 之 FireMonkey 入门(2)相关推荐

  1. Delphi XE2 之 FireMonkey 入门(35) - 控件基础: TFmxObject: 其它

    Delphi XE2 之 FireMonkey 入门(35) - 控件基础: TFmxObject: 其它 TFmxObject 增加了 TagObject.TagFloat.TagString, 算 ...

  2. Delphi XE2 之 FireMonkey 入门(1)

    Delphi XE2 的 FireMonkey 是跨平台的, 暂时只准备看看它在 Windows 下(我是 32 位 Win7)的应用情况. 很新的东西, 相信有了它, 以后的界面将会更灵活.漂亮, ...

  3. Delphi XE2 之 FireMonkey 入门(17) - 特效

    刚打开 XE2 时, 就从 Tool Palette 窗口的 Effects 组中发现洋洋洒洒的六十多个特效... 每个特效分别对应一个类, 分别来自 FMX.Effects 和 FMX.Filter ...

  4. Delphi XE2 之 FireMonkey 入门(20) - TStyleBook(皮肤、样式相关)

    我觉得叫 "皮肤" 不如叫 "样式" 或 "风格", 因为它可以包含和动作关联的动画. 在 FMX 下, 控件可以任意绘制, 各部件个性化的 ...

  5. Delphi XE2 之 FireMonkey 入门(23) - 数据绑定: TBindingsList: TBindExpression

    准备用 TBindingsList 重做上一个例子. 可以先把 TBindingsList 理解为是一组绑定表达式(TBindExpression)的集合; 官方应该是提倡在设计时完成 TBindEx ...

  6. Delphi XE2 之 FireMonkey 入门(37) - 控件基础: TControl 概览

    { TControl } publicconstructor Create(...); override; //destructor Destroy; override; //procedure Ad ...

  7. Delphi XE2 之 FireMonkey 入门(30) - 数据绑定: TBindingsList: TBindExpression 的 OnAssigningValue 事件...

    为什么80%的码农都做不了架构师?>>>    表达式中的函数有限, 譬如我想通过绑定输出文本的长度(譬如在 Label1 中绑定输出 Edit1.Text 的长度)就没有相应的函数 ...

  8. Delphi XE2 之 FireMonkey 入门(13) - 动画(下)

    TAnimation 类的主要成员: protectedfunction NormalizedTime: Single; //procedure ProcessAnimation; virtual; ...

  9. Delphi XE2 之 FireMonkey 入门(10) - 常用结构 TPoint、TPointF、TSmallPoint、TSize、TRect、TRectF 及相关方法...

    它们都是结构, TPointF.TRectF 属新增, 其它也都有升级; 现在都拥有丰富的方法和方便的运算符重载; 且有一组相关的公共函数. 这组内容重要的是它们都来自 System.Types 单元 ...

最新文章

  1. 用grep命令查找文件中带特定扩展名的字符串
  2. python读取excel-Python读取Excel表格
  3. AMD Developer Center有关ATI Stream的内容
  4. 作业09-集合与泛型
  5. 使用 vsftpd 服务传输文件
  6. 一起来做一个 c++ 单项选择题标准化考试系统
  7. java对接金蝶webapi
  8. mac ios自动化 appium-doctor 安装opencv4nodejs爬坑记录
  9. dell系统重装后无法进入系统_戴尔系统重装进入bios设置方法
  10. AuthorizingRealm中的两大方法
  11. 新的一年:运动强身,读书明智,思考修心
  12. 讲座笔记 | 陆铭 城市、区域和国家发展:空间政治经济学的理论和实证研究
  13. GIS算法基础(五)矢量数据向栅格数据的转换(点,线算法实现)
  14. 计算机术语中cae,厉害了 揭秘汽车设计中CAE仿真技术
  15. 简单工厂 工厂方法 抽象工厂
  16. llike与rlike
  17. 翁恺C语言PTA 7-29 二分法求多项式单根
  18. 连接数据库失败提示hba.conf不符合的处理方法
  19. 影响神经网络训练速度的因素
  20. [开发探索]知行合一

热门文章

  1. 报名开启 | 神策 2019 数据驱动大会「矩·变」等你!
  2. Application Virtualization 4.5 部署之(三)(
  3. 【译】Java中的对象序列化
  4. App用户体验的一点思考
  5. 面对滚滚而来好政策 安防行业该如何发展
  6. 浅谈Perl的类、包、模块与面对对象编程
  7. windows API 实现截图
  8. EXC_BAD_ACCESS调试
  9. crontab 执行的目录 研究
  10. win7中VS2010中安装CSS3.0问题解决方法