Blogs
时间就是嵌入式程序开发的生命线
Submitted by hubdog on Sat, 2007-03-10 14:43这周特别郁闷,由于上线的程序一个月内连续出现问题,本周7天,一天没休息,还搞了3个通宵调查现场出现的bug。 这周的几个Bug有一个共同的特点就是都是跟时间有关,其中一个是移植以前的一个硬件的Driver。这个Driver写得比较烂,其中一个TaskDelay的时间本来应该是Tick单位,结果被他们当成毫秒了,这次用的CPU是5ms一个 Tick。结果延时超出了硬件的范围。导致硬件驱动特别不稳定,动不动就通信异常。
Icon Editor
Submitted by hubdog on Wed, 2007-02-28 09:33Sqlite Developer 2.50
Submitted by hubdog on Sun, 2007-02-25 20:06这一版本主要增加了自动SQL语法错误检查。
下载地址
http://www.sharpplus.com/downloads/SqliteDev250.zip
Sqlite Developer 2.45
Submitted by hubdog on Mon, 2007-02-12 21:41修正了无法解析自带的Sample数据库的表和触发器的错误
同时这一版本支持多语言界面切换的的功能,首先支持了中文。
Sqlite Developer 2.42
Submitted by hubdog on Sun, 2007-02-04 13:12更新了Sqlite到3.3.12
同时重写了Parser和Lexer,支持了对外键关联语法的支持。
修正了对Unicode的Sql Script的支持。可以正确解析中文注释和中文字段。
下载地址:
http://www.sharpplus.com/downloads/SqliteDev242.zip
How to Hook WM_SETFOCUS Message
Submitted by hubdog on Tue, 2007-01-30 21:53We should use WH_CALLWNDPROC type hook , not WH_GETMESSAGE type hook
SQlite Developer 2.36
Submitted by gougou on Mon, 2007-01-22 12:30这两个月一直忙的项目终于要上线运行了.
上周我也总算有空把SQliteDeveloper的Schema Editor用的Grid重写了一遍,修改了很多焦点和闪烁的问题.
同时更新SQlite DLL到3.3.10
ControlStyle
Submitted by gougou on Fri, 2007-01-19 20:16控件的ControlStyle集合属性中可以设置为包含
csSetCaption
这个样式的意思是,但用户改变了控件的名字的时候,会自动的修改相应的控件的Caption属性为新的名字
Hook WM_SETFOCUS消息
Submitted by gougou on Sat, 2007-01-13 11:59注意,要想Hook焦点的消息的话,需要使用WH_CALLWNDPROC类型的钩子,而不是WH_GETMESSAGE类型的钩子
为任意控件添加阴影的效果
Submitted by gougou on Thu, 2006-12-28 20:22在Delphi的ShadowWnd单元中定义了一个TShadowWindow的类,这个类可以用来给人任意的可视化控件添加阴影效果,示意代码如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ShadowWnd;
type
TForm1 = class(TForm)
lbl1: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure lbl1Click(Sender: TObject);
private
{ Private declarations }
FShadow:TShadowWindow;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
FShadow := TShadowWindow.CreateShadow(lbl1, csRight);
FShadow.Control:=lbl1;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
FShadow.Free;
end;
procedure TForm1.lbl1Click(Sender: TObject);
begin
if FShadow.Visible then
FShadow.Hide
else
FShadow.Show;
end;
end.