Delphi 的TSpeedButton按下和弹起效果

想达到这样的效果:

点击一下TSpeedButton按钮,按钮凹下去,再点击一下,按钮弹起恢复。

实现方法:

只要设置下述2个属性即可,不需要编码:

①AllowAllUp = True

②GroupIndex = 2   //设成任意非0的整数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一些老的控件的集合: ------------------------------------------------------------------ xtoolbar.zip 41K 作者: Jean-Philippe Bernardy. 很不错的工具条控件 armenutb.zip 33K 作者: Albert Research。 提供用TListView选择全部的 Menu Item的工具条控件 dfssatausbar.zip 36K 作者: Brad Stowers。 TDFSStatusBar 是加强版 TStatusBar 构件,能够在其内放置其他构件(可在IDE环境瞎直接拖放),提供显示键盘上( CAPS Lock、NUM Lock、SCROLL Lock) 的状态,并提供进度显示进度及当前时间日期等多项功能 dfstoolbar.zip 10K 作者: Brad Stowers。 TDFSToolBar 是增强型的 TToolBar 构件,提供类似 Netscape Communicator 般的工具条,能够放到最大化及还原 sfoutbar.zip 23K 作者: Sylvain Frere. 类似Microsoft Outlook控制条控件,功能有支持大小图标显示,平滑滚动,快捷键,多重选择等 tbargood.zip 44K 作者: Seth Taylor。 配置 TForm TiTle的控件,功能很多 colorbtn.zip 9K Windows95风格的选择颜色的按钮元件 bcolorbtn.zip 26K 作者: Brad Stowers. Windows95风格的选择颜色的按钮元件 explbtn.zip 37K 作者: Fabrice Deville 。 TExploreButton 是类似 Microsoft Internet Explorer 3.0 式样的 Speed Button gradbutt.zip 13K 作者: Harm TGradBtn 是能够显示渐变颜色的 TButton 构件,并能控制按钮上文字以多种立体样式显示 avhebchk.zip 13K 作者: Alex Zanis. 在右边显示选择勾的CHeckBox控件,适合从右到作的语言如阿拉伯语. amcbrb.zip 10K 作者: Alexander Meeder。 以BMP图片自定义显示外观的增强型 TRadioButton 及 TCheckBox 构件 noshape.zip 86K 作者: Michael Tran 能够照指定的BMP 图像外观直接变成按钮外观的增强型按钮构件,带Exe演示程序 hnoshape.zip 4K 能够照指定两个BMP 图像变成按钮外观的增强型按钮构件 btchkbox.zip 5K 增强型TCheckBox 构件,可以按不同的选取状态选择各自BMP图片 jcheck10.zip 12K 很漂亮的增强型TCheckBox 构件 lightchk.zip 2K 作者: Frederic Vanmol。 圆形 LED 类型的 TCheckBox 构件,可以加亮变暗. speedrol.zip 1K 可以根据Button不同状态(Up,Down,Over)显示不同图片,支持一个大Glyph分成三个按钮图. transrad.zip 2K 作者: Jason Looney. 透明Ridio Button torrybtn.zip 81K 作者: Maxim Peresada, Rob Schoenaker. TTorryButton 是增强型的 TSpeedButton 构件,外观如同一个普通的 TLabel 般,当鼠标移动至按钮上方,立即显示出按钮边框及加亮的LED 类型.带Exe演示程序 jcheck10.zip 12K 作者: Jan Hulala。 Windows98 外观的增强型 TCheckBox 构件. coolbtn.zip 2K 作者: Geert Vos。 TCoolButton2 是增强型的 TSpeedButton 构件,当鼠标移至其上方时按钮上的文字将会出现阴影 corelbtn.zip 2K 作者: Peter Theill。 提供类似 Corel 公司产品( Corel Photo Paint )中的特殊样式按钮 mscheckb.zip 5K 作者: Vasily Kholopov. 增强型的 TBitBtn 构件,当被鼠标按下时能够改变 Glyphs 格式 .BMP 的显示内容 shakebtn.zip 36K 作者: Harm. Sh
unit XMLexample; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, xmldom, XMLIntf, cxGraphics, cxControls, cxLookAndFeels, cxLookAndFeelPainters, dxSkinsCore, dxSkinsDefaultPainters, StdCtrls, Buttons, cxContainer, cxListBox, msxmldom, XMLDoc; type TForm1 = class(TForm) XMLDocument1: TXMLDocument; lstSource: TcxListBox; lstTarget: TcxListBox; SpeedButton2: TSpeedButton; SpeedButton1: TSpeedButton; SpeedButton3: TSpeedButton; SpeedButton4: TSpeedButton; SpeedButton6: TSpeedButton; SpeedButton5: TSpeedButton; SpeedButton7: TSpeedButton; SpeedButton8: TSpeedButton; Button1: TButton; cxListBox1: TcxListBox; cxListBox2: TcxListBox; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure SpeedButton2Click(Sender: TObject); procedure SpeedButton1Click(Sender: TObject); procedure SpeedButton3Click(Sender: TObject); procedure SpeedButton6Click(Sender: TObject); procedure SpeedButton5Click(Sender: TObject); procedure SpeedButton7Click(Sender: TObject); private { Private declarations } public procedure MoveUp(A: TcxListBox); //上移 procedure MoveDown(A: TcxListBox); //下移 procedure DeleteItem(A: TcxListBox); //删除 procedure ReLoadItems(A: TcxListBox; const Flag: Integer = 0); //重置 procedure CreateXML(APath:string); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin CreateXML('C:\Documents and Settings\Administrator\桌面\XML'); end; procedure TForm1.Button2Click(Sender: TObject); var Node: IXMLNode; Root: IXMLNode; //根节点 ParentNode: IXMLNode; //首节点 StrDir: string; xmlDocument: IXMLDocument; I: Integer; begin xmlDocument := TXMLDocument.Create(nil); StrDir := 'C:\Documents and Settings\Administrator\桌面\XMLConfig.xml'; xmlDocument.XML.LoadFromFile(StrDir); xmlDocument.Active := true; Root := xmlDocument.DocumentElement; //源字段 ParentNode:=Root.ChildNodes.FindNode('FieldsFromSource'); for I := 1 to ParentNode.ChildNodes.Count - 1 do begin Node:=ParentNode.ChildNodes[i]; cxListBox1.Items.Add(Node.ChildValues['FieldName']); end; //目标字段 ParentNode:=Root.ChildNodes.FindNode('FieldsFromTarget'); for I := 1 to ParentNode.ChildNodes.Count - 1 do begin Node:=ParentNode.ChildNodes[i]; cxListBox2.Items.Add(Node.ChildValues['FieldName']); end; end; procedure TForm1.CreateXML(APath: string); var xmlDocument: IXMLDocument; sDir: string; i:Integer; begin xmlDocument := TXMLDocument.Create(nil); with xmlDocument.XML do begin //开始写XML Add('<?xml version="1.0" encoding="GB2312"?>'); Add('<Config>'); //源字段信息写入XML if lstSource.Count>0 then begin Add('<FieldsFromSource>'); Add('<Number>' + IntToStr(lstSource.Count) + '</Number>'); for I := 0 to lstSource.Count - 1 do begin Add('<FieldInfo>'); Add('<Sequence>' + IntToStr(i) + '</Sequence>'); Add('<FieldName>'+ lstSource.Items[i]+'</FieldName>'); Add('<DisplayName_CN>'+ ''+'</DisplayName_CN>'); Add('<DisplayName_EN>'+ ''+'</DisplayName_EN>'); Add('<FieldType>'+ ''+'</FieldType>'); Add('<FieldSize>'+ ''+'</FieldSize>'); Add('</FieldInfo>'); end; Add('</FieldsFromSource>'); end else begin Add('<FieldsFromSource>'); Add('<Number>0</Number>'); Add('</FieldsFromSource>'); end; //目标字段写入XML if lstTarget.Count>0 then begin Add('<FieldsFromTarget>'); Add('<Number>' + IntToStr(lstTarget.Count) + '</Number>'); for I := 0 to lstTarget.Count - 1 do begin Add('<FieldInfo>'); Add('<Sequence>' + IntToStr(i) + '</Sequence>'); Add('<FieldName>'+ lstTarget.Items[i]+'</FieldName>'); Add('<DisplayName_CN>'+ ''+'</DisplayName_CN>'); Add('<DisplayName_EN>'+ ''+'</DisplayName_EN>'); Add('<FieldType>'+ ''+'</FieldType>'); Add('<FieldSize>'+ ''+'</FieldSize>'); Add('</FieldInfo>'); end; Add('</FieldsFromTarget>'); end else begin Add('<FieldsFromTarget>'); Add('<Number>0</Number>'); Add('</FieldsFromTarget>'); end; Add('</Config>'); //XML注释 Add('<!--FieldsFromSource 源字段 -->'); Add('<!--FieldsFromTarget 目标字段 -->'); Add('<!--FieldsInfo 字段信息 -->'); Add('<!--Number 字段数量 -->'); Add('<!--Sequence 序号 -->'); Add('<!--FieldName 字段名称 -->'); Add('<!--DisplayName_CN 中文名称 -->'); Add('<!--DisplayName_EN 英文名称 -->'); Add('<!--FieldType 字段类型 -->'); Add('<!--FieldSize 字段长度 -->'); //XML结束 end; xmlDocument.Active := True; sDir := APath; if not DirectoryExists(sDir) then begin if not CreateDir(sDir) then begin ShowMessage('创建文件夹失败'); Exit; end; end; xmlDocument.SaveToFile(sDir + 'Config.xml'); end; procedure TForm1.DeleteItem(A: TcxListBox); var _Index: Integer; begin with A do begin if (Items.Count > 0) and (ItemIndex <> -1) then begin _Index := ItemIndex; Items.Delete(_Index); end; end; end; procedure TForm1.MoveDown(A: TcxListBox); var CurrIndex, LastIndex: Integer; begin with A do begin CurrIndex := ItemIndex; LastIndex := Items.Count; if ItemIndex <> -1 then begin if CurrIndex + 1 < LastIndex then begin Items.Move(ItemIndex, (CurrIndex + 1)); ItemIndex := CurrIndex + 1; end; end; end; end; procedure TForm1.MoveUp(A: TcxListBox); var CurrIndex: Integer; begin with A do begin if ItemIndex > 0 then begin CurrIndex := ItemIndex; Items.Move(ItemIndex, (CurrIndex - 1)); ItemIndex := CurrIndex - 1; end; end; end; procedure TForm1.ReLoadItems(A: TcxListBox; const Flag: Integer); begin end; procedure TForm1.SpeedButton1Click(Sender: TObject); begin MoveDown(lstSource); end; procedure TForm1.SpeedButton2Click(Sender: TObject); begin MoveUp(lstSource); end; procedure TForm1.SpeedButton3Click(Sender: TObject); begin DeleteItem(lstSource); end; procedure TForm1.SpeedButton5Click(Sender: TObject); begin MoveDown(lstTarget); end; procedure TForm1.SpeedButton6Click(Sender: TObject); begin MoveUp(lstTarget); end; procedure TForm1.SpeedButton7Click(Sender: TObject); begin DeleteItem(lstTarget); end; end.
好的,以下是一个简单的 Delphi 10 FMX Markdown 编辑器的实现: 首先,需要创建一个新的 FMX 应用程序,并添加一个 TToolBar、 TSpeedButton、 TMemo 和一个 TWebBrowser 控件。 然后,在 TToolBar 中添加一个 TSpeedButton,设置其名称为 btnPreview,文本为“预览”,并将其 Align 属性设置为 alRight。 在 TMemo 控件上,启用 WordWrap 属性,并将其 Align 属性设置为 alClient。在 TWebBrowser 控件上,设置其 Align 属性为 alClient。 接下来,需要为 TSpeedButton 按钮添加一个事件处理程序,以便在用户单击该按钮时,将 Markdown 代码转换为 HTML 代码并将其显示在 TWebBrowser 控件中。以下是示例代码: ```delphi uses MarkdownProcessor; procedure TForm1.btnPreviewClick(Sender: TObject); var markdown: TMarkdownProcessor; begin markdown := TMarkdownProcessor.CreateDialect(mdDaringFireball); try WebBrowser1.LoadFromStr(markdown.process(Memo1.Text)); finally markdown.Free; end; end; ``` 最后,需要在项目中添加一个 Markdown 处理器单元。可以使用开源的 Markdown 处理器库,如 CommonMark 或 MarkDownDeep。以下是使用 MarkDownDeep 的示例代码: ```delphi unit MarkdownProcessor; interface type TMarkdownProcessor = class public function process(const markdown: string): string; end; implementation uses System.SysUtils, MarkDownDeep; { TMarkdownProcessor } function TMarkdownProcessor.process(const markdown: string): string; var md: TMarkDownDeep; begin md := TMarkDownDeep.Create; try Result := md.Transform(markdown); finally md.Free; end; end; end. ``` 现在,您可以运行应用程序并在 TMemo 控件中输入 Markdown 代码。单击“预览”按钮,将在 TWebBrowser 控件中显示转换后的 HTML 代码。 希望这可以帮助您开始构建自己的 Delphi 10 FMX Markdown 编辑器!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值