오늘 오전에 질문해서
첫번째 질문에 답해주신대로
if key = #27 then activecontrol := edt_sin_cdno
해 봤는데 안되어서 이렇게 ....
선배님들 좀 도와 주세요...
두번째 질문도 꼭.......
1. 첫번째 질문
패널사이로 tab키 대신에 enter키로 포커스 이동시킬수 있는지요..잘 안되더라구요..
정확히 말하면
두개의 패널이 있는데
한쪽 패널에 있는 editBox-->Button 으로 포커스이동한다음 방향키로 다른 패널에 있는 editBox 또는 Button 으로 포커스를 이동하고 싶은데..
if key = #27 then begin
groupbox2.TabOrder:=0;
edt_sin_cdno.SetFocus;
end;
이렇게 해줘도 안되더라구요...그런데
패널을 지우고 하니까 잘 되던데... 으 괴로운것....
2.두번째 질문
SQL문을 DB로 보낸다음 메모나 에디트 박스에서 입력한 DATA를 DB_Grid에 뿌리는데 DB_Grid에 ♪같은 마크가 같이 나타나는데 이걸 안나타 나게 할수는 없는지요..
(물론 select 후에는 안나타나고요...) 으 미치것는 것...
자비로운 이해심으로 가르쳐 주십시요....(*^^*)
사오정 이경원 드림
Enter키로 포커스이동을 할 수 있습니다. 근데 #27은 Esc키인데요...
Enter, Tab, Esc, 방향키와 같은 다이얼로그키들은 대부분 컨트롤에서 키보드이벤트
를 잡을 수가 없는 경우가 많습니다. 특히 버튼같은 경우는 Enter키를 잡아챌수 없어
Enter키로 포커스전환을 하는데 상당히 애를 먹이죠. 키이벤트에서 이러한 키를 볼수
있도록하려면 이러한 키를 처리할 수 있도록 윈도우프로시져를 새로 정의해 주어야
합니다. 컴포넌트를 새로 만드는 것이 가장 편하긴 하지만 코딩상으로도 바꿀수 있습니
다. 아래와 같이 시스템다이얼로그키 메세지(WM_GETDLGCODE)에 반응하는 윈도우 프로시
져를 하나 만들고 키이벤트를 볼수 있도록 해주시면 됩니다. 그리고 컨트롤의 윈도우
프로시져를 새로 만든것으로 설정하시면 됩니다.
도움말에서 WM_GETDLGCODE를 찾아보시면 상세한 설명을 보실 수 있습니다.
type
TForm1 = class(TForm)
...
Button1: TButton; // 판넬안에 있는 버튼이라고 가정하였습니다.
private
...
FWndMethod: TWndMethod;
procedure NewWindowProc(var Message: TMessage);
...
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
FWndMethod := Button1.WindowProc;
Button1.WindowProc := NewWindowProc;
end;
procedure TForm1.NewWindowProc(var Message: TMessage);
begin
if Message.Msg = WM_GETDLGCODE then
Message.Result := DLGC_WANTALLKEYS
else
FWndMethod(Message);
end;
// Button1에서 엔터키를 누르면 에디트(edt_sin_cdno)로 포커스가 이동합니다.
procedure TForm1.Button1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = vk_Return then
edt_sin_cdno.SetFocus;
end;
^^ 항상 즐코하세요.
이경원 wrote:
> 오늘 오전에 질문해서
> 첫번째 질문에 답해주신대로
> if key = #27 then activecontrol := edt_sin_cdno
> 해 봤는데 안되어서 이렇게 ....
> 선배님들 좀 도와 주세요...
> 두번째 질문도 꼭.......
>
>
> 1. 첫번째 질문
>
> 패널사이로 tab키 대신에 enter키로 포커스 이동시킬수 있는지요..잘 안되더라구요..
> 정확히 말하면
> 두개의 패널이 있는데
> 한쪽 패널에 있는 editBox-->Button 으로 포커스이동한다음 방향키로 다른 패널에 있는 editBox 또는 Button 으로 포커스를 이동하고 싶은데..
>
> if key = #27 then begin
> groupbox2.TabOrder:=0;
> edt_sin_cdno.SetFocus;
> end;
>
> 이렇게 해줘도 안되더라구요...그런데
> 패널을 지우고 하니까 잘 되던데... 으 괴로운것....
>
> 2.두번째 질문
>
> SQL문을 DB로 보낸다음 메모나 에디트 박스에서 입력한 DATA를 DB_Grid에 뿌리는데 DB_Grid에 ♪같은 마크가 같이 나타나는데 이걸 안나타 나게 할수는 없는지요..
> (물론 select 후에는 안나타나고요...) 으 미치것는 것...
>
> 자비로운 이해심으로 가르쳐 주십시요....(*^^*)
>
> 사오정 이경원 드림
>
>
>