Q&A

  • 포커스 유지된 상태에서 바로옆의 콤포넌트 제어하기.
안녕하세요. 까마귀입니다.



질문이 좀 이상한데요. 뭐라고 해야 할지 난감해서요.

제가 하려고 하는것은요.

한 콤포넌트에 포커스가 가 있는 상태에서 바로 다음 콤포넌트의 값을 제어하려고 합니다.

바로 다음 콤포넌트라는 것은 TabOrder상에서 다음을 이야기합니다.

단순히 한개의 콤포넌트를 그렇게 하면 그냥 그 콤포넌트의 이름을 적어서 처리하면 되지만,

이런게 다수개가 있어서 일일이 다 이벤트를 적어주려니 너무 무식한거 같아서요.

구체적으로 적어보면...



MED_HHire, MED_HHireName 두개의 TMaskEdit 콤포넌트.

HHire : 코드번호 표시.

HHireName : 코드명 표시.

코드명에 변화가 생기면 즉, 수정을 가하면 그 순간에 코드번호가 지워지게 했습니다.

OnChange Event에서 처리를 했습니다.



procedure TFRM_HM0001W1.MED_HHireNameChange(Sender: TObject);

begin

if TMaskEdit(Sender).Modified then MED_HHire.Clear;

end;



이런 작업이 한개만 있으면 위처럼 그냥 이름을 적어주고 지우는 작업을 하면 되는데요,

이런 똑같은 작업이 10개가 넘으니까 한 Event에서 처리를 해주고 싶습니다.

코드명이 표시되는 콤포넌트는 TMaskEdit(Sender) 라고 하면 되니까 공통사용 가능한데요,

코드번호가 표시되는 콤포넌트를 어떻게 해야 공통으로 사용을 할수가 있을지 몰라서요.



머리를 굴려보니까, 코드명 바로 다음 콤포넌트가 코드번호 콤포넌트니까 TabOrder등을

이용해서 처리하면 될것 같은데요.

여기에서 막히네요. 어떻게 해야 할지...



아시는 분 있으시면 좀 알려주세요.



조건은 코드명 콤포넌트에 포커스가 있는 상태에서 수정이 발생하면 포커스는 유지하고

있는 상태에서 바로 다음 콤포넌트인 코드번호 콤포넌트의 값을 삭제하는 겁니다.





목이 많이 타네요. 해결이 되면 시원한 우물이 될것 같습니다.

많은 도움 부탁드립니다.







위대한 단군혼이 살아있는 나라.... 대한민국.

1  COMMENTS
  • Profile
    parkisu 2000.11.10 07:56
    약간의 편법을 쓰시면 어떨까요?

    코드명을 표시하는 컴포넌트의 이름을 코드를 표시하는 컴포넌트의 이름에 'Name'을 붙이구요.



    procedure TFRM_HM0001W1.MED_HHireNameChange(Sender: TObject);

    var

    NextMask:TMaskEdit;

    begin

    if TMaskEdit(Sender).Modified then begin

    NextMask:= FindComponent(TMaskEdit(Sender).Name+'Name') as TMaskEdit;

    if NextMask<>nil then NextMask.Clear;

    end;

    end;





    까마귀 wrote:

    > 안녕하세요. 까마귀입니다.

    >

    > 질문이 좀 이상한데요. 뭐라고 해야 할지 난감해서요.

    > 제가 하려고 하는것은요.

    > 한 콤포넌트에 포커스가 가 있는 상태에서 바로 다음 콤포넌트의 값을 제어하려고 합니다.

    > 바로 다음 콤포넌트라는 것은 TabOrder상에서 다음을 이야기합니다.

    > 단순히 한개의 콤포넌트를 그렇게 하면 그냥 그 콤포넌트의 이름을 적어서 처리하면 되지만,

    > 이런게 다수개가 있어서 일일이 다 이벤트를 적어주려니 너무 무식한거 같아서요.

    > 구체적으로 적어보면...

    >

    > MED_HHire, MED_HHireName 두개의 TMaskEdit 콤포넌트.

    > HHire : 코드번호 표시.

    > HHireName : 코드명 표시.

    > 코드명에 변화가 생기면 즉, 수정을 가하면 그 순간에 코드번호가 지워지게 했습니다.

    > OnChange Event에서 처리를 했습니다.

    >

    > procedure TFRM_HM0001W1.MED_HHireNameChange(Sender: TObject);

    > begin

    > if TMaskEdit(Sender).Modified then MED_HHire.Clear;

    > end;

    >

    > 이런 작업이 한개만 있으면 위처럼 그냥 이름을 적어주고 지우는 작업을 하면 되는데요,

    > 이런 똑같은 작업이 10개가 넘으니까 한 Event에서 처리를 해주고 싶습니다.

    > 코드명이 표시되는 콤포넌트는 TMaskEdit(Sender) 라고 하면 되니까 공통사용 가능한데요,

    > 코드번호가 표시되는 콤포넌트를 어떻게 해야 공통으로 사용을 할수가 있을지 몰라서요.

    >

    > 머리를 굴려보니까, 코드명 바로 다음 콤포넌트가 코드번호 콤포넌트니까 TabOrder등을

    > 이용해서 처리하면 될것 같은데요.

    > 여기에서 막히네요. 어떻게 해야 할지...

    >

    > 아시는 분 있으시면 좀 알려주세요.

    >

    > 조건은 코드명 콤포넌트에 포커스가 있는 상태에서 수정이 발생하면 포커스는 유지하고

    > 있는 상태에서 바로 다음 콤포넌트인 코드번호 콤포넌트의 값을 삭제하는 겁니다.

    >

    >

    > 목이 많이 타네요. 해결이 되면 시원한 우물이 될것 같습니다.

    > 많은 도움 부탁드립니다.

    >

    >

    >

    > 위대한 단군혼이 살아있는 나라.... 대한민국.