Q&A

  • 폼상속을 받아 엔터키를 칠때 탭기능을 하도록 처리하려는데...
아래와 같은 폼이벤트를 상속받아

엔터키를 치면 TAB기능과같이 처리를 하려하는데,

'ABSTRACT ERROR'가 자꾸납니다.

뭘 잘못해 에러가 나는건지요?


procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var i , j, temp : integer ;
begin
  // Retuen KEY  : Move Next Field //
  if key = VK_Return then
  begin
    for i := 0 to ComponentCount - 1 do
    begin
      if TWincontrol(Components[i]).focused = true then
      begin
          if Components[i] is TMemo then
          else
             begin
               SelectNext(TWincontrol(Components[i]),true,true);
               break;
             end;
      end;
     end;
  end;
end;
2  COMMENTS
  • Profile
    하얀까마귀 2004.07.28 00:39
    안녕하세요 하얀까마귀 입니다.

    실행해보진 않아서 잘모르겠는데 소스를 보니 왠지 약간 꺼림직하군요.

        for i := 0 to ComponentCount - 1 do
        begin
          if TWincontrol(Components[i]).focused = true then

    이부분에서..  Components 에 들어가는건 폼에 있는 모든 콤포넌트죠.
    TWinControl 이라는건 TComponent의 자식이구요. ( 정확히는 할배인가 ㅎㅎ)
    따라서 폼안에 TWincontrol의 자손이 아닌 콤포넌트가 있다면 에러가 생길수 있겠네요. 대표적인게 TGraphicControl의 자손들일것 같군요.
    뭐.. 이미지라던지... 라벨이라던지...

    따라서 우선 이게 맞는지 부터 첵크를 해야겠죠?
    for i := 0 to Compoenetcount -1 do
    begin
      if Components[i] is TWinComtrol then
    begin
      ......
    end
    첵크한번 넣어주시는게 좋을듯 하네요
    아마두 넣어주심 에러안생길껍니다. 그럼..



  • Profile
    델파이초짜 2004.07.28 00:56
    한수배우고 갑니다.

    탈 초보를 위해 공부열심히 해야겠네요.

    다시한번 감사드립니다.