home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 October / Chip_2001-10_cd1.bin / zkuste / delphi / kolekce / d6 / FRCLX.ZIP / SOURCE / FR_GEdit.pas < prev    next >
Pascal/Delphi Source File  |  2001-07-03  |  4KB  |  135 lines

  1.  
  2. {******************************************}
  3. {                                          }
  4. {           FastReport CLX v2.4            }
  5. {              Picture editor              }
  6. {                                          }
  7. { Copyright (c) 1998-2001 by Tzyganenko A. }
  8. {                                          }
  9. {******************************************}
  10.  
  11. unit FR_GEdit;
  12.  
  13. interface
  14.  
  15. {$I FR.inc}
  16.  
  17. uses
  18.   SysUtils, Classes, QGraphics, QControls,
  19.   QForms, QDialogs, QStdCtrls, QButtons, QExtCtrls, FR_Class, FR_Const;
  20.  
  21. type
  22.   TfrGEditorForm = class(TfrObjEditorForm)
  23.     Button1: TButton;
  24.     Button2: TButton;
  25.     Image1: TImage;
  26.     GroupBox1: TGroupBox;
  27.     Button3: TButton;
  28.     Button4: TButton;
  29.     ScrollBox1: TScrollBox;
  30.     PB1: TPaintBox;
  31.     procedure BitBtn1Click(Sender: TObject);
  32.     procedure Button4Click(Sender: TObject);
  33.     procedure FormCreate(Sender: TObject);
  34.     procedure FormKeyDown(Sender: TObject; var Key: Word;
  35.       Shift: TShiftState);
  36.     procedure PB1Paint(Sender: TObject);
  37.   private
  38.     { Private declarations }
  39.     procedure Localize;
  40.   public
  41.     { Public declarations }
  42.     function ShowEditor(View: TfrView): TModalResult; override;
  43.   end;
  44.  
  45.  
  46. implementation
  47.  
  48. {$R *.xfm}
  49.  
  50. uses FR_Desgn, QClipBrd, Qt, FR_Utils;
  51.  
  52. function TfrGEditorForm.ShowEditor(View: TfrView): TModalResult;
  53. begin
  54.   Image1.Picture.Assign((View as TfrPictureView).Picture);
  55.   Result := ShowModal;
  56.   if Result = mrOk then
  57.   begin
  58.     frDesigner.BeforeChange;
  59.     (View as TfrPictureView).Picture.Assign(Image1.Picture);
  60.   end;
  61. end;
  62.  
  63. procedure TfrGEditorForm.BitBtn1Click(Sender: TObject);
  64. var
  65.   OpenDlg: TOpenDialog;
  66. begin
  67.   OpenDlg := TOpenDialog.Create(nil);
  68. {$IFDEF JPEG}
  69.   OpenDlg.Filter := (SPictFile) +
  70.     ' (*.bmp *.jpg *.ico *.wmf *.emf)|*.bmp;*.jpg;*.ico;*.wmf;*.emf|' +
  71.     (SAllFiles) + '|*.*';
  72. {$ELSE}
  73.   OpenDlg.Filter := (SPictFile) +
  74.     ' (*.bmp *.ico *.wmf *.emf)|*.bmp;*.ico;*.wmf;*.emf|' +
  75.     (SAllFiles) + '|*.*';
  76. {$ENDIF}
  77.   if OpenDlg.Execute then
  78.     Image1.Picture.LoadFromFile(OpenDlg.FileName);
  79.   OpenDlg.Free;
  80.   PB1Paint(nil);
  81. end;
  82.  
  83. procedure TfrGEditorForm.Button4Click(Sender: TObject);
  84. begin
  85.   Image1.Picture.Assign(nil);
  86.   PB1Paint(nil);
  87. end;
  88.  
  89. procedure TfrGEditorForm.Localize;
  90. begin
  91.   Caption := S53460;
  92.   Button3.Caption := S53462;
  93.   Button4.Caption := S53463;
  94.   Button1.Caption := (SOk);
  95.   Button2.Caption := (SCancel);
  96. end;
  97.  
  98. procedure TfrGEditorForm.FormCreate(Sender: TObject);
  99. begin
  100.   Localize;
  101. end;
  102.  
  103. procedure TfrGEditorForm.FormKeyDown(Sender: TObject; var Key: Word;
  104.   Shift: TShiftState);
  105. begin
  106.   if ((Key = key_Insert) and (ssShift in Shift)) or
  107.      ((Chr(Key) = 'V') and (ssCtrl in Shift)) then
  108.     Image1.Picture.Assign(Clipboard);
  109.   PB1Paint(nil);
  110. end;
  111.  
  112. procedure TfrGEditorForm.PB1Paint(Sender: TObject);
  113. var
  114.   dx, dy: Integer;
  115. begin
  116.   with PB1.Canvas do
  117.   begin
  118.     Brush.Color := clWindow;
  119.     FillRect(Rect(0, 0, PB1.Width, PB1.Height));
  120.     if (Image1.Picture.Graphic = nil) or Image1.Picture.Graphic.Empty then
  121.       TextOut((PB1.Width - TextWidth((SNotAssigned))) div 2, 100, (SNotAssigned))
  122.     else
  123.     begin
  124.       dx := Image1.Picture.Width;
  125.       dy := Image1.Picture.Height;
  126.       if (dx > PB1.Width) or (dy > PB1.Height) then
  127.         StretchDraw(Rect(0, 0, PB1.Width, PB1.Height), Image1.Picture.Graphic) else
  128.         Draw((PB1.Width - dx) div 2, (PB1.Height - dy) div 2, Image1.Picture.Graphic);
  129.     end;
  130.   end;
  131. end;
  132.  
  133. end.
  134.  
  135.