摘要: 看看 Delphi XE2 为 VCL 提供的 14 种样式其实只提供了 13 个 vsf 样式文件, 还有默认的 Windows 样式, 共 14 种.在空白窗体上添加 ListBox1 等控件, 测试代码:uses IOUtils, Vcl.Styles, vcl.Themes;procedure TForm1.FormCreate(Sender: TObject);var dir, fileName, styleName: string;begin //VCL 的样式文件 *.vsf 在 X:\Program Files\Embarcadero\RAD Studio\9.0\Redist 阅读全文
posted @ 2013-09-30 11:18 独自等待√ 阅读(534) 评论(0) 推荐(0)
摘要: FireMonkey 绘图(1)FMX 的 Canvas 在不同的系统上会分别使用:WinVista、Win7: D2D (FMX.Canvas.D2D.pas)WinXP: GDI+ (FMX.Canvas.GDIP.pas)Mac 系列: Core Graphics (FMX.Canvas.Mac.pas)和 HTML5 中的 Canvas 非常类似, 现在的 Canvas 模糊了 Pen 的概念:之前的 Canvas.Pen 对应: Canvas.Stroke;之前的 Canvas.Brush 对应: Canvas.Fill.在 FMX 中, Canvas 无处不在, 其 Canvas. 阅读全文
posted @ 2013-09-30 11:16 独自等待√ 阅读(586) 评论(0) 推荐(0)
摘要: 终于, Delphi XE2 携带 GDI+ 库了使用了较早的 http://www.progdigy.comuses Winapi.GDIPAPI, Winapi.GDIPOBJ{, Winapi.GDIPUTIL};procedure TForm1.FormPaint(Sender: TObject);var graphics: TGPGraphics; pen: TGPPen;begin graphics := TGPGraphics.Create(Canvas.Handle); pen := TGPPen.Create(MakeColor(255,0,0)); graphics.Dra 阅读全文
posted @ 2013-09-30 11:15 独自等待√ 阅读(329) 评论(0) 推荐(0)
摘要: 关于禁止程序重复启动的另一种需要与实现手头的程序需要禁止重复启动, 但需要保留新的、关闭旧的.我想还是从主窗口的类名下手吧; 写了一个函数, 在 OnCreate 中调用即可:{ 函数 }procedure CloseSameClassNameWindow(ACurrentWindow: HWND; const AClassName: string);var h: HWND; buf: array[0..255] of Char;begin h := ACurrentWindow; while h > 0 do begin h := GetWindow(h, GW_HWNDNEXT); 阅读全文
posted @ 2013-09-30 11:13 独自等待√ 阅读(351) 评论(0) 推荐(0)
摘要: Delphi XE2 新增 System.Zip 单元, 可用一句话压缩整个文件夹了单元内主要就是 TZipFile 类, 最方便使用的是它的类方法:TZipFile.ExtractZipFile() //解压 Zip 文件到指定文件夹TZipFile.IsValid() //判断指定文件是否是有效的 Zip 文件TZipFile.ZipDirectoryContents() //压缩指定路径下的所有文件测试:uses System.Zip;{ 把 C:\Temp\TestDir 下的所有文件压缩到 C:\Temp\Test.zip }procedure TForm1.But... 阅读全文
posted @ 2013-09-30 11:11 独自等待√ 阅读(344) 评论(0) 推荐(0)
摘要: Delphi XE2 之 FireMonkey 入门(45Finally) - 结题与问题很喜欢 FMX 的一些新控件, 如: TExpander、TArcDial、TComboTrackBar、TPathLabel 等等, 没时间继续学习了.对 FMX 的整体感觉: 还不成熟, 但肯定有前景; 它的构架师有远见、了不起, 很难估计他开启的是多大一扇门!本将继续学习:1、TCanvas、TBrush、TApplication;2、FMX 中的 GDI+、D2D、DirectX;3、FMX 3D;4、XE2 中新增的其他内容(譬如新增的 TZipFile 类, 已测试过、下帖附上).又要忙其它事 阅读全文
posted @ 2013-09-30 11:10 独自等待√ 阅读(380) 评论(0) 推荐(0)
摘要: Delphi XE2 之 FireMonkey 入门(44) - 控件基础: TTreeView、TTreeViewItemTScrollBox -> TCustomTreeView -> TTreeView 子项类型是 TTreeViewItem.测试, 先在窗体上放一个 TTreeView, 并需要它的 OnChange 事件:unit Unit1;interfaceuses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Control 阅读全文
posted @ 2013-09-30 11:09 独自等待√ 阅读(644) 评论(0) 推荐(0)
摘要: Delphi XE2 之 FireMonkey 入门(43) - 控件基础: TStringGrid、TGridTStringGrid、TGrid 都是从 TCustomGrid 继承; 区别有:1、它们的列对象分别是: TStringColumn、TColumn;2、TStringGrid 比 TGrid 多出了 Cells[] 属性.因为 TGrid 没有 Cells[] 属性, 暂时不方便使用; 我尝试取其当前单元值时竟然用了这样的代码:(Grid1.Columns[Grid1.ColumnIndex].CellControlByRow(Grid1.Selected) as TTextC 阅读全文
posted @ 2013-09-30 11:07 独自等待√ 阅读(599) 评论(0) 推荐(0)
摘要: Delphi XE2 之 FireMonkey 入门(42) - 控件基础: TComboBox、TComboEditTListBox 有两个兄弟 TComboListBox、TComboEditListBox;TComboBox、TComboEdit 虽不是不是从它们继承, 但分别包含了它们, 所以使用起来都有点像 TListBox.TComboBox 更像 TListBox, 比 TComboEdit 多出了 Selected 等成员;TComboEdit 是从 TCustomEdit 继承, 和 TEdit 是兄弟, 比 TComboBox 多出了 Text 等成员. 它们的公共常用属性 阅读全文
posted @ 2013-09-30 11:06 独自等待√ 阅读(888) 评论(0) 推荐(0)
摘要: Delphi XE2 之 FireMonkey 入门(41) - 控件基础: TListBoxTScrollBox -> TCustomListBox -> TListBox; 其元素项是 TListBoxItem 类型.TListBox 的功能在 TCustomListBox 里就完成了.值得注意的变化是: 1、复选框(相关属性: ShowCheckboxes、TListBoxItem.IsChecked)2、交替背景(通过继承还可以调整交替的背景色)3、TListBoxItem 可调整大小、容纳其它对象.{ TCustomListBox }public constructor 阅读全文
posted @ 2013-09-30 11:05 独自等待√ 阅读(572) 评论(0) 推荐(0)
摘要: Delphi XE2 之 FireMonkey 入门(40) - 控件基础: TMemo值得注意的变化:1、其父类 TScrollBox 的许多特性也很有用处, 如: Memo1.UseSmallScrollBars := True;2、内部使用了一个栈列表管理动作, 现在可以执行多步撤销(UnDo).3、使用了一个新的结构体 TCaretPosition 来描述当前位置, 并为该结构提供了一个公用的快速构造函数 ComposeCaretPos(). TCaretPosition = record Line, Pos: Integer; end;4、提供枚举属性 CharCase 控... 阅读全文
posted @ 2013-09-30 11:02 独自等待√ 阅读(435) 评论(0) 推荐(0)
摘要: Delphi XE2 之 FireMonkey 入门(39) - 控件基础: TScrollBox、TVertScrollBox、TFramedScrollBox、TFramedVertScrollBoxTScrollBox 是不少控件(TMemo、TListBox、TStringGrid、TTreeView、TImageViewer 等)的基础, 所以先学.TVertScrollBox 只比 TScrollBox 少了竖滚动条.TFramedScrollBox、TFramedVertScrollBox 只是套用了不同的样式, 有可视的框架.{ TScrollBox }public const 阅读全文
posted @ 2013-09-30 11:01 独自等待√ 阅读(607) 评论(0) 推荐(0)
摘要: Delphi XE2 之 FireMonkey 入门(38) - 控件基础: TPopupMenu、TMenuItem、TMenuBar、TMainMenu相关控件: TMenuBar、TPopupMenu、TMainMenu; 它们都是要包含 TMenuItem; 在设计时添加 TMenuItem 很容易.其中的 TMainMenu 暂不能应用其他样式; TMenuBar 只有一个值得注意 UseOSMenu 属性.控件 PopupMenu 属性用于指定右键菜单.暂时无法直接为窗体指定右键菜单, 因为窗体现在没有 PopupMenu 属性; 我想到的办法是在窗体上覆盖一个 TPanel 或 阅读全文
posted @ 2013-09-30 11:00 独自等待√ 阅读(508) 评论(0) 推荐(0)
摘要: Delphi XE2 之 FireMonkey 入门(36) - 控件基础: TForm当我第一次读取 Form1.StyleLookup 并期待出现 "formstyle" 时, 给的确是 "backgroundstyle" ...现在明白了, 原来窗体上覆盖着一个 TRectangle 对象:uses FMX.Objects;procedure TForm1.Button1Click(Sender: TObject);begin (Self.Children[0] as TRectangle).Fill.Color := claRed; //默认情况 阅读全文
posted @ 2013-09-30 10:59 独自等待√ 阅读(529) 评论(0) 推荐(0)
摘要: Delphi XE2 之 FireMonkey 入门(37) - 控件基础: TControl 概览{ TControl }public constructor Create(...); override; // destructor Destroy; override; // procedure AddObject(...); override; //添加对象 procedure RemoveObject(...); override; //移除对象 procedure SetNewScene(...); virtual; //设置新场景 procedure SetBound... 阅读全文
posted @ 2013-09-30 10:59 独自等待√ 阅读(438) 评论(0) 推荐(0)
摘要: Delphi XE2 之 FireMonkey 入门(35) - 控件基础: TFmxObject: 其它TFmxObject 增加了 TagObject、TagFloat、TagString, 算上从 TComponent 继承的 Tag, 可以暂存多种类型的数据了.ChildrenCount、Children[] 代替了之前的 ControlCount、Controls[].有增删 Children 的几个方法: AddObject()、InsertObject()、RemoveObject()、Exchange()、DeleteChildren()Index 属性是控件在 Childre 阅读全文
posted @ 2013-09-30 10:58 独自等待√ 阅读(313) 评论(0) 推荐(0)
摘要: Delphi XE2 之 FireMonkey 入门(34) - 控件基础: TFmxObject: 克隆对象有两个和克隆相关的方法: Clone()、CloneChildFromStream().Clone() 很好用, 但 CloneChildFromStream() 的源码很明显地写错了(是小问题, 谁外语好去报一下).procedure TForm1.FormCreate(Sender: TObject);var i: Integer;begin for i := 0 to 9 do ListBox1.Items.Add('Item' + IntToStr(i));en 阅读全文
posted @ 2013-09-30 10:57 独自等待√ 阅读(308) 评论(0) 推荐(0)
摘要: Delphi XE2 之 FireMonkey 入门(33) - 控件基础: TFmxObject: SaveToStream、LoadFromStream、SaveToBinStream、LoadFromBinStreamSaveToStream()、LoadFromStream() 对应文本流;SaveToBinStream()、LoadFromBinStream() 对应二进制流; 相对文本流, 二进制流会小一些.有这几个方法, 控件数据与状态的序列化就太容易了.示例:1、控件: ListBox1、Button1、Button22、事件: Button1.OnClick、Button2. 阅读全文
posted @ 2013-09-30 10:56 独自等待√ 阅读(312) 评论(0) 推荐(0)
摘要: Delphi XE2 之 FireMonkey 入门(32) - 数据绑定: TBindingsList: TBindList、TBindPosition [未完成...]//待补... 阅读全文
posted @ 2013-09-30 10:55 独自等待√ 阅读(222) 评论(0) 推荐(0)
摘要: Delphi XE2 之 FireMonkey 入门(31) - 数据绑定: 绑定数据库一、全设计时操作:先在窗体上放置控件:DataSource1 : TDataSource;ClientDataSet1 : TClientDataSet;Label1 : TLabel;Edit1 : TEdit;Memo1 : TMemo;ImageControl1 : TImageControl;BindNavigator1 : TBindNavigator;{在连接过程中, 会自动添加下面部件}BindingsList1 : TBindingsList;Bind... 阅读全文
posted @ 2013-09-30 10:54 独自等待√ 阅读(502) 评论(0) 推荐(0)
摘要: Delphi XE2 之 FireMonkey 入门(30) - 数据绑定: TBindingsList: TBindExpression 的 OnAssigningValue 事件表达式中的函数有限, 譬如我想通过绑定输出文本的长度(譬如在 Label1 中绑定输出 Edit1.Text 的长度)就没有相应的函数;这可在 TBindExpression 的 OnAssigningValue 事件中处理.TBindExpression 和它的兄弟们 (TBindExprItems、TBindLink、TBindListLink、TBindGridLink、TBindPosition、TBind 阅读全文
posted @ 2013-09-30 10:53 独自等待√ 阅读(375) 评论(0) 推荐(0)
摘要: Delphi XE2 之 FireMonkey 入门(29) - 数据绑定: TBindingsList: 表达式的 Evaluate() 方法TBindingsList 中可能不止一个表达式, 通过表达式的 Evaluate 方法可单独提交绑定, 并可在 Active = False 时提交.在 TBindExprItems 中对应的方法是 EvaluateFormat.测试设想: Label1、Label2 的绑定源同是 Edit1, 分别提交绑定.1、在窗体上加控件: Label1、Label2、Edit1、BindingsList1;2、激活 Edit1 的 OnKeyUp、OnCha 阅读全文
posted @ 2013-09-30 10:51 独自等待√ 阅读(283) 评论(0) 推荐(0)
摘要: Delphi XE2 之 FireMonkey 入门(28) - 数据绑定: TBindingsList: 表达式函数测试: SelectedText()、CheckedState()示例构想: 用 Label1 显示 ListBox1 的选项, 用 Label2 显示 CheckBox1 的状态.1、放控件: Label1、Label2、ListBox1、CheckBox1、BindingsList1、BindScope1;2、激活 ListBox1 的 OnClick 事件和窗体的默认事件.unit Unit1;interfaceuses System.SysUtils, System.T 阅读全文
posted @ 2013-09-30 10:50 独自等待√ 阅读(279) 评论(0) 推荐(0)
摘要: Delphi XE2 之 FireMonkey 入门(27) - 数据绑定: TBindingsList: TBindScope如果在编写表达式时, 如果能够随意指认需要的控件就好了(通过 Owner 也可以勉强做到), TBindScope 就是解决这个问题的.示例设想: 把三个 TEdit 的 Text 绑定到一个 TLabel.在窗体上添加 Label1、Edit1、Edit2、Edit3、BindingsList1、BindScope1; 激活 Edit1 和窗体的默认事件.unit Unit1;interfaceuses System.SysUtils, System.Types, 阅读全文
posted @ 2013-09-30 10:48 独自等待√ 阅读(297) 评论(0) 推荐(0)
摘要: Delphi XE2 之 FireMonkey 入门(26) - 数据绑定: TBindingsList: TBindExprItems如果要给一对 "源控件" 和 "目标控件" 写多个表达式, 使用 TBindExpression 就不如 TBindExprItems 了.TBindExprItems 中的表达式又分两组: FormatExpressions、ClearExpressions, 后者是在断开绑定时的表达式.示例设想:1、TrackBar1 为源, 把其 Value 值绑定给 Edit1.Text 和 Edit1.Width 和 Labe 阅读全文
posted @ 2013-09-30 10:46 独自等待√ 阅读(343) 评论(0) 推荐(0)
摘要: Delphi XE2 之 FireMonkey 入门(25) - 数据绑定: TBindingsList: 表达式的灵活性及表达式函数绑定表达式中可以有简单的运算和字符串连接, 但字符串需放在双引号中.还可以使用 TBindingsList.Methods 提供的一组表达式函数(分别来自 System.Bindings.Methods 和 Data.Bind.EngExt 单元):ToStr()ToVariant()Round()Format()UpperCase()LowerCase()FormatDateTime()StrToDateTime()Max()Min()CheckedState 阅读全文
posted @ 2013-09-30 10:36 独自等待√ 阅读(325) 评论(0) 推荐(0)
摘要: 在学习 BindingSource 属性时, 可以让两个控件互为绑定源; TBindExpression 对应的功能是 Direction 属性.先在窗体上添加 Edit1、Edit2、BindingsList1; 然后激活 Edit1、Edit2 和窗体的默认事件.procedure TForm1.FormCreate(Sender: TObject);begin with TBindExpression.Create(BindingsList1) do begin ControlComponent := Edit2; ControlExpression := 'Text'; 阅读全文
posted @ 2013-09-30 10:35 独自等待√ 阅读(297) 评论(0) 推荐(0)
摘要: 准备用 TBindingsList 重做上一个例子.可以先把 TBindingsList 理解为是一组绑定表达式(TBindExpression)的集合;官方应该是提倡在设计时完成 TBindExpression 的建立与参数设置, 但我觉得看运行时的代码会更容易理解.1、先在窗体上添加 TrackBar1、Edit1、Label1、BindingsList1;2、激活窗体和 TrackBar1 的默认事件;3、然后将通过代码把 TrackBar1.Value 分别绑定到 Edit1.Text、Label1.Text, (这里把 TrackBar1 做源控件, 把 Edit1、Label1 做 阅读全文
posted @ 2013-09-30 10:34 独自等待√ 阅读(428) 评论(0) 推荐(0)
摘要: 在窗体上添加 TrackBar1、Edit1、Label1, 然后设置属性(可在设计时):procedure TForm1.FormCreate(Sender: TObject);begin Edit1.BindingSource := TrackBar1; //将 TrackBar1 的值绑定在 Edit1 Label1.BindingSource := TrackBar1; //将 TrackBar1 的值绑定在 Label1end;{之后, Edit1.Text 和 Label1.Text 会同步 TrackBar1.Value 值}不同类型值的沟通, 我想应该是依赖于 FM 组件新增的 阅读全文
posted @ 2013-09-30 10:33 独自等待√ 阅读(464) 评论(0) 推荐(0)
摘要: TObjectTPersistentTComponentIInterface,IInterfaceComponentReferenceTBasicActionTControlActionLinkTApplicationTBindNavigatorControllerTPlatformTPlatformCocoaTScreenTFmxObject参见 TFmxObject 的子类们(表) TBasicBindComponent-> TContainedBindComponent-> -> TBaseBindDBControlLinkTBaseBindDBFieldLinkTBa 阅读全文
posted @ 2013-09-30 10:32 独自等待√ 阅读(421) 评论(0) 推荐(0)
摘要: 我觉得叫 "皮肤" 不如叫 "样式" 或 "风格", 因为它可以包含和动作关联的动画.在 FMX 下, 控件可以任意绘制, 各部件个性化的属性可以统一保存成一个 *.style 文件.XE2 在 "...\Program Files\Embarcadero\RAD Studio\9.0\Redist\styles\Fmx\" 下提供了如下样式文件:Air.StyleAmakrits.StyleAquaGraphite.styleBlend.Styledark.styleFMX.Platform.iOS.styleF 阅读全文
posted @ 2013-09-30 10:31 独自等待√ 阅读(523) 评论(0) 推荐(0)
摘要: 参考: 和 FMX 相关的类(表)TFmxObjectIFreeNotificationTAnimationTBitmapAnimationTBitmapListAnimationTColorAnimationTColorKeyAnimationTFloatAnimationTFloatKeyAnimationTGradientAnimationTPathAnimationTRectAnimationTBitmapObjectTBrushObjectTCommonDialogTOpenDialogTSaveDialogTPageSetupDialogTPrintDialogTPrinterSe 阅读全文
posted @ 2013-09-30 10:30 独自等待√ 阅读(557) 评论(0) 推荐(0)
摘要: 一个小小的 TLang 类, 实现多语言切换, 挺好的. 它的工作思路是:1、首先通过 AddLang('语言代码') 添加语言类别, 如: AddLang('en')、AddLang('cn').2、每个语言代码对应一个 TStrings 列表, 获取方式如: LangStr['en']、LangStr['cn'].3、可以手动填充这些数据、可以通过 LoadFromFile() 方法载入之前 SaveToFile() 的数据(*.lng)、还可以在设计时提供的界面中操作这些数据.4、切换时修改 Lang 属性即 阅读全文
posted @ 2013-09-30 10:29 独自等待√ 阅读(549) 评论(0) 推荐(0)
摘要: 刚打开 XE2 时, 就从 Tool Palette 窗口的 Effects 组中发现洋洋洒洒的六十多个特效...每个特效分别对应一个类, 分别来自 FMX.Effects 和 FMX.Filter.Effects 单元.FMX.Effects 中的特效属于附加特效, FMX.Filter.Effects 中的特效只是某种滤镜效果; 它们都是滤镜的一种快捷应用.每个特效有不同的参数; 因都是直接或间接地继承与 FMX.Types 中的 TEffect, 也都拥有 Trigger、Enabled、GetDisablePaint 等功能.测试: 在窗体上放一个 TPanel{ 为 Panel1 设 阅读全文
posted @ 2013-09-30 10:28 独自等待√ 阅读(560) 评论(0) 推荐(0)
摘要: 窗体上需要 TImage、TOpenDialog 和六个按钮.unit Unit1;interfaceuses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.Objects;type TForm1 = class(TForm) Image1: TImage; OpenDialog1: TOpenDialog; Button1: TButton; Button2: TBu... 阅读全文
posted @ 2013-09-30 10:27 独自等待√ 阅读(566) 评论(0) 推荐(0)
摘要: 滤镜类的继承关系:TObject -> TPersistent -> TFilter -> TShaderFilter -> { 具体的滤镜类 }//下面例子首先会用到 FMX.Filter 单元的四个公用方法:procedure FillCategory(AList: TStrings);procedure FillFiltersInCategory(const Category: string; AList: TStrings);function FilterByName(const AName: string): TFilter;function FilterCl 阅读全文
posted @ 2013-09-30 10:25 独自等待√ 阅读(406) 评论(0) 推荐(0)
摘要: 相关单元:FMX.FilterFMX.FilterCatBlurFMX.FilterCatGeometryFMX.FilterCatTransitionFMX_FilterCatColorFMX_FilterCatColorAdjustFMX_FilterCatCompositeFMX_FilterCatGeneratorFMX_FilterCatStyleFMX_FilterCatTilesFMX.FilterCatDistortionFM 提供了 10 个类别的滤镜:{ 分类名称 实现单元 } Blur //FMX.FilterCatBlur Geometry //FMX... 阅读全文
posted @ 2013-09-30 10:24 独自等待√ 阅读(476) 评论(0) 推荐(0)
摘要: TAnimation 类的主要成员:protected function NormalizedTime: Single; // procedure ProcessAnimation; virtual; //其子类们主要通过覆盖此方法来实现不同的动画 procedure Loaded; override; //public procedure Start; virtual; //播放 procedure Stop; virtual; //停止 procedure StopAtCurrent; virtual; //停止在当前帧; 和 Pause 属性不同... 阅读全文
posted @ 2013-09-30 10:19 独自等待√ 阅读(679) 评论(0) 推荐(1)
摘要: 在 HD 窗体上添加一个 TAniIndicator, 修改其 Enabled 属性为 True, 动画完成了.这是最简单的动画相关的控件了, 只有两个值得注意的属性:Enabled: Boolean; //Style: TAniIndicatorStyle; //TAniIndicatorStyle = (aiLinear, aiCircular);{例}AniIndicator1.Style := TAniIndicatorStyle.aiCircular;它是怎么动起来的? 追源码, 发现它有一个 FAni: TFloatAnimation; 内部变量.再就追出 TFloatAn... 阅读全文
posted @ 2013-09-30 10:11 独自等待√ 阅读(1796) 评论(0) 推荐(1)
摘要: RotationAngle、RotationCenter、Opacity 属性继承自 TControl(FMX.Types), 这些新属性成了控件的基本功能.先在 HD 窗体上添加 TRectangle 和两个按钮...procedure TForm1.FormCreate(Sender: TObject);begin Rectangle1.Width := 100; Rectangle1.Height := 100; Rectangle1.Fill.Color := claYellow; Rectangle1.Stroke.Color := claRed; {居中; 喜欢这种带枚举名的赋值方 阅读全文
posted @ 2013-09-30 10:10 独自等待√ 阅读(630) 评论(0) 推荐(0)
摘要: 它们都是结构, TPointF、TRectF 属新增, 其它也都有升级; 现在都拥有丰富的方法和方便的运算符重载; 且有一组相关的公共函数.这组内容重要的是它们都来自 System.Types 单元, 也就是不仅仅在 FM 中可用.TPoint:Create(); //{运算符重载}Equal; // =NotEqual; // Add; // +Subtract; // -Implicit; // 可从 TSmallPoint 隐身转换到 TPointExplicit; // 可显示转换到 TSmallPoint{方法}Distance(); // 计... 阅读全文
posted @ 2013-09-30 10:04 独自等待√ 阅读(471) 评论(0) 推荐(0)
摘要: TBitmap 主要成员:{ 方法 }SetSize(); //设置大小Clear(); //取消, 就是用指定颜色覆盖ClearRect(); //覆盖指定矩形范围, 默认覆盖为透明色BitmapChanged(); //刷新改变IsEmpty(); //是否为空UpdateHandles(); //将 Handles 数组中的对象标记为需要更新AddFreeNotify(); //将指定对象添加到可以释放的列表; 这一般是针对添加到 Handles 中的对象RemoveFreeNotify(); //释放指... 阅读全文
posted @ 2013-09-30 10:03 独自等待√ 阅读(473) 评论(0) 推荐(0)
摘要: TImage 主要成员:{ 属性 }Bitmap : TBitmap; //图像BitmapMargins : TBounds; //边缘空白WrapMode : TImageWrapMode; //枚举; iwOriginal、iwFit、iwStretch、iwTile(原始、适合、拉伸、平铺)DisableInterpolation : Boolean; //是否使用(像素)插入算法另有 TImageViewer、TImageControl 和 TImage 类似.TImageViewer 继承自 TScrollBox, 可自动加滚动条;... 阅读全文
posted @ 2013-09-30 10:02 独自等待√ 阅读(456) 评论(0) 推荐(0)
摘要: TText 也是从 TShape(TControl -> TShape)继承; 而与之类似的 TLabel 的继承序列是 TControl -> TStyledControl -> TTextControl -> TLabel.TText 的主要成员:{ 属性 }Text : string; //文本内容Font : TFont; //字体Fill : TBrush; //文本画刷HorzTextAlign : TTextAlign; //横向对齐VertTextAlign : TTextAlign; //纵向对齐AutoSize : Boolean; ... 阅读全文
posted @ 2013-09-30 10:01 独自等待√ 阅读(543) 评论(0) 推荐(0)
摘要: 它们都是继承自 TShape 类, 共同拥有如下属性:Fill : TBrush; //填充Stroke : TBrush; //边线(画笔)StrokeThickness : Single; //厚度(边线宽度)StrokeCap : TStrokeCap; //线帽样式, TStrokeCap (枚举)类型StrokeDash : TStrokeDash; //虚线样式, TStrokeDash(枚举)类型StrokeJoin : TStrokeJoin; //拐点结合样式, TStrokeJoin(枚举)类型ShapeRect : TRe... 阅读全文
posted @ 2013-09-30 10:00 独自等待√ 阅读(615) 评论(0) 推荐(0)
摘要: 不是 TColor, 是 TAlphaColor 了.TAlphaColor = type Cardinal; 还是一个整数.四个字节分别是: AA RR GG BB(透明度、红、绿、蓝); 这和 TColor 的颜色序相反, 并增加了透明度.在 HD 窗体上添加一个 TRectangle 和三个 TButton, 测试://下面四种赋值方法相同procedure TForm1.Button1Click(Sender: TObject);begin Rectangle1.Fill.Color := $FFFF0000; Rectangle1.Fill.Color := claRed; Rect 阅读全文
posted @ 2013-09-30 09:59 独自等待√ 阅读(891) 评论(0) 推荐(0)
摘要: 1、新建 FM(HD) 工程, 先添加 TLine(默认名称是 Line1);2、在 Line1 选择状态下添加 Button1;3、取消选择后添加 Button2此时, Button1.Parent 是 Line1; Button2.Parent 是窗体.unit Unit1;interfaceuses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Objects;type TForm1 = clas 阅读全文
posted @ 2013-09-30 09:58 独自等待√ 阅读(467) 评论(0) 推荐(0)
摘要: 把 FireMonkey 简称为 FM 吧. FM 的窗体继续使用 Left、Top 属性, 但更多控件不是了.//FM 控件的位置控制不再是 Left、Top, 取而代之的是 Position 属性procedure TForm1.Button1Click(Sender: TObject);begin Rectangle1.Position.X := Rectangle1.Position.X + 10; Rectangle1.Position.Y := Rectangle1.Position.Y + 10;end;//TPosition 是类procedure TForm1.Button2 阅读全文
posted @ 2013-09-30 09:57 独自等待√ 阅读(550) 评论(0) 推荐(0)
摘要: FireMonkey 的控件都是自己绘制的(而不是基于系统组件), 我想它们应该是基于一些基本图形; 就从基本图形开始吧.FMX.Objects 单元给出的类:TShape //基本图形的基类TLineTRectangleTRoundRectTCalloutRectangleTEllipseTCircleTPieTArcTPathTTextTImageTPaintBoxTSelectionTSelectionPoint添加一个 TRectangle, 先纵观一下它的可用功能:{ TRectangle } public constructor Create(AOwner: TComponent. 阅读全文
posted @ 2013-09-30 09:50 独自等待√ 阅读(444) 评论(0) 推荐(0)
摘要: Delphi XE2 的 FireMonkey 是跨平台的, 暂时只准备看看它在 Windows 下(我是 32 位 Win7)的应用情况.很新的东西, 相信有了它, 以后的界面将会更灵活、漂亮, 也会淘汰掉诸多皮肤、透明、图像等第三方组件, 但不知和 Win8 的 WinRT 有无关联.为了它, Delphi XE2 的诸多单元加了前缀, 诸如:Bde、Data、Datasnap、FMX、IB、Macapi、Posix、Soap、System、System.Bindings、System.Generics、System.Internal、System.Mac、System.Win、Vcl、W 阅读全文
posted @ 2013-09-30 09:30 独自等待√ 阅读(746) 评论(0) 推荐(0)