IT/TMS2010. 8. 21. 09:15
procedure TfrmCreSDatHIB.sgdCreateListGetFormat(Sender: TObject; ACol: Integer;
  var AStyle: TSortStyle; var aPrefix, aSuffix: string);
begin
    AStyle  := ssAlphaCase;
end;

AStyle을 조정해 주면 된다.

형식은 다음과 같다.

  TSortStyle = (ssAutomatic, ssAlphabetic, ssNumeric, ssDate, ssAlphaNoCase,
    ssAlphaCase, ssShortDateEU, ssShortDateUS, ssCustom, ssFinancial, ssAnsiAlphaCase,
    ssAnsiAlphaNoCase, ssRaw, ssHTML, ssImages, ssCheckBox
    {$IFDEF TMSUNICODE}
    , ssUnicode
    {$ENDIF}
    {$IFDEF DELPHI7_LVL}
    , ssDateTime, ssTime
    {$ENDIF}
    , ssAlphaNumeric, ssAlphaNumericNoCase
    );
Posted by 비와바람
IT/TMS2009. 6. 10. 18:43

TAdvStringGrid를 사용하면 Balloon Hint가 있다. 말그대로 풍선도움말인데...

이쁘다. ^^;

변수는 다음과 같다.

Sender: TObject; ACol,  ARow: Integer; var ATitle, AText: string; var AIcon: Integer

Sender : 이거야 머..
ACol : 현재 마우스가 올라가 있는 Col
ARow : 현재 마우스가 올라가 있는 Row

ATitle : 힌트가 뜰때 제목줄
AText : 힌트가 뜰때 실제 내역
AICon : 우측의 아이콘 모양 (아직 종류는 모르겠..)

근데 골때린게..

ACol과 ARow가 각각 -1이 들어오는 경우가 있다.

그리드의 빈곳에 마우스가 멈춰 있을때인데..
(빈곳이라함은, 그리드는 큰데, 하단이나 우측에 셀이 없는 곳이 있다. 그걸 말한다. 값이 없는 셀을 말하는게 아님.)

이때 각각 -1이 리턴된다.

이런 망할.. -1을 리턴해주는 넘이 어디있냐.. 차라리 이벤트로 들어오질 말아야지.

여튼... Balloon이벤트 사용시 시작부분에 다음이 있어야 한다.

    if (ACol < 0) or (ARow <= 1) then
        exit;

아니면 List Index(-1) 에러난다..

리얼그리드 쓸때 이런게 좀 있긴 했지만.. 그래도 이건 아니잖아~

Posted by 비와바람
IT/TMS2009. 5. 28. 20:20

StringGrid의 옵션에 
  goThumbTracking 를 true로 해주시면 됩니다.


-> 헐.. 이렇게 간단할 수가.. ㅠ.ㅠ

델마당

http://www.delmadang.com/community/bbs_view.asp?bbsNo=17&bbsCat=0&st=&keyword=&indx=413524&keyword1=&keyword2=&page=1
Posted by 비와바람
IT/TMS2009. 5. 6. 11:36
procedure TfrmYSSimsa.sgdDatGetEditMask(Sender: TObject; ACol, ARow: Integer;
  var Value: string);
begin
    case ACol of
        cDDATODRDTE : Value := '!0000-00-00;1;_';
    end;
end;

각 Cell의 Format을 결정한다. 날짜등의 입력값을 받을때 좋다.
Posted by 비와바람
IT/TMS2009. 5. 6. 11:30

각 Cell의 데이터를 정렬한다.

procedure TfrmYSSimsa.sgdDatGetAlignment(Sender: TObject; ARow, ACol: Integer;
  var HAlign: TAlignment; var VAlign: TVAlignment);
begin
    case ACol of
        cDDATLAGCOD, cDDATODRDTE, cDDATADDCOD, cDDATDAYCNT, cDDATOUTCOD,
        cDDATODRBIG :
        begin
            HAlign  := taCenter;
        end;
        cDDATDAYQTY, cDDATDAYILU, cDDATODRPRC, cDDATODRAMT :
        begin
            HAlign  := taRightJustify;
        end;
    else
        HAlign  := taLeftJustify;
    end;

    if ARow = 0 then
        HAlign  := taCenter;
end;


변수중 HAlign과 VAlign의 Type은 다음과 같다.

TAlignment = (taLeftJustify, taRightJustify, taCenter);
TVAlignment = (vtaTop,vtaCenter,vtaBottom);


 
 

Posted by 비와바람
IT/TMS2009. 5. 6. 11:26
말그대로, Editing이 종료되었을때를 말한다.

종료되었을때 작업을 말한다. 주로 에디팅후 에러체크시 사용하면 좋을거 같다.
Posted by 비와바람
IT/TMS2009. 5. 6. 11:23

Cell이 변경되었을때 작업을 한다. 원래 여기에다 realGrid에서 했던 것처럼 Edit여부를 조정하려고 헀더니, 그리드가 깜빡거린다.. 
그래서 edit조정여부는 OnCanEditCell를 찾아서 했다.

procedure TfrmYSSimsa.sgdDatCellChanging(Sender: TObject; OldRow, OldCol,
  NewRow, NewCol: Integer; var Allow: Boolean);
begin
    case NewCol of
        cDDATODRCOD :
        begin
            if Copy(GlobalFunc.gsSimsaOp, 35, 1) = '1' then
                sgdDat.DefaultEditor    := edUpperCase
            else
                sgdDat.DefaultEditor    := edNormal;
        end
        else
        begin
            sgdDat.DefaultEditor    := edNormal;
        end;
    end;
end;
Posted by 비와바람
IT/TMS2009. 5. 6. 11:21


그리드의 Edit속성을 관리한다.

procedure TfrmYSSimsa.sgdDatCanEditCell(Sender: TObject; ARow, ACol: Integer;
  var CanEdit: Boolean);

말그대로 ARow, ACol의 Cell에서 CanEdit속성을 정한다.

    if sgdDat.Cells[cDDATCANCEL, ARow] = '0' then                               //삭제인 경우 무조건 EDIT를 무시하게 한다.
    begin
        CanEdit := FALSE;
    end
    else
    begin
        case ACol of
            cDDATODRCOD, cDDATODRDTE :
            begin
                if Trim(sgdDat.Cells[cDDATODRDTE, ARow]) <> '' then
                    CanEdit := FALSE
                else
                    CanEdit := TRUE;
            end;

            cDDATLAGCOD, cDVIWTOTCOD, cDDATSPCFNT : CanEdit   := FALSE;

            cDDATODRPRC, cDDATODRAMT :
            begin
                if (lstChuInf.CI_CHUBILDGS = '2') or
                   (sgdDat.Cells[cDDATELCCOD, ARow] = 'JJJJJJ') then            //추가청구이거나 준용인 경우에 수정이 가능하게 한다.
                    CanEdit := TRUE
                else
                    CanEdit := FALSE;
            end;

        else
            CanEdit := TRUE;
        end;
    end;

Posted by 비와바람