안녕하세요~! *^^* 선선한(?) 아침이죠~~ *^^*
질문이여...
editbox에서 입력을 했거든요... 입력한것이 테이블에 생성되게
만들었구여.. 생성된 테이블을 dbgrid로 보이게 할려구요.. 보이게 까지는 했는데..
DBGrid의 커서가(커서라고 해야하나..??) 처음으로 오던데..
그냥 바로 입력된부분에 커서(?)가 가 있으면 확인하기 쉽게할려구여...
인서트가 됐는지 안됐는지 알아볼려면 찾아야 하니까..
입력한 셀에 선택 또는 반전(?)으로 표시되게 하는 방법은 없나요..??
(이해가되실려나.. 이 표현이 저의 최상의 표현인데...)
입력을 하고 엔터를 치면 처음셀로 올라가거든요...
입력된 셀에 멈추게 할려면...
부탁드립니다.. 혹시 질문이 이해가 안가시면 멜 보내주세요... *^^*
아주 쉽게 설명해주세요~ 문법도 부탁드리구요...
> 안녕하세요~! *^^* 선선한(?) 아침이죠~~ *^^*
>
> 질문이여...
>
> editbox에서 입력을 했거든요... 입력한것이 테이블에 생성되게
>
> 만들었구여.. 생성된 테이블을 dbgrid로 보이게 할려구요.. 보이게 까지는 했는데..
>
> DBGrid의 커서가(커서라고 해야하나..??) 처음으로 오던데..
>
> 그냥 바로 입력된부분에 커서(?)가 가 있으면 확인하기 쉽게할려구여...
>
> 인서트가 됐는지 안됐는지 알아볼려면 찾아야 하니까..
state 라고 하는 메소드가 있습니다. 그것으로도 insert 상태인지 edit상태인지 알수 있습니다.(dsinsert, dsedit, dsbrowser, .......)
>
> 입력한 셀에 선택 또는 반전(?)으로 표시되게 하는 방법은 없나요..??
참 이것땜시 질문을 마니도 남기셨더군요.......
답변도 한거 보긴 했는데......음냐...
지금의 소스를 보시기 바랍니다.
DBGrid1DrawDataCell이벤트에다가 이러한 구문을 넣어 보셔요..
그러면 빨간색의 음영이 생기는데.... 다른 색갈로 할라믄
Brush.Color := clRed; 이 부분을 바꾸어 주셔요.
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
begin
//선택한셀의 색변화
If gdFocused in State then
with (Sender as TDBGrid).Canvas do begin
Brush.Color := clRed;
FillRect(Rect);
TextOut(Rect.Left, Rect.Top, Field.AsString);
end;
end;
>
> (이해가되실려나.. 이 표현이 저의 최상의 표현인데...)
>
> 입력을 하고 엔터를 치면 처음셀로 올라가거든요...
왜 올라 갈까요... 혹시 인덱스에 어떤 것을 하지는 않았을까요...
그럼 어떻게 해서 그렇게 된지는 모르겠지만... 만드는 수밖에 없겠군요..
DBGrid1DrawDataCell이벤트에 다음과 같은 값을 쳐서 넣습니다.
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
var
rowheight, row : integer ;
begin
if gdFocused in State then
begin
rowheight := Rect.Bottom - Rect.Top ;
row := (Rect.top div rowHeight) - 1 ;
end ;
end;
이렇게 되면 row 라는 값에는 현재의 셀이 위치한 값을 가져올수 있지요..
그렇다면 table1의 이벤트중 onafterpost에서 table1.moveby(row);
이 구문을 쳐도 그쪽으로 이동을 하것지요.....
>
> 입력된 셀에 멈추게 할려면...
>
> 부탁드립니다.. 혹시 질문이 이해가 안가시면 멜 보내주세요... *^^*
>
> 아주 쉽게 설명해주세요~ 문법도 부탁드리구요...
>
행복하셔요.... 규춘올림.