请问各位大侠,如何限定TSTRINGGRID中单元格的文字格式,比如右对齐等,还有在输入
单元格内容的时候,如何限制文字的长度,请教了急在线。

解决方案 »

  1.   

    想要使字符串网格的第一行字符居中对齐,其他行右对齐,可以通过StringGrid.OnDrawCell事件处理来完成。procedure WriteText(ACanvas: TCanvas; const ARect: TRect; DX, DY: Integer;
      const Text: string; Format: Word);
    var
      S: array[0..255] of Char;
      B, R: TRect;begin
      with ACanvas, ARect do
      begin
      case Format of
      DT_LEFT : ExtTextOut(Handle, Left + DX, Top + DY, ETO_OPAQUE or
      ETO_CLIPPED, @ARect, StrPCopy(S, Text),
      length(Text), nil);  DT_RIGHT : ExtTextOut(Handle, Right - TextWidth(Text) - 3, Top + DY,
      ETO_OPAQUE or ETO_CLIPPED, @ARect, StrPCopy(S, Text), Length(Text), nil);  DT_CENTER : ExtTextOut(Handle, Left + (Right - Left - TextWidth(Text)) div 2, Top + DY, ETO_OPAQUE or ETO_CLIPPED, @ARect,
      StrPCopy(S, Text), Length(Text), nil);
      end;
      end;
    end;
    procedure TBEFStringGrid.DrawCell(Col, Row: Longint; Rect: TRect; State: TGridDrawState);
    var  procedure Display(const S: string; Alignment: TAlignment);
      const
      Formats: array[TAlignment] of Word = (DT_LEFT, DT_RIGHT, DT_CENTER);
      begin
      WriteText(Canvas, Rect, 2, 2, S, Formats[Alignment]);
      end;begin
      case Row of
      0 : { 居中对齐第一行 }
      if (Col < ColCount) then
      Display(Cells[Col,Row], taCenter)
      else
      { 右对齐其他行 }
      Display(Cells[Col,Row], taRight);
      end;end;
      

  2.   

    在onSetEditText事件里 判断value的长度,
      

  3.   

    //KeyPress事件
    procedure TFrm.StringGrid1KeyPress(Sender: TObject; var Key: Char);
    begin
         if length(StringGrid1.cells[StringGrid1.Col,StringGrid1.row])>somelength then
            Key:=#0;
    end;
      

  4.   

    格式问题:
       在onGetEditMask事件中可以设置格式
    procedure TForm1.StringGrid1GetEditMask(Sender: TObject; ACol, ARow: Longint; var Value: string);begin
      
        Value :=  '!\(999\)000-0000;1';
    end;
      

  5.   

    楼上的各位,我现在需要将格式设置为XXXXXXXXXXXXXXXX.XX这样的金融格式有什么办法呢?
      

  6.   

    已经解决,不过不是用stringgrid,还是要谢谢各位,给分!!