Q&A

  • AdvStringGrid에 대한 질문 입니다.
안녕하세요
수고 많습니다.

1111111111111111111111111111111111111111111111111111
각 Colum에 대한 left, Right 정렬
각 Colum 전체에 대한 색깔 설정,change등
이런것들은 StringGrid처럼 DrawCell에서 해야합니까
아니면 다른 방법으로 설정 하는것이 따로 있습니까?
다른 방법이 있지 않을까 생각중이고 찾고 있습니다.
1111111111111111111111111111111111111111111111111111

2222222222222222222222222222222222222222222222222222
그리고 Check box을 Data와 함께 나타내었습니다.
만약에 Check box가 10개 있으며 어떤check box가 check 되어는지
어떻게 알수 있습니까?
222222222222222222222222222222222222222222222222222222

위의 내용들이 너무너무 궁금합니다.
많은 답변을 부탁 드립니다.
3  COMMENTS
  • Profile
    Galaxy 2004.02.05 05:39
    Drawcell을 사용하지 않아도 되는 이벤트 기능이 있습니다.

    GetAlignment,GetCellColor

    이두가지 기능으로 좌우,상하,중간,칼라을 해결했습니다.
    하루내내 Help만 보고 있었네
    이제 Check Box 만 해결하면 모든것이 끝나는 구나
    (어떤check box가 check 되어는지)
    공부를 더 해서 답변을 올리겠습니다.

    그럼 수고 하세요

    procedure TFStocksheet.adv1GetAlignment(Sender: TObject; ARow,
      ACol: Integer; var HAlign: TAlignment; var VAlign: TVAlignment);
    begin
    if ARow <> 0 then
       begin
       if (ACol = 11) then//정렬:Center
          begin
          HAlign := taCenter;
          end;
       if (ACol = 16) then//정렬:Right
          begin
          HAlign := taRightJustify;
          end;
       if ((ACol = 13) Or (ACol = 17)) then //정렬:Left
          begin
          HAlign := taLeftJustify;
          end;
       end;
    end;

    procedure TFStocksheet.adv1GetCellColor(Sender: TObject; ARow,
      ACol: Integer; AState: TGridDrawState; ABrush: TBrush; AFont: TFont);
    begin
    if (ARow <> 0) then
       begin
       if (ACol = 16) then
          begin
          ABrush.Color:=$007F7F7F;
          AFont.Color:=clBlack;
          end;
       if ((ACol = 13) Or (ACol = 17)) then  //Color:$007F7F7F
          begin
          Abrush.Color:=$007F7F7F;
          AFont.Color:=clBlack;
          end;
       if ((ACol = 10) Or (ACol = 12)) then  //Color:White
          begin
          Abrush.Color:=clWhite;
          AFont.Color:=clBlack;
          end;
       end;

    end;




  • Profile
    레인시즈 2004.02.05 19:31
    AdvStringGrid 함수 중에 Check 여부를 체크 하는

    GetCheckBoxState 를 사용 하시면 될듯 하네요

    루프를 돌려서 체크 여부를 확인하는 방법과
    OnselectCell 이벤트나 OnRowChanging 이벤트를 이용하는 방법이 있구요
    CheckBox 클릭시 변경 하시고자 하신다면 OnCheckBoxClick 이벤트를
    활용하실수 있습니다.

    참고로 OnGetEditorType에서 로우나 셀에 해당 하는 부분만 Editor Type을
    변경 하실수 있습니다

    가장 좋은 예제는 Demo를 참조 하시면 좋겠네요

    그럼, 좋은 하루 되세요

  • Profile
    Galaxy 2004.02.05 20:48
    감사 합니다. 새해는 소원하는것 모든것을 이루시길 바랍니다.  

    adv1:advstringgrid
    11111111111111111111111111111111111111111111111111111111111
    Data 지우기
    adv1.Clear : fixHead...모든것을 다 지움
    adv1.ClearCols(startColumn번호, 갯수);Column단위로 지움
    adv1.ClearRows(startRow번호, 갯수);Row단위로 지움

    with adv1 do
            begin
            i1:=0;
            for i1 := 1 to RowCount - 1 do
                begin
                adv1.ClearRows(i1,1);
                end;
            end;
    1111111111111111111111111111111111111111111111111111111111111

    2222222222222222222222222222222222222222222222222222222222222
    adv1.AddCheckBox(Col,Row,State,Data);//CheckBox 생성
    adv1.SetCheckBoxState(11,i2,True);//CheckBox 선택적으로 check

    with adv1 do
          for i2:=1 to Rowcount -1 do
              begin
              adv1.AddCheckBox(11,i2,false,false);
                      ....

              Cells[19,i2]     :=FieldByNAme('CONFM_DATE'  ).asstring;
              Floats[20,i2]     :=FieldByNAme('MATR_CONFM'  ).asfloat;
              if (Floats[20,i2] = 1) then
                begin
                adv1.SetCheckBoxState(11,i2,True);
                 end;
              end;
    222222222222222222222222222222222222222222222222222222222222222222

    333333333333333333333333333333333333333333333333333333333333333333
    onCheckBoxClick 이벤트

    procedure TFStocksheet.adv1CheckBoxClick(Sender: TObject; ACol,
      ARow: Integer; State: Boolean);
    begin
    str1:='';
    with adv1 do
         begin
         if (ACol = 11) then
            begin
            if (State = True) then
               begin
               str1:=formatdatetime('dd/mm/yyyy',Now);
               Cells[19, ARow]:=str1;
               Floats[20, ARow]:=1;
               end
            else
               begin
               Cells[19, ARow]:='';
               Floats[20, ARow]:=0;
               end;  
            end;
         end;
    end;
    333333333333333333333333333333333333333333333333333333333333333

    44444444444444444444444444444444444444444444444444444444444444
    True1:boolean;
    adv1.GetCheckBoxState(11,i1,True1);
    if True1 = True then
       begin

       end
    else
         begin

         end;
    4444444444444444444444444444444444444444444444444444444444444

    그럼 수고 하세요