본문 바로가기

카테고리 없음

[일반/컴포넌트] TEdit 입력이 최대 길이를 벋어나면 focus 이동

반응형
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    procedure WMCommand(var Msg: TWMCommand); message WM_COMMAND;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
{$R *.DFM}

// TEdit의 MaxLength 길이보다 많은 값을 입력하려 할때 이것은
// 부모 원도우에 EN_MAXTEXT 메시지를 보내는데 이를 받아서 구현합니다
procedure TForm1.WMCommand(var Msg: TWMCommand);
begin
  if Msg.NotifyCode = EN_MAXTEXT then
  begin
    PostMessage(Handle, WM_NEXTDLGCTL,0, 0); // 다음 콘트롤로 focus 이동
    // SendMessage(Handle, WM_NEXTDLGCTL, 1, 0); // 이전으로 이동시
    inherited;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit1.MaxLength := 10;
  Edit2.MaxLength := 10;
  Edit3.MaxLength := 10;
end;

end.
반응형