| 
| 
 | Вопрос # 2 847/ вопрос открыт / | 
 |  Здравствуйте, эксперты!В приложении код делающий фон из картинки для StringGrid,у меня вопрос как делать картинку на весь StringGrid,т.е программно подгонять размер картинки по размеру StringGrid-а. Приложение:Переключить в обычный режим unit unit1;interfaceuses  Windows,Messages,SysUtils,Variants,Classes,Graphics, Controls, Forms, Dialogs, Grids,MAPI;type  TForm1 = class(TForm)    StringGrid1: TStringGrid;    procedure FormCreate(Sender: TObject);    procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;      Rect: TRect; State: TGridDrawState);  private    { Private declarations }   TextPos: TPoint;  public    { Public declarations }  end;var  Form1: TForm1;implementation{$R *.dfm}var  temp: TBitmap; function GetTextPosition(const Text: string; const Canvas: TCanvas; const Rect:TRect;const
Alignment: TAlignment): TPoint;begin case Alignment of  taLeftJustify: Result.x := 3;  taCenter: Result.x := ((Rect.Right - Rect.Left) div 2) -(Canvas.TextWidth(Text) div 2);  taRightJustify: Result.x := (Rect.Right - Rect.Left) - Canvas.TextWidth(Text)- 3;  end; //case  Result.y := ((Rect.Bottom - Rect.Top) div 2) - (Canvas.TextHeight(Text) div 2);end;procedure TForm1.FormCreate(Sender: TObject); var Dir: string; i,j: Integer;begin Temp := TBitmap.Create(); Temp.Width := Screen.Width; Temp.Height := Screen.Height; Dir := ExtractFilePath(ParamStr(0)); try  Temp.LoadFromFile(Dir + 'PIC_1.bmp'); except  on EFopenError do   begin     Form1.Close;   end; end;  for I:=0 To StringGrid1.RowCount-1 do  for J:=0 To StringGrid1.ColCount-1 do    StringGrid1.Cells[J,I]:=IntToStr((I+1)*(J+1));}end;procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;Rect:
TRect;State:TGridDrawState);var tmpRect: TRect;begin tmpRect := Rect; BitBlt(StringGrid1.Canvas.Handle,Rect.Left,Rect.Top,Rect.Right-Rect.Left,Rect.Bottom-Rect.Top,Temp.Canvas.Handle,tmpRect.Left,tmpRect.Top, SRCCOPY); SetBkMode(StringGrid1.Canvas.Handle,TRANSPARENT); TextPos := GetTextPosition(StringGrid1.Cells[ACol, ARow], StringGrid1.Canvas,Rect, taCenter); StringGrid1.Canvas.TextOut(Rect.Left, Rect.Top, StringGrid1.Cells[ACol, ARow]);end; end.  
|  |   Вопрос задал: GAZ (статус: Посетитель)Вопрос отправлен: 27 мая 2009, 06:47
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаМини-форум пуст. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |