我一個窗體使用Query檢索數據,StringGrid顯示數據。現需要根據Query中的一字段Std_Qty 類型varchar(50)(取值范圍:L1,L2,L3,R1,R2,R3,M1)值,以決定在StringGrid的某行某列對應顯示一圖片。(圖片存於Image1,Image2...中).
我使用:stringgrid1.Canvas.Draw(x,y,Image1.Picture.Graphic );語句格式,但X,Y的值如何根據ACol, ARow轉換得來?試舉個例子,我在第三行第五列顯示Image1中的圖片內容。請問如何實現?
謝!

解决方案 »

  1.   

    var
      X,Y: Integer;
    begin
      X := 0;
      Y := 0;
      for I := 0 to to ARow-1 do
        Inc(X,StringGrid1.RowHeights[I]);
      for for I := 0 to to ACol-1 do
        Inc(Y,StringGrid1.ColWidths[I]);
      StringGrid1.Canvas.Draw(X,Y,Image1.Picture.Graphic);
    end;—————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    —————————————————————————————————
      

  2.   

    procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    begin
      if (ACol=4) and (ARow=2) then
      begin
        StringGrid1.Canvas.StretchDraw(Rect,Image1.Picture.Graphic);
      end
      else
         ....
    end;
      

  3.   

    TStringList从TDrawGrid继承了一个函数CellRect,声明如下function CellRect(ACol, ARow: Longint): TRect;它可以根据你指定的行/列返回一个TRect结构,即该单元格的绘制区域。