Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[2759] [기타] 아래는실수! 소스올려요(첨부화일을 못올리나요?)
grcsb [ ] 1587 읽음    1998-05-11 03:43
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
//


+ -

관련 글 리스트
2759 [기타] 아래는실수! 소스올려요(첨부화일을 못올리나요?) grcsb 1587 1998/05/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.