最近把Lazarus升级到了SVN最新版本,开发vsgui,过程中发现了一些需要注意的地方。
1.中文编码
Lazarus0.9.26以后的版本也终于顺应了国际化的潮流,内部使用UTF8的编码。
我使用的Ubuntu也同样支持UTF8的编码,并且命令行界面默认使用的也是这个编码,所以基本相安无事。但Windows内部使用的是UNICODE编码(UTF8是UNICODE的一种,但不完全一样。UNICODE的一个中文字占用2字节,UTF8占用3字节),郁闷的是,WindowsXP的命令行界面无法使用UNICODE或者UTF8编码。
解决方法:
{$ifdef MSWINDOWS}
caller.AddParameter('i"' + Utf8ToAnsi(fnEdit.Text) + '"');
{$else}
caller.AddParameter('i"' + fnEdit.Text + '"');
{$endif}
2.Lazarus0.9.26之后的版本,似乎窗口大小的调整不是一步到位的,如果你的界面中使用到了需要更具窗口大小来修改自身大小和位置的组件的话,最好能在以下事件中都做出相应。
OnActivate,OnShow,OnResize
3.窗口有时会自动多出ScrollBar
解决方法:
把组建放在一个Panel上,Panel.BoardSpacing.Around设置为1,并且窗口大小扩大1。
4.
http://bugs.freepascal.org/view.php?id=12438Windows下没有问题,但为了多系统的兼容,建议也做此修改
解决方法:
把看得到的TabSheet对应的TabIndex排在前面。
5.Linux下,配置为GTK2界面后,普通权限用户,按键相应会多一次
如果Lazarus也使用GTK2 重新编译的话,开发界面也会有这个问题
解决方法:
sudo ...或者gksu ...
6.StatusBar不支持OnDraw事件
如果要在StatusBar上增加一些特定的组件,如ProgressBar,Button等,无法使用OnDraw时间,设置更新区域。
解决方法:
目前就只好把ProgressBar等空间直接放在上面,并在程序中调整位置。以后版本会支持的。
用户131114 2008-12-13 20:54
用户131114 2008-12-13 20:54
用户182104 2008-12-13 16:27
用户146821 2008-10-23 22:34
用户131114 2008-10-23 04:59
用户146821 2008-10-22 22:52
用户146821 2008-10-22 22:52