Q&A

  • [급질문]SetFocus에 관한 질문! (부탁합니다!)
예를들어, 폼상에 Edit1.text, Edit2.text, Edit3.text......가 20여개 있고요,

각각의 Edit.text에 코드번호를 입력하고 빠져나올때 ListBox상에 코드에 해당하는 품목이 나열되고 이를선택하고 ListBox를 없앤 후,메인폼의 다음 Edit.text로 Focus를 이동하는 기능이 필요합니다. 어떻게 구현하나요?



[요약] 폼상의 Edit항목에서 Exit 할 때 ListBox를 참조하고 포커스를 제자리 혹은 그 다음항목으로 돌리는 방법!



아래는 제가 하다가 막힌 코드소스입니다.



procedure TFrmDtMg.ListBox1DblClick(Sender: TObject);//리스트박스에서 더블클릭!

var i:integer;

begin

for i:=0 to ComponentCount-1 do begin

if Components[i].name=vComponent then

//vComponent는 앞서 "TEdit(Sender).name"를 저장한 스트링변수임!



TEdit(Components[i]).text:=Trim(Copy(ListBox1.Items ListBox1 ItemIndex],3,2))

// 리스트박스에서 선택한 값을 메인폼의 TEdit컴포넌트에돌린다



ListBox1.Visible:=False;

// 리스트박스를 없애고



(??)TEdit(Components[i+1]).SetFocus;

// 포커스를 다음 컴포넌트에 맞춘다(오류발생!)



맨마지막줄(??)이 문제가 되는 것 같은데, 올바른 방법을 알려주시면 고맙겠습니다.



1  COMMENTS
  • Profile
    김주석 1999.12.06 00:03
    procedure Tfrm_021.edt_idno_1_p1KeyUp(Sender: TObject; var Key: Word;

    Shift: TShiftState);

    begin

    if LENGTH(edt_idno_1_p1.Text) = 6 then

    SelectNext((Sender as TWincontrol), True ,True ) ;

    end;



    'SelectNext' 이 구문앞에 두고 F1 키를 눌러보세요..

    그리고 컴포넌트의 OnExit이벤트에 무언가를 코딩하는 것은

    원하지 않는 결과가 나오기 쉽지 않을까 싶습니다.

    포커스를 잃었을 때 어떤일을 해라보다는 다른 방법을 찾으

    시는 것이 좋을 듯합니다.