安装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没有输出怎么办?
暂时没解决。