Q&A

  • findnextcontrol에 대해
델파이에 보면 findnextcontrol이 있는데..



예를 들어 Edit이 여러개 있는데..

물론 tab key를 치면 다음 edit으로 넘어가는데...

enter key를 쳤을때도 다음 edit으로 넘어가게 하고싶은데요..



findnextcontrol이 아닌가 싶은데..

delphi help에는 이게 없네요.. 아시는분 답장부탁합니다.



3  COMMENTS
  • Profile
    blackjewel 2001.06.22 02:43
    저같은 초보에게두 해뜰날이...^^;



    원하시는게 enter key를 쳤을때 다음 editBox로 넘어가는 거라면



    TabOrder를 이용해보세요.



    각각의 editBox에 TabOrder를 차례로 (focus가 가는 순서대로) 주시구여



    코드에



    SelectNext(Sender as tWinControl, True, True);



    SelectNext : 다음 TabOrder로 넘어가구여

    첫번째 True는 TabOrder가 오름차순 순서로 이동하구여 내림차순을 원하면 False

    두번째 True는 TabStop가 True인것만 수행하라는 뜻이랍니다..



    도움이 되면 좋으련만...





    김완희 wrote:

    > 델파이에 보면 findnextcontrol이 있는데..

    >

    > 예를 들어 Edit이 여러개 있는데..

    > 물론 tab key를 치면 다음 edit으로 넘어가는데...

    > enter key를 쳤을때도 다음 edit으로 넘어가게 하고싶은데요..

    >

    > findnextcontrol이 아닌가 싶은데..

    > delphi help에는 이게 없네요.. 아시는분 답장부탁합니다.

    >

  • Profile
    똘망울 2001.08.09 03:07
    정석입니다.



    procedure TfrmHEATER.FormKeyDown(Sender: TObject; var Key: Word;

    Shift: TShiftState); // 폼의 이벤트에 넣어도 상관없겠죠..

    begin

    If key =13 then

    Begin

    If Sender.Classtype = TEdit Then

    Begin

    FindNextControl( TEdit(Sender),True,False,False);

    End; // 파라미터는 Help에 영어로 써있습니다.

    Key := 0;

    End;

    end;

  • Profile
    김영대 1999.10.15 02:25
    김완희 wrote:

    > 델파이에 보면 findnextcontrol이 있는데..

    >

    > 예를 들어 Edit이 여러개 있는데..

    > 물론 tab key를 치면 다음 edit으로 넘어가는데...

    > enter key를 쳤을때도 다음 edit으로 넘어가게 하고싶은데요..

    >

    > findnextcontrol이 아닌가 싶은데..

    > delphi help에는 이게 없네요.. 아시는분 답장부탁합니다.



    unit Unit1;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    StdCtrls, grids, DBGrids, Db, DBTables;



    type

    TForm1 = class(TForm)

    Edit1: TEdit;

    CheckBox1: TCheckBox;

    Edit2: TEdit;

    Edit3: TEdit;

    Table1: TTable;

    DataSource1: TDataSource;

    DBGrid1: TDBGrid;

    procedure FormKeyPress(Sender: TObject; var Key: Char);

    procedure DBGrid1KeyDown(Sender: TObject; var Key: Word;

    Shift: TShiftState);

    private

    { Private declarations }

    public

    { Public declarations }

    end;



    var

    Form1: TForm1;



    implementation

    {$R *.DFM}



    // Form1의 KeyPreview 를 True로 설정해 놓고 테스트

    procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);

    begin

    if Key = #13 then

    begin

    if not ((ActiveControl is TCustomGrid) or

    (ActiveControl is TCustomMemo)) then

    begin

    Key := #0;

    PostMessage(Handle, wm_NextDlgCtl, 0, 0);

    end

    else if (ActiveControl is TCustomGrid) then

    Key := #9;

    end;

    end;



    procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;

    Shift: TShiftState);

    begin

    if Key = vk_Return then

    begin

    if DBGrid1.SelectedIndex < Pred(DBGrid1.FieldCount) then

    DBGrid1.SelectedIndex := DBGrid1.SelectedIndex + 1 // 다음 컬럼

    else

    begin // 맨 마지막 컬럼이면 다음 레코드 첫번째 컬럼으로

    DBGrid1.SelectedIndex := 0;

    DBGrid1.Perform( wm_KeyDown, vk_Down, 0 );

    end;

    end;

    end;



    end.