安装Lazarus
首先到Lazarus官网,找到合适的版本下载页面,比如Mac的版本:
https://sourceforge.net/projects/lazarus/files/Lazarus%20macOS%20x86-64/Lazarus%203.4/
将三个文件都下载到本地,需要安装这三个文件:
fpc-src-3.2.2-20210709-macosx.dmg | 2024-05-26 | 50.5 MB | 70 |
---|---|---|---|
fpc-3.2.2.intelarm64-macosx.dmg | 2024-05-26 | 274.2 MB | 75 |
Lazarus-3.4-macosx-x86_64.pkg | 2024-05-26 | 278.1 MB | 155 |
下载后双击安装,如果因为安全原因不允许安装,那么按住shift之后双击进行安装。
启动后,就进入了Lazarus的IDE主界面。
下面开始我们的第一个Lazarus程序!
Lazarus Tutorial/zh CN - Lazarus wiki
起点 - 你的第一个Lazarus程序!
启动后的界面
启动后,桌面上将出现很多窗口:顶部是主菜单,左面是对象观察器,Lazarus源代码编辑器将占据大部分的桌面,而一个预置的Form1窗体将覆盖在源代码编辑器的上面。
如果是中文系统的话,那么默认将是中文界面。如果使用GTK库的话,注意使用GTK2,因为GTK1对中文的支持不好。
创建按钮
在顶部的主菜单上,菜单分隔线的下面有一排标签。如果Standard标签还未被选中,单击选中它。然后找到TButton图标(一个有OK字样的矩形),单击Tbutton图标,然后在Form1窗体上找个宽敞的地方单击一下。一个有着"Button1"标题的矩形按钮就出现了。重复一次,你将获得"Button2"按钮,建议你把它放到Button1的右面。
现在单击Button1选中它,左侧的对象观察器上将出现Button1对象的所有属性。找到名为Caption的属性(你可以在"收藏夹"标签下更方便地找到它),现在这个属性的值是"Button1"。单击显示着"Button1"的方格,把里面"Button1"文本改成"Press",当你按下Enter(或者单击别的方格)后,你会看见Form1窗体上的Button1按钮上的文本变成了"Press"。然后找到对象观察器上的"事件"标签,你会看见可以给Button1关联很多事件(Event),包括OnClick,OnEnter,OnExit等等。选择OnClick右边的空白方格,将出现一个显示"..."(三个点,也就是省略号)的小方格,在这个方格上单击,你将自动跳转到源代码编辑器,同时你的光标会处于一段过程(procedure)代码中:在其中输入:
Button1.caption := 'Press again';
按下F12选中Form1窗体。(发现MAC下按F12无法选中From1窗体,可以在窗口里选择From1窗体)
然后我们来编辑Button2的属性,将Caption修改为"Exit",然后选择OnClick事件,单击那个显示"..."的小方格,你又回到了源代码编辑器,光标位于另一段过程代码的中间:
procedure TForm1.Button2Click(Sender: TObject); begin {输入:} Close; end;
由于中间出现问题,重新新建项目
重新新建项目
按前面的步骤创建按钮
运行程序
现在可以尝试编译这个程序了。最简单的方法是在顶部主菜单中选择"运行",在弹出的子菜单中选择"运行"(你也可以使用快捷键F9,在MAC下是Commond R)。如果一切顺利,你的程序将被编译执行。
所有的编译信息都会出现在底部的"消息"窗口中。最终,一个没有刻度标记(编辑状态下才会出现)的Form1窗口将出现在屏幕上。这是你的应用程序的主窗口,它正等着你去按按钮(以及其他操作)。
尝试下点击Press按钮,你会发现按钮的标签变成了"Press again"。之后你再怎么按,它依然显示"Press again"。
现在点击Exit按钮,窗口将关闭,程序也就终止了(在MAC下按了两次才关闭。。。)。编辑状态下有着丑陋刻度标志的Form1又回到了屏幕上,准备接受更多的修改完善。
现在你应该保存你的工作了(你应该经常这么做!),选择顶部主菜单上的" 工程 > 保存工程 "来保存工程文件。
修改项目
在Form1窗体上选择Press按钮("Button1")。
在"事件"标签中选择OnClick,点击出现的"..."方格,来回到源代码编辑器。
procedure TForm1.Button1Click(Sender: TObject); {这段代码使用了Button1的Tag属性,使Tag属性在0和1之间转换} begin if Button1.tag =0 then begin Button1.caption := 'Press again'; Button1.tag := 1 end else begin Button1.caption := 'Press'; Button1.tag := 0 end end;
这样按钮1可以来回在Press again和Press之间切换。
调试项目
第三步 常用调试方法
有时候需要一些直接有效的打印出调试内容,比如像VB 下的 Debug.print 可直接在立即窗口中打印出调试内容
可以使用
WriteLn('XXXX ', XXX);
Write('XXXXXX');
但是在网上发现不少新人使用会弹出: project project1 raised exception class 'EInOutError' with message:file not open
异常通知
只需要在文件头部加入预编译指令(Mac下不需要加这句)
{$APPTYPE CONSOLE}
这样调试时会弹出一个类dos对话框,输出调试的内容
(这里没有测试成功,没有找到调试输出的内容)
常用技巧
lazaurs的编辑器蛮强大的,支持代码补全,自动完成,模板编辑,多行缩进注释,选定代码后批量更改里面的单词!
1.代码补全
按下键盘的Ctrl+W键!输入变量后按下这个键就OK啦~
MAC下不行。
2.自动完成
自动完成的快捷键大多数都冲突了,解决方法是打开 工具(T)->选项...->编辑器->键盘映射->CodeTools命令->标识符自动完成 上右键 编辑 ,然后根据实际情况修改吧,我的是再勾选Alt,也就是说,我的热键是Ctrl+Alt+Space!
MAC下是在Lazarus-选项-编辑器-键盘映射-Code Tools-标识符自动完成 上面编辑,默认是Ctrl+Space
3.模板编辑
这个也蛮简单,按下键盘的Ctrl+J,然后输入class,回车!是不是很酷!
Mac下是“代码模版”?
4.多行缩进注释
缩进的:向左 -> Ctrl+U
向右 -> Ctrl+I(选中多行代码更爽)
多行注释:Ctrl+/
5.选定代码后批量更改里面的单词
先选中几行代码(需要修改的代码段),然后点击编辑器左边显示行号左边的那支笔。
这个时候你可以输入b,变量a就全部改为b,还可以按下tab跳到下一个单词。
6.编辑器的高亮
<?xml version="1.0"?> <CONFIG> <EditorOptions Version="9"> <Display DoNotWarnForFont="Ubuntu Mono" EditorFont="Ubuntu Mono" EditorFontSize="13"> <MarkupCurrentWord NoKeyword="False"/> </Display> <KeyMapping> <default Count="1"> <Version Value="6"/> <Item1 Name="Identifier completion"> <KeyA Default="False" Key1="32" Shift1="5"/> </Item1> </default> </KeyMapping> <CodeTools CodeTemplateFileName="/home/lht/.lazarus/lazarus.dci" CompletionLongLineHintTypeCompletionLongLineHintType="sclpExtendRightOnly" AutoDelayInMSec="104"/> <Mouse> <Default Version="1"/> </Mouse> <Color Version="9"> <LangObjectPascal Version="9"> <ColorScheme Value="Twilight"/> <SchemeTwilight> <Space Background="1973790" FrameColor="5000268" FrameStyle="slsDotted" FrameEdges="sfeBottom"/> <Number Foreground="7434751"/> <String Foreground="7337839"/> <Symbol Foreground="clYellow"/> <Comment Foreground="clSkyBlue" Style="fsItalic"/> <Assembler Foreground="11715098"/> <Directive Foreground="22015"/> <Case_label Foreground="16541892"/> <IDE_Directive Foreground="1478752"/> <Reserved_word Foreground="1023473"/> </SchemeTwilight> </LangObjectPascal> <Globals Version="9"> <SchemeTwilight> <ahaDefault Background="1973790"/> </SchemeTwilight> </Globals> <LangPython Version="9"> <SchemeTwilight> <Float Foreground="8345087"/> <Octal Foreground="16755455"/> <Number Foreground="8345087"/> <String Foreground="8388522"/> <Symbol Foreground="clYellow"/> <Comment Foreground="clSkyBlue"/> <Hexadecimal Foreground="8345087"/> <SyntaxError Foreground="16755285"/> <Documentation Foreground="16755370"/> <Reserved_word Foreground="43775"/> <Non_reserved_keyword Foreground="8366847"/> </SchemeTwilight> </LangPython> </Color> <Misc PasExtendedKeywordsMode="True"/> <General> <Editor TabIndent="True" TabWidth="2"/> </General> <DividerDraw> <LangObjectPascal> <TypeSect> <TopColor Value="9157119"/> </TypeSect> <TypeGVar> <TopColor Value="9157119"/> </TypeGVar> <TypeGStruct> <TopColor Value="9157119"/> </TypeGStruct> <TypeProc> <TopColor Value="9157119"/> </TypeProc> <TypeLStruct> <MaxDepth Value="1"/> <TopColor Value="9157119"/> </TypeLStruct> </LangObjectPascal> </DividerDraw> </EditorOptions> </CONFIG>
总结
通过本次实践,对Laraus有了初步了解,可以做一个带按钮的窗体,并在按钮触发代码。
现在存在的问题就是跟踪信息还看不到。另外MAC下窗体布局有点问题。
调试
放置按钮的时候发现按钮位置变动
按钮和鼠标配置不匹配,不明白什么原因,而且后面发现点中按钮2还是现实按钮1的属性,并且无法进入按钮2的事件。总之全乱了。
可以在对象查看器选择按钮1或2。
在按钮Caption里面写的时候报错
每写一个字母,都会弹出一个报错对话框
结合前面那些错误,关闭项目,重新新建项目
在Mac下点击Exit按钮,按了两次才关闭程序
不知道什么原因。好像每个按钮都需要按两次。。。。是不是设定的双击? 大约就是双击,在Mac下。
破案了,是鼠标的问题,用MAC的触摸板就没这个问题了。
小技巧:Laraus里面用大括号来注释
除了用双斜线注释外,还可以用大括号来注释,大括号里可以放多行。
调试时报错expected but "identifier WRITELN" found
编译项目,目标:/Users/skywalk/Documents/project1: 退出代码1,错误: 1
unit1.pas(57,2) Error: Syntax error, ";" expected but "identifier WRITELN" found
前面一句话需要‘;’加上,问题解决。
Free Pascal里面有些语句后面带分号,有些不带,不太明白。。。。
laraus 调试write没有输出怎么办?
暂时没解决。