Предыдущая серия была тут - http://18delphi.blogspot.ru/2013/11/gui_4.html
Там я рассматривал возможность ввода строки в текущий контрол, а также посылку текущему контролу управляющих клавиш.
Рассмотрим ещё одно слово.
Для ввода "алфавитно-цифровых" символов.
Со стороны Delphi это выглядит так:
И пример использования:
И "вспомогательное" слово:
И тогда пример переписывается так:
Или с учётом ремарки (http://18delphi.blogspot.ru/2013/11/gui_1949.html) вот так:
Есть одна тонкость. Этот код работает с русскими буквами правильно, если клавиатура переключена на русскую локаль. Как это сделать из кода - я напишу чуть позднее.
А пока - закончим.
Там я рассматривал возможность ввода строки в текущий контрол, а также посылку текущему контролу управляющих клавиш.
Рассмотрим ещё одно слово.
Для ввода "алфавитно-цифровых" символов.
Со стороны Delphi это выглядит так:
interface TkwEmitString = class(TscriptKeyWord) {* Позволяет ввести строку. Пример: [code] PROCEDURE "Ввести строку" STRING IN aString aString EmitString END //"Ввести строку" [code] } protected // realized methods procedure DoIt(aContext: TscriptContext); override; end;//TkwEmitString implementation procedure TkwEmitString.DoIt(aContext: TscriptContext); var l_Index : Integer; l_C : Integer; l_H : THandle; l_S : String; begin l_S := aContext.PopString; l_H := Windows.GetFocus; Assert(l_H <> 0); for l_Index := 1 to Length(l_S) do begin l_C := ORD(l_S[l_Index]); if (Windows.GetFocus <> l_H) then Windows.SetFocus(l_H); // - иногда (например под отладчиком) фокус "убегает" из контрола - поэтому тут вставлена эта "заплатка" SendMessage(l_H, WM_CHAR, l_C, 0); end;//for l_Index end;//TkwEmitString.DoIt initialization ScriptEngine.RegisterKeyWord(TkwEmitString, 'EmitString');
И пример использования:
'Привет мир!' EmitString
И "вспомогательное" слово:
PROCEDURE "Ввести строку" STRING IN aString aString EmitString END //"Ввести строку"
И тогда пример переписывается так:
"Ввести строку {('Привет мир!')}"
Или с учётом ремарки (http://18delphi.blogspot.ru/2013/11/gui_1949.html) вот так:
'Привет мир!' "Ввести строку"
Есть одна тонкость. Этот код работает с русскими буквами правильно, если клавиатура переключена на русскую локаль. Как это сделать из кода - я напишу чуть позднее.
А пока - закончим.
Комментариев нет:
Отправить комментарий