• 2024-10-30lazarus menu组件
    lazarus的menu控件在银河麒麟显示(GTK2)灰黑色背景,荆通大神通过修改gtk2源码可以修改背景但效果还是不理想。近日在GitHub找到一个LazarusMenu,经试用发现问题很多,其中还使用了bgracontrols控件。我修改的版本删除bgracontrols控件,修正了大量的Bug,已可以使用。修改TAdvancedMenu
  • 2024-10-28【记录一下】lazarus多线程的用法
    网友“蓝天白云”在qq群问lazarus多线程的问题,以下代码是“啊D”给出的,但编译出错。procedureTForm1.Button2Click(Sender:TObject);beginmemo1.Text:='start...';TThread.CreateAnonymousThread(procedurevari:integer;beginSleep(1000);for
  • 2024-10-21使用debugserver方法
    lazarus最大的缺点我认为是Debug,如需要查看View:Width的值,lazarus是无法直接看到的,但用debugserver+SendDebug可以显示。使用方法:1、首先编译debugserver,打开编译lazarus\tools\debugserver\debugserver.lpi2、运行地debugserver3、unit的uses加入dbugintf4、在需要debug的地方插
  • 2024-10-19lazarus三方控件注意事项
    lazarus三方控件注意事项1)EHLIBTprintDbgrideh不能用,跟它源码,forfpc没有任何打印的代码。Tdbgrideh斑马线,设好后,无效。其它问题。。不知。可以明确:EHLIBforfpc不是全功能的,使用时要注意鉴别。2)FASTREPORT使用汉化,乱码,只能使用英文的。其它问题。。不知3)dataset-seri
  • 2024-10-13lazarus新的判断字符串是否为UTF8
    调用IsStringUTF8来判断string是否包含UTF8(中文);procedureTForm1.Button1Click(Sender:TObject);beginifIsStringUTF8(edit1.Text)thenmemo1.Lines.Add(s+'--包含中文')elsememo1.Lines.Add(s+'--包含不中文');end; functionIsStringUTF8(s
  • 2024-10-08今天终于解决lazarus debug模式为GDB时中文变量显示出错的问题
    之前已修复fpdebug中文变量的Bug,但GDB还存在问题(提示:Invalidcharacterxxxxinexpression)修复步骤:打开lazarus/components/lazdebuggergdbmi/gdbmidebugger.pp,按红色代码修改。在TGDBMIExceptionInfo=record后添加functionischinese(s:string):string(1790行):TGD
  • 2024-09-27Lazarus中对mysql数据库Blob类型进行读写例子
    一、读一个图片到数据库varinimage1:TImage;TPStream:TMemoryStream; inimage1:=TImage.Create(nil);//读取图片TPStream:=TMemoryStream.Create;Image1.Picture.SaveToStreamWithFileExt(TPStream,'jpg');//生成jpeg图片inimage1.Free;TPStr
  • 2024-09-23lazarus使用中文拼音首字母实现中文变量等快速代码补全
    在lazarus使用中文变量等代码补全功能基础上,按以下方法就可以实现输入中文拼音首字母就可以快速代码补全功能。代码补全功能:Ctrl+w 打开\lazarus\ide\wordcompletion.pp找到 procedureAddIfMatch(constALine,ALineUp:string;constAFirstPos,ALength:Integer);(lazarus
  • 2024-09-20完善lazarus中文代码补全功能
    当lazarus使用中文变量等代码补全时列表没对应的中文变量的: 解决方法:打开相应文件,添加红字代码,修改后重新编译lazarus就可以。1、\lazarus\ide\wordcompletion.pp找到procedureInitCharTable;(lazarus3.4在63行)procedureInitCharTable;varc:char;beginforc:=low(ch
  • 2024-09-13解决lazarus for win版本断点时不能显示中文变量的值和未定义的中文变量在Messages显示乱码的2个Bug
    按【让fpc/lazarus支持中文变量/过程/函数/中文控件名称】处理后已可以使用中文变量,但在debug断点时不能显示中文变量的值和未定义的中文变量在Messages显示乱码。存在的问题:1、不显示中文变量的值:2、在IDE的Messages未定义的中文变量显示乱码: 解决方法:1、不显示中文变量的
  • 2024-09-12lazarus交叉编译riscv64应用时编译出错取巧处理方法
    lazarus交叉编译riscv64应用时自带的memdataset/lazreporr等控件如果使用到formeditingintf.pas时链接时出现出类以下提示的错误:这是fpc引起的问题,也提交给lazarus/fpc官方,不知道啥能修复(希望官方最快修复这个Bug)。以下是网友英分享的修复方法(但本方法部分控件还存在链接问题),常
  • 2024-09-03lazarus DBGridEh标题栏排序
    lazarusDBGridEh标题栏排序按网上(delphi)的方法发现无效,经测试,以下代码可以正常排序:unitUnit1;{$modeObjFPC}{$H+}interfaceusesClasses,SysUtils,DB,Forms,Controls,Graphics,Dialogs,StdCtrls,Uni,DBGridsEh,DBCtrlsEh,LConvEncoding,DBGridEhImpE
  • 2024-09-03lazarus使用dbgrideh时遇到的问题
    问题:lazarus使用unidac+dbgrideh时,发现第一次查询可以正确显示查询的结果,当再次查询时(记录数>1条时),DBGridEH只显示1条记录,如果向下移动时还会出错。 点费率时只显示1条记录:这时向下移动会出错: 解决方法:uniquery查询前设置:dbgrideh.DataSource:=nil查询完成后重新设置Data
  • 2024-08-29解决lazarus版本dbgrideh在linux粘贴重复的Bug
    dbgrideh在linux存在粘贴重复的Bug,不啰嗦,直接给解决方法:1.打开EhLib.VCL11.1xxx/Lazarus/Lib/DBAxisGridsEh.pas2.定位到functionTDBAxisGridInplaceEdit.DoPaste(varMessage:TMessage):Boolean; 添加红字部分代码,重新编译应用就可以。AAxisBar:=Grid.AxisBa
  • 2024-08-27lazarus编写的应用开启(windows) 暗黑模式
    在QQ群大神大悟还俗发现fpcudeluxe在windows暗黑模式使用时界面也是和windows一样,这是他提供的方法:1、拷贝fpcudeluxe的metadarkstyle文件夹的文件到project目录(下载地址https://www.123pan.com/s/6OFxjv-JFdu3?提取码:iBiZ)2、在project*.lpr的uses增加下图绿框的代码programPr
  • 2024-08-24lazarus标题栏增加显示当前project的目标CPU及OS
    lazarus编写程序特别是需要交叉编译时,不清楚当前project交叉编译的目标CPU及OS,为方便使用,可以按以下方法(红字部分)修改:打开lazarus\ide\main.pp,找到procedureTMainIDE.UpdateCaption;procedureTMainIDE.UpdateCaption;functionAddToCaption(constCurrentCaption,CaptAdd
  • 2024-08-21解决lazarus 3.xx后在linux编译为Qt出错方法
    今天用lazarus3.4在银河麒麟将应用编译为Qt5出现以下错误信息:Warning:linker:/usr/bin/ld.bfd:/home/lb/fpcupdeluxe34/lazarus/lcl/units/aarch64-linux/qt5/qtint.o:infunction`QTINT$_$TQTWIDGETSET_$__$$_CREATE$$TQTWIDGETSET':Error:qtint.pp:(.text.n_qtint$_$t
  • 2024-08-21lazarus 编译时切换QT5/GTK2的方法
    lazarus编译时可以随时切换QT5/GTK2,方法如下:在project菜单-->options-->compileroptions-->additionsandoverrides点Set"LCLWidgetType"选择QT5或其他然后重新编译应用就可以。带menu、combobox等控件(在银河麒麟)的应用,用GTK2时有深灰的背景,QT5编译的整体会好点。注意:fastrepor
  • 2024-08-17置顶博客列表
    为精简首页置顶博客的数量,将需要置顶博客列出如下:1、[原创控件]为lazarusTDataSet增加类似TClientDataSet的Delta功能,可直接生成增删改的SQL(2024-08-17增加blob类型转base64)1、为lazarusTDataSet增加类似TClientDataSet的Delta功能,可直接生成增删改的SQL2、[原创控件]QFCompon
  • 2024-08-16Lazarus在Win和Linux下的计时
    一、毫秒级Linux平台示例(毫秒)programHighPrecisionTimer;{$modeobjfpc}{$H+}usesBaseUnix,SysUtils,Linux;varStartTime,EndTime:TTimeSpec;Elapsed:Double;begin//获取开始时间clock_gettime(CLOCK_MONOTONIC,@StartTime);//你的代码块Sleep(1);//
  • 2024-08-10Lazarus在Loongarch的loongxin mate系统不能打开对话框问题
    Lazarus在Loongarch的loongxinmate系统不能使用系统的打开、保存等对话框问题。运行OpenDialog1.Execute后出现  浮点数例外错误,程序自动退出。根据秋.风在在龙芯loongxinmate系统lazarus和编译的应用打开文件对话框出现卡死的临时处理方案-秋·风-博客园(cnblogs.c
  • 2024-07-25lazarus使用unidac+sqlite,用dbgrid显示float字段时遇到的问题
    遇到的问题:网友海使用过程发现,lazarus使用unidac+sqlite,用dbgrid显示float字段时遇到数据库的字段内容明明有多位小数,但在dbgrid只显示1位小数和截图最后1行显示1.1E2等问题。 在Navicat显示的表内容:这是他的解决方法: 修改UniConnection1的DataTypeMapping,将float映射为s
  • 2024-07-23Lazarus使用IPC收发消息
    使用IPC收发消息可以在Windows和Linux下通用。其它系统没测试。1、在system选项卡中选择TSimpleIPCServer和TSimpleIPCClient加到窗口中SimpleIPCClient1:TSimpleIPCClient;SimpleIPCServer1:TSimpleIPCServer;2、设置参数SimpleIPCServer1中设置:Global、Threaded、Act
  • 2024-07-16Lazarus 将LNET封装到DLL中
    最近工作中有个要求SOCKET的功能,想将一个通信功能做得简单一点。发现LNET非常方便,所以对它研究了一下。LNET有两种类型,可视化和非可视化。做WINDOWS下一般都是用可视化的。用于LINUX和WINCE,必须用非可视化的。我要将它封装成DLL的话,必须用非可视化的。DLL代码如下:librarypro
  • 2024-07-11lazarus 线程1
    标准线程用法TypeTAnalyzedataThread=class(TThread)privateprocedureDoProcedure;protectedprocedureExecute;override;publicConstructorCreate(CreateSuspended:boolean);end;constructorTAnalyzedataThread.Create(CreateSuspended:boolean);beginFree