Q&A

  • 영문을 입력하면 한글로 해석해서 뿌려줄수 있을까요??
안녕하세요..^^;;

보통의 edit 컨퍼넌트들은 ImeMode 라는 것이 있어서 초기 입력값이 한글인지 아닌지를 정할수 있는데 FlatStyle에 포함된 FlatEdit 는 그런 기능이 없어서 그런데요...

'a' 를 입력하면 'ㅁ' 이 나오게 할수 있을까요?? 문론 한글 자판을 치듯 칠테고 한글로 잘 표시 되어 야 합니다..
ex) 'aksd' 입력시 표시는 '만ㅇ' 이렇게 보여야 겠지요..^^;;

에고 제가 컨퍼넌트들을 수정할수 있는 그런 실력이 되면 해 볼텐데..ㅠ.ㅠ

부탁드립니다..
1  COMMENTS
  • Profile
    바보감자 2003.07.19 04:58
    안녕하세요 언제나 초보 바보감자입니다..
    그 컨트롤로 포커스가 갔을때 발생되는 이벤트에..
    영문 키로 되어있으면
    한글 키로 바꾸어 주면 되는거아닌가요..음..
    예전에 올린 자료가 있는디..

    어디보자..
    아 찾았네요
    이거 한번 보세요 ^^

    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    StdCtrls, Imm, Buttons, Grids;  // Imm을 추가했네요

    type
    TForm1 = class(TForm)
       StringGrid1: TStringGrid;
       procedure StringGrid1SetEditText(Sender: TObject; ACol, ARow: Integer;
         const Value: String);
    private
      { Private declarations }
    public
      { Public declarations }
      procedure SetHangeulMode(SetHangeul: Boolean);
      function  GetHangeulMode: Boolean;
    end;

    var
    Form1: TForm1;

    implementation
    {$R *.DFM}

    {한글/영문 변환 루틴}
    procedure TForm1.SetHangeulMode(SetHangeul: Boolean);
    var
    tMode : HIMC;
    begin
    tMode := ImmGetContext(handle);
    if SetHangeul then  // 한글모드로
      ImmSetConversionStatus(tMode, IME_CMODE_HANGEUL,
                                    IME_CMODE_HANGEUL)
    else                // 영문모드로
      ImmSetConversionStatus(tMode, IME_CMODE_ALPHANUMERIC,
                                    IME_CMODE_ALPHANUMERIC);
    end;

    function TForm1.GetHangeulMode: Boolean;
    var
    tMode : HIMC;
    Conversion, Sentence: DWORD;
    begin
    tMode := ImmGetContext(handle);
    ImmGetConversionStatus(tMode, Conversion, Sentence);
    if Conversion = IME_CMODE_HANGEUL then
      GetHangeulMode := True
    else
      GetHangeulMode := False;
    end;

    procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,
    ARow: Integer; const Value: String);
    var
    ro , co : integer;
    begin
               ro := stringgrid1.row;
               co := stringgrid1.col;
               if co = 2 then
                begin
                  if GetHangeulMode then
                  begin
                  end else
                  SetHangeulMode(True);
                  end;
               if not(co = 2) then
               begin
                  SetHangeulMode(false);
               end;
       end;

    end.

    그럼 즐푸하세요옵. ^^