Q&A

  • Tab Order에 관한 질문
Form의 KeyPress 이벤트에 Enter를 치면 다음 Control로 넘어가도록

다음과 같이 넣었습니다.

if Key = #13 then
begin
{
    SelectNext(ActiveControl as TControl, True, True);
    Key := #0;
end;

그런데 보통 컴포넌트들은 잘 먹는데..

지금 인터넷에서 다운받은 컴포넌트가 SelectNext가 안먹네여..

그컴포넌트는 TCustomEdit에서 상속받은 Edit 컴포넌트인데...

그래서
       ShowMessage((ActiveControl as TWInControl).Name ) 으로
  잘가는지 알아보는데 Name이 Null값으로 나와여..  아마 여기서
  Pointer를 읽어버리는거 같은데..

  Name대신 ClassName   으로 하면 잘나오는데... 도대체 모가 문젠지
모르겠네여..

  이쪽에 정통하신분께서는 어떤걸 체크해봐야 되는지 답변부탁드립니다.

즐프하세여~~

1  COMMENTS
  • Profile
    장태원 2003.04.14 20:00
    이유는 모르겠고.. FOCUS 자체가 다른 CONTROL 로 넘어가는건 아닌지..
    ㅡㅡ;
    그거 안되면 이렇게 해보셈.
    이건 모든 컴퍼넌트를 이동하므로..
    TEDIT 인지만 체크해주고 하면 될듯하네용...그럼..ㅅㄱ

    procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);
    var  chk :integer;
    begin
            if (key=#13) then
                    begin
                    chk := TEdit(Sender).ComponentIndex;
                    if chk= self.ComponentCount-1 then chk:=0
                    else inc(chk);

                    TEdit(Components[chk]).setfocus;
                    end;
    end;