unit HIME;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, DBCtrls, Imm;
type
THImeMode = (hmNone, hmHangul, hmEnglish);
THIme = class(TComponent)
private
FHimeMode: THimeMode;
FApplyComponent: TWinControl;
protected
Procedure DoEnter(Sender: TObject);
Procedure SetMode(Mode: THimeMode);
Procedure SetApplyComponent(aComponent: TWinControl);
public
published
Property HimeMode: THImeMode Read FHImeMode Write SetMode Default hmNone;
Property ApplyComponent: TWinControl Read FApplyComponent Write SetApplyComponent;
end;
THImeEdit = class(TEdit)
private
FHImeMode: THImeMode;
protected
Procedure DoEnter; Override;
Procedure SetMode(Mode: THImeMode);
public
published
Property HImeMode: THImeMode Read FHImeMode Write SetMode Default hmNone;
end;
THImeDBEdit = class(TDBEdit)
private
FHImeMode: THImeMode;
protected
Procedure DoEnter; Override;
Procedure SetMode(Mode: THImeMode);
public
published
Property HImeMode: THImeMode Read FHImeMode Write SetMode Default hmNone;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Black', [THime, THImeEdit, THImeDBEdit]);
end;
Procedure _SetMode(AOwner: TForm; Mode: THImeMode);
Var
IMC: HIMC;
dwSentence : DWORD;
dwConversion : DWORD;
Begin
If Mode = hmHangul then
Begin
IMC := ImmGetContext(AOwner.Handle);
if ImmGetConversionStatus(IMC, dwConversion, dwSentence) then
ImmSetConversionStatus(IMC, IME_CMODE_NATIVE, dwSentence);
End Else
If Mode = hmEnglish then
Begin
IMC := ImmGetContext(AOwner.Handle);
if ImmGetConversionStatus(IMC, dwConversion, dwSentence) then
begin
dwConversion := dwConversion and $fffffffe;
ImmSetConversionStatus(IMC, dwConversion , dwSentence);
end;
End;
End;
// Procedure For THime
Procedure THIme.DoEnter(Sender: TObject);
Begin
If FHImeMode <> hmNone then
SetMode(FHImeMode);
End;
Procedure THIme.SetMode(Mode: THImeMode);
Begin
FHImeMode := Mode;
_SetMode((Owner As TForm), Mode);
End;
Procedure THime.SetApplyComponent(aComponent: TWinControl);
Begin
If aComponent is TEdit then
Begin
(aComponent as TEdit).OnEnter := DoEnter;
FApplyComponent := aComponent;
End Else
If aComponent is TDBEdit then
Begin
(aComponent as TDBEdit).OnEnter := DoEnter;
FApplyComponent := aComponent;
End;
End;
// Procedure For THimeEdit
Procedure THImeEdit.DoEnter;
Begin
Inherited DoEnter;
If FHImeMode <> hmNone then
SetMode(FHImeMode);
End;
Procedure THImeEdit.SetMode(Mode: THImeMode);
Begin
FHImeMode := Mode;
_SetMode((Owner As TForm), Mode);
End;
// Procedure For THimeDBEdit
Procedure THImeDBEdit.DoEnter;
Begin
Inherited DoEnter;
If FHImeMode <> hmNone then
SetMode(FHImeMode);
End;
Procedure THImeDBEdit.SetMode(Mode: THImeMode);
Begin
FHImeMode := Mode;
_SetMode((Owner As TForm), Mode);
End;
end.
//
// HIme Vcl Library version 1.0
// mady by Lee Kyung Moon Black Soft
// 1997. 1. 7. Tuesday
//
|