Q&A

  • 포커스에대한 다시 질문입니다.
월요일 이제 새 주말이 시작됐습니다. 월욜부터 이케 질문만 또 올립니다 ㅡ.ㅡ

포커스에 대한 질문으로 김경록님께서 답변해주셨는데 물론 onEenter, onExit

로 하면 가능할것 같습니다. 하지만 만일 에디트박스가 50개라면 50번 써야 되

지않습니까? 그래서 코딩수를 줄이고 싶어서 메시지 가로채서 하는 방법이 없

는지 질문올립니다. 전 충분히 가능하리라 봅니다. 제가 방법을 몰라서 그렇지

ㅠ.ㅠ 그럼 즐코들 하시구요 시간나면 답변좀 부탁드립니다 ^^
3  COMMENTS
  • Profile
    데빠이 2002.03.18 20:07
    저도 많이는 모르나, 그래도 참고가 되길 바랍니다...
    에디트박스의 이벤트에...OnKeyPress에 가셔서...
    if key = #13 then
    begin
       key := #0;
       selectnext(sender as twincontrol, true, true);
    end;
    를 작성하시구요...(엔터를 치면 다음 컴폰으로 포커스 이동...)
    한가지더...이것을 쓰시면...이 이벤트를 연결해놓은 컴폰만 먹거든요...
    에디트박스의 Properties -> TabOrder의 숫자에 맞춰서 순차적으로
    적용이 됩니다...그니까, 넘어가고자 하는 컴폰의 차례를 여기서 써주시고
    실행하시면...해당부분으로 포커스가 넘어갈것입니다...

    제가 제대로 적은건가요? 짐...저도 먼가가 안돼서 정신이 없는지라...
    질문하신게 이게 맞나요? 아님, 어카지? 도망가야지... =333
    그럼, 즐건 하루되세요...


  • Profile
    별볼일없는 2002.03.19 01:30


    답변중 빠진것이 있는데
    Form 에 보면 keypreview 를 True로 설정하시고 해야합니다.
    이때 옮겨지는 순서는 Edit 속정중 taborder순서대로 옮겨집니다.
    그리고 tabstop 을 False로 하시면 해당 Edit는 뛰어 넘습니다.
    그럼
    지나가다...

  • Profile
    윤창준 2002.03.18 18:43
    안녕하세요
    저두 초보입니다만..
    ONEnter, OnExit 의 인자가 하나 있습니다.
    Sender지요.
    이걸 적절하게 이용하시면 됩니다.

    예를 들면
    procedure TForm1.Edit1Exit(Sender: TObject);
    begin
        if (Sender as Tedit).Text = '' then
            (sender as Tedit).color := clred
        else
            (sender as Tedit).color := clblue;
    end;

    이것은 edit1에 내용이 있으면 포커스를 잃을때 색상을 빨강색으로 아님 청색으로 바뀌는 예 입니다.

    그리고 as연산자 와 is 연산자를 적절하게 사용하시면
    원하는 답이 있을겁니다.
    헬프를 참조 하시던지 아님 검색해 보시면 내용이 있습니다.

    그럼 즐델 하세요. ^^