Q&A

  • 칸이 다 차면, 항목이동
제가 저번에 질문 함 했었는데요. 어떤분이 일케 답해주셨네요.

==========
질문의 요지를 잘 몰겠쮜만....

EditBox의 MaxLength를 설정해서 MaxLength와 같으면
담으로 넘기면 되지 않을까용......냠냠......

즐콩...^^;;
==========
답변감사함다. 꾸벅..

그런데요.. 이렇게 하면 이런식의 항목이동을 원하는 항목마다 전부 이벤트 설정해줘야 하는데요..  제가 할려고 했던건 어떻게 함수 하나로 해결할 수 없을까 하는거였죠.

안되나요? -_->
3  COMMENTS
  • Profile
    오진욱 2002.01.29 04:11
    감사~~~~~ (__)
  • Profile
    배건환 2002.01.29 03:46

    procedure TForm1.Edit4Change(Sender: TObject);
    begin
      if (Sender is TEdit) then
         if Length(TEdit(Sender).Text) = TEdit(Sender).MaxLength then
             다음으로 포커스를 넘기는 소스(알고계시지요..*^^*)==>SelectNext
    end;


    각 Edit박스에 MaxLength속성을 설정해주면 되겠지요...

    이런게 하고, 모든 Edit에 등록Edit4의 Change속성을 선택하면 됩니다.
    위의 코딩으로 다 끝나겠지요. 즐코하세요

  • Profile
    이낭하 2002.01.29 03:39
    님이 원하시는 거 대충은 이해가 가는데 이벤트로 설정 해주셔야 됩니다.
    왜냐면.. 결국 님이 원하시는 건 key 에 관련된 이벤트를 결국 처리하는 거니까여...

    일케 하심 어떨까여?
    이벤트는 설정하되, 그 이벤트에 관련된 프로시저를 따로 맹글어서 쓰시면여..

    예)
    edit1.OnKeyPress := RangeFunc;
    edit1.tag := MaxL1;

    edit2.OnKeyPress := RangeFunc;
    edit2.tag := MaxL2;
        ~~~~

    이렇게 하시고

    procedure TForm1.RangeFunc(Sender: TObject; var Key: Char);
    var
        EditLength, EditMax : integer;
    begin
        EditLength := Length(TEdit(Sender).Text + Key);
        EditMax := TEdit(Sender).Tag;
        if  (EditLength > EditMax) then
            SelectNext(Sender As TWinControl, True, True); // 다음 콘트롤로 포커스 옮겨주는건데여.. 아시죠? 탭 오더 따라 다니는 거...
    end;

    제가 직접 해보지 않고 걍 해본거라... 잘 될지 모르겠네여...

    도움 되셨으면 합니다..

    열흘나비였슴당..