菜鸟想实现图片上的这个功能?用什么办法比较好呢??
http://www.361soft.com.cn/1.jpg  

解决方案 »

  1.   

    可以在TGrid控件的基础上自绘,可以达到效果。
      

  2.   

    从上到下三个部分,依次可以用下面三种控件来实现:
    Standard -> TToolBar
    Win32 -> TPageControl
    Additional -> TButtonGroup
      

  3.   

    第三方控件,这些都是button、pagecontrol
    比如skinbuissform
      

  4.   

    按扭上面用png图片,于是你的问题解决了。
      

  5.   

    png,绘制即可。不是按钮,只是提示有还是没有了。
      

  6.   

    所以要采用哪些分块画的控件,例如:TGrid,然后从这些重画出效果
      

  7.   


    type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
        procedure MyPanelClick(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    var
      Form1: TForm1;
      MyPanel : Array of TSpeedButton;
    implementation
    {$R *.dfm}
    procedure TForm1.FormCreate(Sender: TObject);
    Var
       i,j,k: Integer;
    begin
       SetLength(MyPanel,12);
       for i := 0 to 11 do  //可从数据库中读取数据总数替换11,即循环数据集
       begin
         MyPanel[i] := TSpeedButton.Create(Self);
         MyPanel[i].Width := 130;
         MyPanel[i].Height:= 80;
         MyPanel[i].Parent:=self;
         MyPanel[i].Tag:= i ; //用tag标识
         MyPanel[i].OnClick :=MyPanelClick; //赋予事件
         MyPanel[i].Caption:=IntToStr(i)+'...'+#13+'剩余'+'...'+#13+'单价:...'; //可从数据库中读取数据字段
         j:=Trunc(i/4);  //取整  行
           K:=i mod 4 ;   //取余  列
           if i<4 then
           begin
             MyPanel[i].Top:=30;
             MyPanel[i].Left:=30+i*130;
           end else
           begin
             MyPanel[i].Top:=30+80*j;
             MyPanel[i].Left:=30+k*130;
           end;
       end;
    end;procedure TForm1.MyPanelClick(Sender: TObject); //自己定义的事件
    Var
      i : Integer;
    begin
      i := TPanel(Sender).Tag;
      MyPanel[i].Caption:=IntToStr(i);
      ShowMessage(IntToStr(i));
    end;
      

  8.   

    tadvstringgrid
    通过addbitbutton方法,使用图片作为北京,然后用drawtext,来计算位置填充文字
      

  9.   

    在窗口找一块地方,按照数据库往上贴图,超出部分用滚动条。
    处理OnMouseDown事件,如果是在某个按钮图片上,就调用相关程序。
      

  10.   

    详细说起来还真有点复杂,不过这类东东(房态图,餐饮桌太等等)都是由TDrawGrid来实现的。
    使用TButton也不是不可以,不过刷新效率要低很多。你也可以考虑使用TDBCtrlGrid来实现,最简单了。
      

  11.   

    這樣可能會生成太多控件,不建議。
    還是TDrawGrid實現比較好。