Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 2 847

/ вопрос открыт /

Здравствуйте, эксперты!В приложении код делающий фон из картинки для StringGrid,у меня вопрос как делать картинку на весь StringGrid,т.е программно подгонять размер картинки по размеру StringGrid-а.

Приложение:
  1. unit unit1;
  2. interface
  3. uses
  4. Windows,Messages,SysUtils,Variants,Classes,Graphics, Controls, Forms, Dialogs, Grids,MAPI;
  5. type
  6. TForm1 = class(TForm)
  7. StringGrid1: TStringGrid;
  8. procedure FormCreate(Sender: TObject);
  9. procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  10. Rect: TRect; State: TGridDrawState);
  11. private
  12. { Private declarations }
  13. TextPos: TPoint;
  14. public
  15. { Public declarations }
  16. end;
  17. var
  18. Form1: TForm1;
  19. implementation
  20. {$R *.dfm}
  21. var
  22. temp: TBitmap;
  23. function GetTextPosition(const Text: string; const Canvas: TCanvas; const Rect:TRect;const Alignment: TAlignment): TPoint;
  24. begin
  25. case Alignment of
  26. taLeftJustify: Result.x := 3;
  27. taCenter: Result.x := ((Rect.Right - Rect.Left) div 2) -(Canvas.TextWidth(Text) div 2);
  28. taRightJustify: Result.x := (Rect.Right - Rect.Left) - Canvas.TextWidth(Text)- 3;
  29. end; //case
  30. Result.y := ((Rect.Bottom - Rect.Top) div 2) - (Canvas.TextHeight(Text) div 2);
  31. end;
  32. procedure TForm1.FormCreate(Sender: TObject);
  33. var
  34. Dir: string;
  35. i,j: Integer;
  36. begin
  37. Temp := TBitmap.Create();
  38. Temp.Width := Screen.Width;
  39. Temp.Height := Screen.Height;
  40. Dir := ExtractFilePath(ParamStr(0));
  41. try
  42. Temp.LoadFromFile(Dir + 'PIC_1.bmp');
  43. except
  44. on EFopenError do
  45. begin
  46.  
  47. Form1.Close;
  48. end;
  49. end;
  50.  
  51. for I:=0 To StringGrid1.RowCount-1 do
  52. for J:=0 To StringGrid1.ColCount-1 do
  53. StringGrid1.Cells[J,I]:=IntToStr((I+1)*(J+1));}
  54. end;
  55. procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;Rect: TRect;State:TGridDrawState);
  56. var
  57. tmpRect: TRect;
  58. begin
  59. tmpRect := Rect;
  60. BitBlt(StringGrid1.Canvas.Handle,Rect.Left,Rect.Top,
  61. Rect.Right-Rect.Left,Rect.Bottom-Rect.Top,
  62. Temp.Canvas.Handle,tmpRect.Left,tmpRect.Top, SRCCOPY);
  63. SetBkMode(StringGrid1.Canvas.Handle,TRANSPARENT);
  64. TextPos := GetTextPosition(StringGrid1.Cells[ACol, ARow], StringGrid1.Canvas,Rect, taCenter);
  65. StringGrid1.Canvas.TextOut(Rect.Left, Rect.Top, StringGrid1.Cells[ACol, ARow]);
  66. end;
  67. end.
  68.  
  69.  


GAZ Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: GAZ (статус: Посетитель)
Вопрос отправлен: 27 мая 2009, 06:47
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Мини-форум пуст.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 24 февраля 2020, 11:59
Выполнено за 0.02 сек.
Рейтинг@Mail.ru