• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

利用DelphiTStringGrid控件实现日历排程

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

在ERP实现排程的模块中,我们希望能直观展现个机台每天的排单情况,一直苦恼Delphi没有合适的控件,没办法,先自己动手。

效果图:

绘制日历关键代码

procedure TForm1.DrawCalender;
var
  iDay, iProcess, days: Integer;
  row,col:Integer;
begin
  //sgCalender.
  days := DaysInAMonth(StrToInt(cbbYear.Text), StrToInt(cbbMonth.Text));
  sgCalender.ColCount := days + 1;
  sgCalender.RowCount := MachineNumber+1;
  sgCalender.RowHeights[0]:= 25;
  sgCalender.ColWidths[0]:= 80;
  
  for iDay := 1 to days do
  begin
    sgCalender.Cells[iDay, 0] := IntToStr(iDay);
  end;
  for iProcess := 1 to MachineNumber do
  begin
    sgCalender.Cells[0, iProcess] := '機台' + IntToStr(iProcess);
  end;
  for row := 1 to MachineNumber do
  begin
     for col := 1 to days do
     begin
        sgCalender.Cells[col, row] := Format('排單數:%d' + '|' + '完成數:%d'+ '|' + '製成率:%d',[Random(10000),Random(10000),Random(100)]) ;
     end;           
  end;
end;

 

在做的时候,由于cell内容不能换行,所以需要在DrawCell处理一下

procedure TForm1.sgCalenderDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  s, item: string;
  d: TStringGrid;
  I,num: Integer;
begin
  d := TStringGrid(sender);
  s := d.Cells[ACol, ARow];
  begin
    d.Canvas.Font.Assign(d.Font); //制定字体
    with d.Canvas do
    begin
      Brush.Color := clWindow; //制定单元格颜色
      if gdFixed in State then     
        Brush.Color := d.FixedColor;

      Font.Color := clWindowText;

      FillRect(Rect);
      with d do
      begin
        num:=0;
//根据'|' 字符换行 if Pos( '|',s) >0 then begin for I := 0 to Length(s) - 1 do begin if s[i] <> '|' then begin item := item + s[i]; end else begin Rect.Top := Rect.Top + num * 30; DrawText(Canvas.Handle, PChar(trim(item)), Length(Trim(item)), Rect, DT_Left or DT_SINGLELINE or DT_VCENTER); item := ''; Inc(num); end; end; if item<>'' then begin Rect.Top := Rect.Top + 30; DrawText(Canvas.Handle, PChar(trim(item)), Length(Trim(item)), Rect, DT_Left or DT_SINGLELINE or DT_VCENTER); end; end else begin // Draw Fixed Row Col DrawText(Canvas.Handle, PChar(s), Length(s), Rect, DT_CENTER or DT_SINGLELINE or DT_VCENTER); end; end; end; end; end;

 源码下载


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap