深入Delphi FMX从FMX.Types开始(一、原理)

本文深入探讨Delphi FMX,从FMX.Types入手介绍原理。详细列举了FMX.Types中众多有用内容,如虚拟键盘、屏幕显示区域、对象布局等相关信息,还提及Delphi中不同平台属性的对应关系。

目录

深入Delphi FMX从FMX.Types开始(一、原理)

一、FMX.Types中那些个有用的东西(倒序),你们记着晃一眼及时用哟

1.001、虚拟键盘相关(2083、572行次)

1.002、共享内容个克隆缓存中的属性相关(2090行次)

1.003、Caret及其光标闪烁相关(2071、872行次),  TFlasherInterval = -1..1000;

1.004、Screen屏幕显示区域和边界相关(2048行次)

1.005、TFmxObject及泛型的枚举过滤器相关(2014行次)

1.006、全局的系统空闲消息类相关(2045行次),你可以用它去实现系统空闲消息的发布、订阅和监听

1.007、移除字符串中的&符号但保留原始位置及格式相关(2010行次)

1.008、提供debug调试消息的静态方法日志输出相关(1940行次)

1.009、元素为TAlignLayout的全局布局TAnchors数组变量,已枚举各种可能的情况进行赋值(1836行次),可用于遍历或枚举

1.010、注册FMX类为持久类相关(1831行次)

1.011、忽略ARC引用计数并强制释放对象:将AObject赋值为nil,从内存地址中清除(1829行次)

1.012、判断并捕获FMX应用的句柄是否有效相关(1826行次), TFmxHandle = THandle;  THandle = NativeUInt;  Result := (Hnd <> 0);

1.013、FMX文字语言及翻译类相关(1496、1784及1802行次)

1.014、动态计算并部署FMX对象Align布局的相关方法(1790行次)

1.015、动态维护StyleLookup的相关方法(1773行次)

1.016、FMX中的TPixelFormat像素格式、颜色及其转化的相关方法(1756行次)

1.017、FMX中的持久类TPersistent相关的维护接口(1700行次)

1.018、FMX中的TGuillotineBinPack矩形区域截取类相关(1594行次)

1.019、FMX中的线条的索引及长短的捕获类相关(1566行次)

1.020、FMX内置的TTimer毫秒计时器及其计时接口服务相关(1530行次)

1.021、FMX的弹出菜单PopupMenu相关(1243行次)

1.022、FMX的TTabList类及其接口相关(1219、676行次)

 1.023、通过StyleName快速访问FMX对象的相关类(1034行次)

1.024、TEnumProcResult枚举过程结果的全局枚举类型(1031行次)

1.025、FMX对象TFmxObject相关类(1053行次)

1.026、FMX对象列表类TFmxObjectList及其子对象TFmxChildrenList的枚举列表类、FMX对象间的比较匿名函数的参照全局类(1053行次)

1.027、FMX对象的位置、纵横比、旋转的外观转化的本地持久类(967行次)

1.028、FMX曲线类TSpline(699行次)

1.029、FMX中Items类型等容器接口(669行次)

 1.030、FMX原生控件的句柄接口(555行次)

1.031、FMX对象及其子对象重新布局接口IAlignRoot(549行次)

1.032、FMX对象的IRoot祖先根节点接口(524行次)

1.033、FMX对象嵌套的内容捕获接口(407行次)

1.034、FMX控件的行为的释放通知接口(430行次),比如焦点等等各种事件

1.035、FMX的其它与布局和显示相关的基础常量和枚举类型(193、74行次)


深入Delphi FMX从FMX.Types开始(一、原理)

Delphi中System.Types和FMX.Types和Androidapi.JNI.JavaTypes等平台属性的对应关系:

Androidapi.JNI.JavaTypes等平台属性======》FMX.Types======》System.Types====》System.TypInfo

一、FMX.Types中那些个有用的东西(倒序),你们记着晃一眼及时用哟

1.001、虚拟键盘相关(2083、572行次)


typeTShowVirtualKeyboard = procedure (const Displayed: boolean;const Caret: TCustomCaret;var VirtualKeyboardState: TVirtualKeyboardStates);procedure RegisterShowVKProc(const ShowVirtualKeyboard: TShowVirtualKeyboard);typeTKeyKind = (Usual, Functional, Unknown);TKeyKindHelper = record helper for TKeyKind
  TVirtualKeyboardType = (Default, NumbersAndPunctuation, NumberPad, PhonePad, Alphabet, URL, NamePhonePad,EmailAddress, DecimalNumberPad);TVirtualKeyboardTypeHelper = record helper for TVirtualKeyboardTypeconstvktDefault = TVirtualKeyboardType.Default deprecated 'Use TVirtualKeyboardType.Default';vktNumbersAndPunctuation = TVirtualKeyboardType.NumbersAndPunctuation deprecated 'Use TVirtualKeyboardType.NumbersAndPunctuation';vktNumberPad = TVirtualKeyboardType.NumberPad deprecated 'Use TVirtualKeyboardType.NumberPad';vktPhonePad = TVirtualKeyboardType.PhonePad deprecated 'Use TVirtualKeyboardType.PhonePad';vktAlphabet = TVirtualKeyboardType.Alphabet deprecated 'Use TVirtualKeyboardType.Alphabet';vktURL = TVirtualKeyboardType.URL deprecated 'Use TVirtualKeyboardType.URL';vktNamePhonePad = TVirtualKeyboardType.NamePhonePad deprecated 'Use TVirtualKeyboardType.NamePhonePad';vktEmailAddress = TVirtualKeyboardType.EmailAddress deprecated 'Use TVirtualKeyboardType.EmailAddress';end;TVirtualKeyboardState = (AutoShow, Visible, Error, Transient);TVirtualKeyboardStateHelper = record helper for TVirtualKeyboardStateconstvksAutoShow = TVirtualKeyboardState.AutoShow deprecated 'Use TVirtualKeyboardState.AutoShow';vksVisible = TVirtualKeyboardState.Visible deprecated 'Use TVirtualKeyboardState.Visible';vksError = TVirtualKeyboardState.Error deprecated 'Use TVirtualKeyboardState.Error';vksTransient = TVirtualKeyboardState.Transient deprecated 'Use TVirtualKeyboardState.Transient';end;TVirtualKeyboardStates = set of TVirtualKeyboardState;TReturnKeyType = (Default, Done, Go, Next, Search, Send);TReturnKeyTypeHelper = record helper for TReturnKeyTypeconstrktDefault = TReturnKeyType.Default deprecated 'Use TReturnKeyType.Default';rktDone = TReturnKeyType.Done deprecated 'Use TReturnKeyType.Done';rktGo = TReturnKeyType.Go deprecated 'Use TReturnKeyType.Go';rktNext = TReturnKeyType.Next deprecated 'Use TReturnKeyType.Next';rktSearch = TReturnKeyType.Search deprecated 'Use TReturnKeyType.Search';rktSend = TReturnKeyType.Send deprecated 'Use TReturnKeyType.Send';end;IVirtualKeyboardControl = interface['{41127080-97FC-4C30-A880-AB6CD351A6C4}']procedure SetKeyboardType(Value: TVirtualKeyboardType);function GetKeyboardType: TVirtualKeyboardType;property KeyboardType: TVirtualKeyboardType read GetKeyboardType write SetKeyboardType;//procedure SetReturnKeyType(Value: TReturnKeyType);function GetReturnKeyType: TReturnKeyType;property ReturnKeyType: TReturnKeyType read GetReturnKeyType write SetReturnKeyType;//function IsPassword: Boolean;end;

1.002、共享内容个克隆缓存中的属性相关(2090行次)

varSharedContext: TRttiContext;ClonePropertiesCache: TDictionary<string, TList<TRttiProperty>>;

1.003、Caret及其光标闪烁相关(2071、872行次),  TFlasherInterval = -1..1000;


/// <summary>Registers the flasher class for the TCustomCaret object specified
/// in the CaretClass parameter.</summary>
procedure RegisterFlasherClass(const FlasherClass: TFmxObjectClass; const CaretClass: TCaretClass);
/// <summary>Returns the class of a flasher registered for the TCustomCaret
/// object specified in the CaretClass parameter.</summary>
function FlasherClass(const CaretClass: TCaretClass): TFmxObjectClass;
/// <summary>Returns the flasher object registered for the TCustomCaret object
/// specified in the CaretClass parameter.</summary>
function Flasher(const CaretClass: TCaretClass): TFmxObject;
/// <summary>Checks whether a flasher is registered for the TCustomCaret object
/// specified in the CaretClass parameter.</summary>
function AssignedFlasher(const CaretClass: TCaretClass): boolean;
TCaretDisplayChanged = procedure (Sender: TCustomCaret; const VirtualKeyboardState: TVirtualKeyboardStates) of object;TCaretClass = class of TCustomCaret;TCustomCaret = class (TPersistent)private[Weak]FOwner: TFMXObject;FIControl: IControl;FVisible: Boolean;FDisplayed: Boolean;FTemporarilyHidden: Boolean;FChanged: Boolean;FUpdateCount: Integer;FOnDisplayChanged: TCaretDisplayChanged;FColor: TAlphaColor;FDefaultColor: TAlphaColor;FPos: TPointF;FSize: TSizeF;FInterval: TFlasherInterval;FReadOnly: Boolean;procedure SetColor(const Value: TAlphaColor);procedure SetPos(const Value: TPointF);procedure SetSize(const Value: TSizeF);procedure SetTemporarilyHidden(const Value: boolean);procedure SetVisible(const Value: Boolean);procedure SetInterval(const Value: TFlasherInterval);procedure SetReadOnly(const Value: boolean);procedure StartTimer;function GetWidth: Word;procedure SetWidth(const Value: Word);function GetFlasher: IFlasher;procedure SetDefaultColor(const Value: TAlphaColor);protectedfunction GetOwner: TPersistent; override;procedure DoDisplayChanged(const VirtualKeyboardState: TVirtualKeyboardStates); virtual;procedure DoUpdateFlasher; virtual;publicconstructor Create(const AOwner: TFMXObject); virtual;destructor Destroy; override;procedure Assign(Source: TPersistent); override;/// <summary>///   hide the caret/// </summary>procedure Hide; virtual;/// <summary>///   if possible (CanShow = True and Visible = True), the caret show./// </summary>procedure Show; virtual;/// <summary>///   This method is performed after changing the Displayed/// </summary>property Pos: TPointF read FPos write SetPos;property Size: TSizeF read FSize write SetSize;property Color: TAlphaColor read FColor write SetColor default TAlphaColorRec.Null;property DefaultColor: TAlphaColor read FDefaultColor write SetDefaultColor;property Interval: TFlasherInterval read FInterval write SetInterval default 0;property Owner: TFMXObject read FOwner;property Control: IControl read FIControl;procedure BeginUpdate;procedure EndUpdate;class function FlasherName: string; virtual; abstract;property UpdateCount: integer read FUpdateCount;/// <summary>///   The update of the "Flasher", if UpdateCount = 0./// </summary>procedure UpdateFlasher;/// <summary>///   This property controls the visibility of a caret, for the control in which the input focus./// </summary>property Visible: Boolean read FVisible write SetVisible;/// <summary>///   The function returns true, if the control is visible, enabled,///   has the input focus and it in an active form/// </summary>function CanShow: Boolean; virtual;/// <summary>///   This property is set to True, after the successful execution of///   method Show, and is set to False after method Hide/// </summary>property Displayed: Boolean read FDisplayed;/// <summary>///   If this property is 'true', the blinking control is invisible///   and does not take values of Visible, Displayed.///   When you change the properties, methods DoShow, DoHide, DoDisplayChanged not met./// </summary>property TemporarilyHidden: boolean read FTemporarilyHidden write SetTemporarilyHidden;/// <summary>///   Blinking visual component is displayed.///   Usually this line, having a thickness of one or two pixels./// </summary>property Flasher: IFlasher read GetFlasher;property ReadOnly: boolean read FReadOnly write SetReadOnly;property Width: Word read GetWidth write SetWidth default 0;property OnDisplayChanged: TCaretDisplayChanged read FOnDisplayChanged write FOnDisplayChanged;end;

1.004、Screen屏幕显示区域和边界相关(2048行次)


TDisplay = record

1.005、TFmxObject及泛型的枚举过滤器相关(2014行次)


typeTEnumerableFilter<F; T: TFmxObject> = class(TEnumerable<T>)publicconstructor Create(const FullEnum: TEnumerable<F>; SelfDestruct: Boolean = False; const Pred: TPredicate<T> = nil);class function Filter(const Src: TEnumerable<F>; const Predicate: TPredicate<T> = nil): TEnumerableFilter<F,T>;typeTFilterEnumerator = class(TEnumerator<T>)publicconstructor Create(const Enumerable: TEnumerable<F>; const Cleanup: TEnumerableFilter<F,T>;const Pred: TPredicate<T>);destructor Destroy; override;property Current: T read GetCurrent;function MoveNext: Boolean;end;end;

1.006、全局的系统空闲消息类相关(2045行次),你可以用它去实现系统空闲消息的发布、订阅和监听

  TIdleMessage = class(System.Messaging.TMessage)

1.007、移除字符串中的&符号但保留原始位置及格式相关(2010行次)

//但保留原始位置及格式
function DelAmp(const AText: string): string

1.008、提供debug调试消息的静态方法日志输出相关(1940行次)

{ Debugging }
type/// <summary>Provides static methods for debug messages.</summary>Log = class abstractpublic type/// <summary>A conversion function used to convert array elements in ArrayToString</summary>TToStringFunc = reference to function(const AObject: TObject): string;/// <summary>A timestamp of specific point in pr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tjsoft

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值