Q&A

  • :포커스이동에 관해서
안녕하세요... 델파이를 이제 막 시작했는데여.... 넘 어려운 과제를 받았어요..^^;;

에디트박스를 엔터키나 화살표로 이동을 해야하는데... 이 질문은 밑에서 참조를 했거든여... 근데 문제는 if문이나 또는 for문을 쓰지 않고 하는거에요....

과제인즉 '에디트박스가 20개있으면 20개를 다 코딩할거냐'라고 하시면서... 다른 방법이 있다고 하시거든요.... 그걸 알아 보래여... 어케 해야할까요...



아직 델파이에 '델'자두 재대로 모르는 저에게 희망을 주세요...

3  COMMENTS
  • Profile
    델피언 2000.09.22 10:46
    늦어서 죄송합니다.

    제 메일 서버가 정상작동을 안해서리..

    시간이 없어서 생각난는 데로 적습니다.

    음~

    TWinControl.SelectNext 이함수는여..



    procedure SelectNext(CurControl: TWinControl; GoForward, CheckTabStop: Boolean);



    CurControl : 현재 포커스를 받고 있는 것

    GoForward : True이면 다음 컴포넌트로 이동, False이면 이전 컴포넌트로 이동

    CheckTabStop : TabStop 이 True인것 체크





    이렇게 정의 되어 있습니다.

    그런데여..여기서 버튼을 쓰실때에는 주위 점이 있습니다.

    그것들중 하나가여..TWinControl로부터 상속받은 즉 포커스를 받을수 있는 컴포넌트만 해당 사항이 되는거지여..

    예로 TButton은 TWinControl로 부터 상속을 받기 때문에 가능하지여..

    하지만 TSpeedButton 은 TGraphicControl로 부터 상속받는 포커스가 없는 컴포넌트 이므로 포커스를 받을수가 없습니다.



    그리고 button은 Enter key 의 수동으로 OnClick에다가 주셔야 합니다.

    그리고 button에서 방향키는 제대로 작동합니다.



    행복하세요..





    박종덕 wrote:

    > 안녕하세요... 델파이를 이제 막 시작했는데여.... 넘 어려운 과제를 받았어요..^^;;

    > 에디트박스를 엔터키나 화살표로 이동을 해야하는데... 이 질문은 밑에서 참조를 했거든여... 근데 문제는 if문이나 또는 for문을 쓰지 않고 하는거에요....

    > 과제인즉 '에디트박스가 20개있으면 20개를 다 코딩할거냐'라고 하시면서... 다른 방법이 있다고 하시거든요.... 그걸 알아 보래여... 어케 해야할까요...

    >

    > 아직 델파이에 '델'자두 재대로 모르는 저에게 희망을 주세요...

  • Profile
    델피언 2000.09.21 20:26
    안녕하세요..델피언입니다.

    말씀하신 문제는 아주 간단히 해결 될수 있습니다.



    우선 form의 Keypreview 를 true로 설정하시구여

    form의 keydown이나 keypress에 코딩을 해주면 됩니다.

    일일이 edit에 하게 되면 나중에 관리가 힘들겠네여..



    다음 코드는 keydown에 넣은 내용입니다.



    case key of

    13, //enter key

    vk_down : SelectNext(ActiveControl as TWinControl, true, true); //down key

    vk_up : SelectNext(ActiveControl as TWinControl, false, true); // up key

    end;

    key := 0;

    이렇게 하시면 잘 될겁니다.

    그리고 이런것도 귀찮으시면 가장 좋은 방법은

    이참에 자신만의 Tedit, Tmaskedit를 만들어 보세여..

    즐코~





    박종덕 wrote:

    > 안녕하세요... 델파이를 이제 막 시작했는데여.... 넘 어려운 과제를 받았어요..^^;;

    > 에디트박스를 엔터키나 화살표로 이동을 해야하는데... 이 질문은 밑에서 참조를 했거든여... 근데 문제는 if문이나 또는 for문을 쓰지 않고 하는거에요....

    > 과제인즉 '에디트박스가 20개있으면 20개를 다 코딩할거냐'라고 하시면서... 다른 방법이 있다고 하시거든요.... 그걸 알아 보래여... 어케 해야할까요...

    >

    > 아직 델파이에 '델'자두 재대로 모르는 저에게 희망을 주세요...

  • Profile
    김재억 2000.09.21 20:04
    박종덕 wrote:

    > 안녕하세요... 델파이를 이제 막 시작했는데여.... 넘 어려운 과제를 받았어요..^^;;

    > 에디트박스를 엔터키나 화살표로 이동을 해야하는데... 이 질문은 밑에서 참조를 했거든여... 근데 문제는 if문이나 또는 for문을 쓰지 않고 하는거에요....

    > 과제인즉 '에디트박스가 20개있으면 20개를 다 코딩할거냐'라고 하시면서... 다른 방법이 있다고 하시거든요.... 그걸 알아 보래여... 어케 해야할까요...

    >

    > 아직 델파이에 '델'자두 재대로 모르는 저에게 희망을 주세요...



    Application.OnMessage 함수를 사용하세요.

    vk_LEFT, vk_Right등의 이벤트를 받아내어서.... TEdit인가를 알아내어서..

    작업하시면 될듯하네요.

    델파이 5 부터는 이것 자체도 컴포넌트로 제공해주는것 같은데..



    허걱... 자세한 소스를 알려들라구요?

    지송... 제가 지금 델파이가 없는 컴에 있어서리..