|
Вопрос # 2 847/ вопрос открыт / |
|
Здравствуйте, эксперты!В приложении код делающий фон из картинки для StringGrid,у меня вопрос как делать картинку на весь StringGrid,т.е программно подгонять размер картинки по размеру StringGrid-а.
Приложение: Переключить в обычный режим- unit unit1;
- interface
- uses
- 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.
|
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|