[pascal]
var
i: integer;
begin
for i := 0 to screen.imes.count – 1 do
begin
ComBoBox1.Items.Add(screen.Imes.strings[i]);
end;
end;
[/pascal]
2切換到輸入法
[pascal]
var
I: integer;
myhkl: hkl;
begin
if ComboBox1.Text <> ” then
begin
if Screen.Imes.Count <> 0 then
begin
I := screen.Imes.indexof(ComboBox1.Text);
if I >= 0 then
myhkl := hkl(screen.Imes.objects[i]);
activatekeyboardlayout(myhkl, KLF_ACTIVATE);
end;
end;
end;
[/pascal]
3關閉輸入法
[pascal]
begin
ImmSimulateHotKey(Handle, IME_THOTKEY_IME_NONIME_TOGGLE);
ComBobox1.Text := ”;
end;
[/pascal]
4取得目前輸入法
[pascal]
var
IMEHandle: THandle;
Idx: Integer;
IMEName: String;
begin
IMEName := ”;
ImeHandle := GetKeyBoardLayOut(0);
for Idx := 0 to Pred(Screen.Imes.Count) do
if HKL(Screen.Imes.Objects[Idx]) = ImeHandle then
IMEName :=Screen.Imes[Idx];
ShowMessage(IMEName);
end;
[/pascal]
大概是在 2007 年底的时候,研发部空降了一位从硅谷来的高管,空闻大师。空闻是一位温厚的长者,他告诉我们一切要以稳定为中心,所有影响系统稳定的因素都要解决掉。例如每做一个日常修改,都必须整个系统回归测试一遍;多个日常修改如果放在一个版本里面,要是一个功能没有测试通过,整个系统都不能发布。我们把这个叫做“火车模型”,任何一个乘客没有上车,都不许发车。这样做的最直接后果就是火车一直晚点,新功能上线更慢了,我们能明显的感觉到业务方的不满,空闻的压力肯定非常大。当时我都不理解这种一刀切的做法,为了稳定牺牲了发展的速度,这跟某 Party 的“稳定压倒一切”有什么分别?
但是到现在回过头来看看,其实我们并没有理解背后的思路。正是在这种要求下,我们不得不开始改变一些东西,例如把回归测试日常化,每天晚上都跑一遍整个系统的回归。还有就是在这种要求下,我们不得不对这个超级复杂的系统做肢解和重构,其中复用性最高的一个模块 —— 用户信息模块开始拆分出来了,我们叫它 UIC(user information center)。在 UIC 里面,它只处理最基础的用户信息操作,例如getUserById、getUserByName等等。