lazarus创建自定义组件

这篇具有很好参考价值的文章主要介绍了lazarus创建自定义组件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

lazarus创建自定义组件,方便有一堆标准控件有相同或相似操作,建个新组件,这样用的时候只要继承一下,就不用再重复代码了。

参考文章 Delphi自定义控件开发

lazarus里新建组件菜单在 顶层菜单 软件包下

比如我想新建个继承之tstatictext控件的TURLLabel,就新建URLLabel.pas文件,unit单元名也是URLLabel,类里几个作用域简单说明一下

  • private 类内访问
  • protected 类内访问,可用于组件的覆盖方法
  • public 可类内外访问,运行时可访问,可用于组件的新方法
  • published 可类内外访问,设计时可访问,可用于组件的属性

 组件可用于工程内或安装到lazarus,显示到组件面板方便其他任何工程使用

register方法确定了显示的新组件名和新分组名,如果工程庞大,可能一个分组放一堆新组件

下面是我实现的一个简单组件,新增了2个属性browse存放操作系统浏览器,url存放一个网址,继承重写了click方法,假如url不为空,点击即可用浏览器打开一个网址

还重写了mouseleave和mouseenter,在鼠标移动到组件上和离开组件变化一下组件背景色和边框,本来一个效果就可以,发现window和linux分别只能看到一个效果,那就写2个效果,这样2个操作系统就能都有效果

unit URLLabel;

{$mode ObjFPC}{$H+}

interface

uses
  Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs,StdCtrls,Process;

type
  TURLLabel = class(tstatictext)
  private
       FUrl:AnsiString;
        Fbrowse:AnsiString;
  protected
       procedure click;override;
        procedure MouseLeave; override;
    procedure Mouseenter; override;
  public
        constructor create(Aowner:Tcomponent);override;
  published
       property Url:AnsiString read FUrl write FUrl;
        property browse:AnsiString read Fbrowse write Fbrowse;
  end;

procedure Register;

implementation

procedure Register;
begin
  //组件面板 linco是组名 turllabel是具体组件名
  RegisterComponents('Linco',[TURLLabel]);
end;
procedure TUrlLabel.click;
var
  Process: TProcess;
begin
  if length(Url) >0 then
  begin
  Process := TProcess.Create(nil);
  try
    Process.InheritHandles := False;
    Process.Options := [];
    Process.ShowWindow := swoShow;
    Process.Executable := browse;
    Process.Parameters.Add(Url);
    Process.Execute;
  except
    on E: EOSError do
      writeln(e.Message);
  end;
  Process.Free;
  end;
//ShellExecute(Application.Handle, nil, Pchar(Url), nil, nil,SW_noRMAL);
inherited;

end;
constructor TUrlLabel.create(Aowner:Tcomponent);
begin
inherited create(Aowner);
cursor:=crHandPoint;
Font.Style:= [fsUnderline];
font.color:=clhighlight;
color:=clsilver;
browse:='/usr/bin/browser';
end;

procedure TUrlLabel.MouseLeave;
begin
       Color:=clsilver;
       borderstyle:= sbssingle;
     inherited;
 end;
  procedure TUrlLabel.Mouseenter;
begin
     Color:=clmedgray;
       borderstyle:= sbssunken;
     inherited;
 end;

end.            

代码输入完毕,软件包面板有编译按钮,编译后选择使用下的安装,安装后自动重启lazarus,就可以当做普通控件使用了。文章来源地址https://www.toymoban.com/news/detail-733447.html

到了这里,关于lazarus创建自定义组件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • lazarus开发:提升sqlite数据插入速度

    lazarus开发:提升sqlite数据插入速度

    目录 1 前言 2 优化数据容器 3 开启事务插入数据 4 其他方面优化 近期有一个需求是向数据库中插入excel文件中的10万多条数据,接近70个字段。最初整个插入数据时间是大约40分钟,经过优化调整后,大幅优化为大约5分钟。这里简单介绍一下采取的措施。 这里的数据容器是指

    2024年02月06日
    浏览(9)
  • lazarus、delphi文件Http下载断点续传的实现

    下载大文件时,断点续传是很有必要的,特别是网速度慢且不稳定的情况下,很难保证不出意外,一旦意外中断,又要从头下载,会很让人抓狂。断点续传就能很好解决意外中断情况,再次下载时不需要从头下载,从上次中断处继续下载即可,这样下载几G或十几G大小的一个

    2024年02月13日
    浏览(12)
  • lazarus:用FpSpreadsheet快速搭建基于电子表格文件的单机程序

    lazarus:用FpSpreadsheet快速搭建基于电子表格文件的单机程序

    目录 1 简介 2 制作简单的电子表格  3 需要几个控件,以及简单属性设置 3.1 TsWorksheetDataset 3.2  DataSource1控件 3.3 DBNavigate控件 3.4 DBGrid 3.5 编译运行,插入一行数据 在FpSpreadsheet控件包中,有一个专门把电子表格作为数据库来处理的数据集组件:WorksheetDataset。可以执行数据增查

    2024年02月10日
    浏览(7)
  • linux下lazarus开发ide里 BGRAControls控件库comboBox示例

        sourceforge下载可能比较慢,选择 下载有问题,然后auto 这样就会跳转国内镜像站点,飞快完成. 先fpc-laz 再fpc-src  最后 lazarus-project - the IDE   依次点击[Tools]--[Options] 然后弹出选项菜单,点击[Environment]下的[General],选择右侧的[Language]下的[Chinese],然后点击右下方的[OK]键即

    2024年02月15日
    浏览(16)
  • 通付盾Web3专题 | SharkTeam:起底朝鲜APT组织Lazarus Group,攻击手法及洗钱模式

    通付盾Web3专题 | SharkTeam:起底朝鲜APT组织Lazarus Group,攻击手法及洗钱模式

    国家级APT(Advanced Persistent Threat,高级持续性威胁)组织是有国家背景支持的顶尖黑客团伙,专门针对特定目标进行长期的持续性网络攻击。朝鲜APT组织Lazarus Group就是非常活跃的一个APT团伙,其攻击目的主要以窃取资金为主,堪称全球金融机构的最大威胁,近年来多起加密货

    2024年02月02日
    浏览(16)
  • 组件库的使用和自定义组件

    目录 一、组件库介绍 1、什么是组件 2、组件库介绍 3、arco.design 二、组件库的使用 1、快速上手 2、主题定制 3、暗黑模式 4、语言国际化 5、业务常见问题 三、自定义组件 2、组件开发规范 3、示例实践guide-tip 4、业务组件快速托管 (1)工业:具有标准接口和某种功能且可复

    2024年02月11日
    浏览(22)
  • 什么是Vue组件?如何创建和使用组件?

    啥是组件? 组件就是Vue应用中的小模块,可以重复使用的代码块。组件使得开发大型应用更加容易,因为你可以把代码分成多个小块,每个小块都负责特定的任务,就像搭乐高积木一样。 创建组件 在Vue中创建组件有两种方式: 注册组件 使用Vue.component()方法注册一个全局组

    2024年02月06日
    浏览(7)
  • Vue组件解析:自定义表格组件ByTable详解

    【简介】:本文将介绍一个基于Vue框架和elementUi的自定义表格组件ByTable,通过阅读本文,你将了解到ByTable组件的使用方式、属性和插槽的配置方法,以及如何通过自动请求接口获取表格数据和实现分页功能。 ByTable是一个通用的Vue表格组件,用于展示数据并提供分页功能。它

    2024年02月10日
    浏览(9)
  • 【Flutter】创建应用顶级组件,应用根组件 (学习记录)

    在 Flutter 中,应用的顶级组件或根组件通常是在 main() 函数中通过 runApp() 方法创建的。这个组件通常是一个 MaterialApp、CupertinoApp、GetMaterialApp 或其他类似的应用框架组件。 以下是一个创建 MaterialApp 作为根组件的示例: 在这个示例中,MyApp 是应用的根组件,它返回了一个 Ma

    2024年02月04日
    浏览(5)
  • 【分页表格】Vue2 + Element UI实现自定义的分页表格组件(自定义Vue组件)

    这篇文章,主要介绍Vue2 + Element UI实现自定义的分页表格组件(自定义Vue组件)。 目录 一、分页表格 1.1、运行效果 1.2、运行环境 1.3、案例代码

    2024年02月11日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包