Александp (24.04.01 16:15)
Кто-нибудь знает, как
"отучить" RichEdit самопpоизвольно пеpеключать pаскладку клавиатуpы пpи
пеpеходе с pусского на английский текст?
EM_SETLANGOPTIONS (WM_USER+120)
почему-то не помогает!
LOM (24.04.01 19:59)
Вот это было ФАКе
Озерова:
---------------------------------------
Максим Гуменюк
пишет:
Самое главное, что мне не нравится в Richedit - это то, что он сам
меняет язык при перемещении по
тексту, не смотря, что вы включили нужный
язык, при переходе на участок текста, набраный другим
языком.
этот
баг я обхожу так.
я создаю потомка Richedit:
меню Component\New
Component
указываю предком TRichedit
Переписаю обработку события
WM_INPUTLANGCHANGE, при этом я не вызываю обработчик предка,
т.е.
Richedit-а
Заодно обрабатываю событие WM_INPUTLANGCHANGEREQUEST,
которое сообщает, что пользователь изменил
язык. Тут надо вызвать
обработчик предка, а то не будет переключаться язык.
Вот что из этого
получилось. Имеем исправленный компонент VCL с дополнительным событием.
unit RichEditEx;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ComCtrls;
type
TLangChangeEvent=procedure(Sender:TObject;Lang:HKL) of object;
TRichEditEx = class(TRichEdit)
private
FOnLangChange:TLangChangeEvent;
procedure WMLangRequest(var M:TMessage);message WM_INPUTLANGCHANGEREQUEST;
procedure WMLangChange(var M:TMessage);message WM_INPUTLANGCHANGE;
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
published
property OnLangChange:TLangChangeEvent read FOnLangChange write FOnLangChange;
{ Published declarations }
end;
procedure Register;
implementation
procedure tricheditex.WMLangRequest(var M:TMessage);
begin
if assigned(FOnLangChange) then FOnLangChange(self,m.LParam);
inherited;end;
procedure tricheditex.WMLangChange(var M:TMessage);
begin m.Result:=1;end;
procedure Register;
begin
RegisterComponents('Samples', [TRichEditEx]);
end;
end.
Максим
Гуменюк, max1gu@fiberia.com
---
Из конференции сайта МАСТЕРА DELPHI (delphi.mastak.ru)
|
Copyright ©
"Мастера DELPHI" E-mail:
delphi@mastak.com
http://www.delphimaster.ru |
Источник получения информации: http://www.delphimaster.ru
|