Q&A

  • CheckBox stringgrid에 넣기에서 문제에 대한 질문 입니다.
안녕하세요
수고 많습니다.
문제가 해결 되지 않아서 이렇게 질문 합니다.
아래 글은 제가 작성한것은 아닙니다.
그러나 문제점 내용이 같이 때문에 그대로 올립니다.---예전 질답 미 해결---
내용을 추가을 한다면
그리드에 스크룰바가 생성 되지 않으면 아래와 같은 문제가 생기지 않습니다.
그러나 수직 스크룰바가 생성 되면 아래와 같은 문제가 생성 됩니다.

많은 답변을 부탁 드립니다.
감사 합니다.

----질문 요지----

체크박스를 동적으로 생성하다 보니....
스트링 그리드에 0 칼럼, 0 로우에 체크박스가 원하지도 않은 자리에 체크박스가 생성이
됩니다.

-------------------------------------------------------
ㅁCheckbox | ColumnHeader1 | ColumnName2 | ColumnName3
_______________________________________________________
                                          ㅁChecked
                                          ㅁChecked
                                          ㅁChecked

위와 같이 맨 왼쪽에 체크박스가 생성이고 원하는 체크박스가 생성이 됩니다.
왼쪽 맨 끝에 것을 없애려고 하는데 잘 안없어집니다...

제가 생성한 코딩은
Q & A를 참고로 해서 코딩을 했습니다..

for i := 1 to ag_main.RecordCount - 1 do
begin
    OnKeyUp    := CheckBoxKeyUp;   //--> CheckBox이벤트 연결부분
    OnMouseUp  := CheckBoxMouseUp;
    Parent     := ag_main;
    BoundsRect := ag_main.CellRect(9, i);
    Width      := ag_main.ColWidths[9];
    Height     := ag_main.RowHeights[9];
    Checked    := True;
    Caption    := 'Checked';
end;

procedure TMain.CheckBoxMouseUp(Sender: TObject; Button:
  TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  i : Integer;
begin
   with TCheckBox(Sender) do
        Checked := not Checked;

   for i := 1 to ag_main.rowcount-1  do
   begin
      with TCheckBox(ag_main.Objects[9, i]) do
      begin
         if Checked then Caption := 'Checked' else
                         Caption := '';
      end;
   end;

end;

procedure TMain.CheckBoxKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  i : Integer;
begin
   if Key = VK_SPACE then
   with TCheckBox(Sender) do

      Checked := not Checked;

   for i := 1 to ag_main.rowcount-1  do
   begin
      with TCheckBox(ag_main.Objects[9, i]) do
      begin
         if checked then Caption := 'Checked' else
                         Caption := '';
      end;
   end;
end;
4  COMMENTS
  • Profile
    Galaxy 2003.09.05 22:32
    그림을 올립니다.
    그럼 수고 하세요
  • Profile
    델을시작하며 2003.09.09 21:35
    이런...글올리구 얼마 안가서 다른 문제점이 생겨서 테스트용

    프로그램을 하나 만들었습니다. 그랬더니...ㅠㅠ

    님에게 발생한 현상은,

    화면에 출력되지 않는 셀의 좌표가 StringGrid.CellRect.Top = 0 이며,

    따라서 CheckBox.Top = 0 이 설정되어서 그런듯 합니다.

    저는 Visible을 False로 처리하였습니다
  • Profile
    델을시작하며 2003.09.06 21:36
    저도 오늘 유사한 문제로... ^^

    작성자 : 이중철
    Subject : 테스트를 안하고 올렸더니 문제가 있었네요 다시 올려요

    SG -> TStringGrid name
    CB -> TCheckBox name

    <내용정리>
    TStringGrid의 화면출력에 맞게 TCheckBox의 출력을 조정합니다.

    # CheckBox동적 생성부분에 추가,
    CB.top := SG.CellRect(Col,Row).Top;
    CB.Left := SG.CellRect(Col,Row).Left;

    # SG의 TopLeftChanged이벤트에 추가,
    j := CB가 있는 Col;
    For i:=0 to SG.RowCount-1 do
      SGdrawCell(SG, j, i, SG.CellRect(j,i), [gdSelected]);

    # SG의 DrawCell이벤트에 추가,
    if (TStringGrid(Sender).Object[ACol,ARow] is TCheckBox) then begin
      With TCheckBox(TStringGrid(Sender).Object[ACol,ARow]) do begin
          top := Rect.Top;
          Left := Rect.Left;
          Visible := True;
        end;
      end;

    제가 정리해서 올린것이에요...
    틀린부분이 있으면 창피한데...
    쩝~ 암튼 저는 이렇게해서 오늘 문제를 해결했습니다.
  • Profile
    Galaxy 2003.09.15 04:06
    정말 감사 드립니다.
    • 임재훈
    • 2003.09.05 23:30
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 정경철
      2003.09.06 02:10
      이런경우도 있습니다. DBText로 연결 해서 Table이 Query로 오픈 한 경우는 그렇게 될 수있습니다. Query...
    • 성더기
      2003.09.06 00:01
      Readonly 프로퍼티가 True인지 확인해 보시죠..
    • 우종복
    • 2003.09.05 22:37
    • 0 COMMENTS
    • /
    • 0 LIKES
    • Galaxy
    • 2003.09.05 22:08
    • 4 COMMENTS
    • /
    • 0 LIKES
    • Galaxy
      2003.09.05 22:32
      그림을 올립니다. 그럼 수고 하세요
    • 델을시작하며
      2003.09.09 21:35
      이런...글올리구 얼마 안가서 다른 문제점이 생겨서 테스트용 프로그램을 하나 만들었습니다. 그랬더니...
    • 델을시작하며
      2003.09.06 21:36
      저도 오늘 유사한 문제로... ^^ 작성자 : 이중철 Subject : 테스트를 안하고 올렸더니 문제가 있었네요...
    • Galaxy
      2003.09.15 04:06
      정말 감사 드립니다.
    • 성더기
      2003.09.06 17:11
      복잡한 쿼리라면 조인이 많을거 같은데 일반적으로 사용하시는 *=, =* 따위를 사용하셨다면 그런 결과가 ...
    • 이승근
    • 2003.09.05 20:22
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최여옥
      2003.09.06 00:58
      저도 고수아닌 허접이지만 한마디 적어드릴께요. 직접 Grid에 입력받는 처리는 되도록이면 하지마세요. ...
    • 이철승
    • 2003.09.05 19:18
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 한원희
      2003.09.05 18:52
      안녕하세요. 한원희입니다. uses 절에 variants 절을 추가해 주십시오. 그럼, 즐푸~
    • 장덕곤
      2004.05.03 02:53
      windows 폴더에 보시면 font폴더가 있습니다 그기에 카피 해주시면되는걸로 알고있습니다
    • 김선호
    • 2003.09.05 03:10
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 성더기
      2003.09.06 20:17
      BDE Administrator의 Configuration 에서 Drivers -> Native의 Oracle에서 DLL32와 Vender Init 부분을...
    • 초보임당
      2003.09.05 10:29
      sql plus 에서 접속이 된다면... 두번째로 하셔야 할 작업이.. BDE 셋팅입니다...ㅎㅎ BDE 에서 1. Ob...
    • 양용호
    • 2003.09.04 23:49
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 맑은물
    • 2003.09.04 23:31
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2003.09.05 01:06
      안녕하세요. 최용일입니다. 할 수는 있습니다. 그러나 별로 권해드리고 싶지는 않군요... 예전 도스시절...
    • goodlsw
    • 2003.09.04 23:29
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 열심히
      2003.09.05 04:23
      쿼리상에서 계산함 안되나요?? SELECT절에 매출-수금 필드를 만드시면 될것같은데요..
    • 최용일
      2003.09.05 01:35
      안녕하세요. 최용일입니다. class는 객체, method는 객체의 함수를 말하네요... OOP마다 각기 용어가...
    • 박상기
      2003.09.05 01:33
      * 수정 했습니다.착오없으시길....죄송합니다. 먼저 3번 질문부터 답을 해드리면 Self는 그 메...
    • 기지훈
      2003.09.05 03:57
      두분 모두 답변 감사합니다. 추가 질문이 있는데요. 제가 적은 예제처럼 Form1에서 버튼클릭이벤트...
    • 몽상
      2003.09.05 12:03
      생성자 선언이 없으므로 디폴트 생성자 호출 또 한가지 더 생성자 호출에 있어서 소유권을 가지는 것은 ...
    • 열심히
      2003.09.05 04:33
      Owner라는건 있을수도 있고 없을수도 있는겁니다.. TStringList를 동적으로 생성할때는 Owner가 없습니...
    • 기지훈
      2003.09.06 03:31
      결론을 먼저 이야기 하자면 Owner가 메모리 해제되면 하위(Owned Comp)들도 메모리 해제가 됩니다. ...
    • kc
    • 2003.09.04 20:50
    • 4 COMMENTS
    • /
    • 0 LIKES
    • kc
      2003.09.04 21:16
      헉 검색해보니...성더기님의 어드바이스가 있군요...qryMAIN.fetchall; 단 한줄로 해결했습니더....고...
    • KDDG_RNStone
      2003.09.04 21:05
      오라클과 연동할 경우 그런 경우가 있다고하네요. 볼랜드에서도 그런 버그가 있다는것을 알면서도 못잡는다...
    • kc
      2003.09.04 21:18
      하긴...델파이로 개발하면서..버그 여럿 봤습니다...갑자기 죽어 버리기도 하고...qryMAIN.fetchall;...
    • 열심히
      2003.09.05 04:28
      저도 얼마전에 그런경우를 겪었는데요.. FetchAll하면 모든레코드를 갱신하는군요. 저같은 경우는 필...
    • 강지훈
    • 2003.09.04 20:41
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2003.09.05 01:40
      안녕하세요. 최용일입니다. 흠~~ DataMedic이나 FinalData와 같은 전문 복구 프로그램을 이용하세요....