208 lines
5.7 KiB
Plaintext
208 lines
5.7 KiB
Plaintext
{******************************************************************
|
|
|
|
JEDI-VCL Demo
|
|
|
|
Copyright (C) 2002 Project JEDI
|
|
|
|
Original author:
|
|
|
|
Contributor(s):
|
|
|
|
You may retrieve the latest version of this file at the JEDI-JVCL
|
|
home page, located at http://jvcl.sourceforge.net
|
|
|
|
The contents of this file are used with permission, subject to
|
|
the Mozilla Public License Version 1.1 (the "License"); you may
|
|
not use this file except in compliance with the License. You may
|
|
obtain a copy of the License at
|
|
http://www.mozilla.org/MPL/MPL-1_1Final.html
|
|
|
|
Software distributed under the License is distributed on an
|
|
"AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
|
implied. See the License for the specific language governing
|
|
rights and limitations under the License.
|
|
|
|
******************************************************************}
|
|
|
|
{*******************************************************}
|
|
{ }
|
|
{ Delphi VCL Extensions (RX) demo program }
|
|
{ }
|
|
{ Copyright (c) 1996 AO ROSNO }
|
|
{ Copyright (c) 1997 Master-Bank }
|
|
{ }
|
|
{*******************************************************}
|
|
|
|
unit EditPict;
|
|
|
|
{$I jvcl.inc}
|
|
|
|
interface
|
|
|
|
uses WinTypes, WinProcs, Classes, Graphics, Forms, Controls, Buttons, Dialogs,
|
|
StdCtrls, ExtCtrls, DBCtrls, DB, Menus,
|
|
ExtDlgs, ComCtrls, JvComponent, JvFormPlacement;
|
|
|
|
type
|
|
TPictEditDlg = class(TForm)
|
|
OkBtn: TBitBtn;
|
|
CancelBtn: TBitBtn;
|
|
LoadBtn: TBitBtn;
|
|
Bevel: TBevel;
|
|
SaveBtn: TBitBtn;
|
|
DataSource: TDataSource;
|
|
DBNavigator: TDBNavigator;
|
|
StretchBox: TCheckBox;
|
|
PopupMenu: TPopupMenu;
|
|
Cut1: TMenuItem;
|
|
Copy1: TMenuItem;
|
|
Paste1: TMenuItem;
|
|
Clear1: TMenuItem;
|
|
N1: TMenuItem;
|
|
DBImage: TDBImage;
|
|
procedure FileOpen(Sender: TObject);
|
|
procedure ImageKeyDown(Sender: TObject; var Key: Word;
|
|
Shift: TShiftState);
|
|
procedure SaveBtnClick(Sender: TObject);
|
|
procedure OkBtnClick(Sender: TObject);
|
|
procedure StretchBoxClick(Sender: TObject);
|
|
procedure MenuClick(Sender: TObject);
|
|
procedure FormCreate(Sender: TObject);
|
|
private
|
|
{$IFDEF COMPILER3_UP}
|
|
OpenDialog: TOpenPictureDialog;
|
|
SaveDialog: TSavePictureDialog;
|
|
{$ELSE}
|
|
OpenDialog: TOpenDialog;
|
|
SaveDialog: TSaveDialog;
|
|
{$ENDIF}
|
|
procedure UpdatePictureField;
|
|
end;
|
|
|
|
function PictureEdit(DataSet: TDataSet; const FieldName: string): Boolean;
|
|
|
|
implementation
|
|
|
|
{$R *.DFM}
|
|
|
|
uses Messages, SysUtils {$IFDEF USE_Jv_GIF}, JvGIF {$ENDIF}
|
|
{$IFDEF COMPILER3_UP} {$IFNDEF BCB}, Jpeg {$ENDIF} {$ENDIF};
|
|
|
|
function PictureEdit(DataSet: TDataSet; const FieldName: string): Boolean;
|
|
begin
|
|
with TPictEditDlg.Create(Application) do
|
|
try
|
|
DataSource.DataSet := DataSet;
|
|
DBImage.DataField := FieldName;
|
|
ActiveControl := DBImage;
|
|
Caption := Format('Field: %s', [FieldName]);
|
|
Result := (ShowModal = mrOk);
|
|
finally
|
|
Free;
|
|
end;
|
|
end;
|
|
|
|
{ TPictEditDlg }
|
|
|
|
procedure TPictEditDlg.UpdatePictureField;
|
|
var
|
|
Tmp: TBitmap;
|
|
begin
|
|
if (DBImage.Picture.Graphic <> nil) and
|
|
not (DBImage.Picture.Graphic.Empty) then
|
|
begin
|
|
if not (DBImage.Picture.Graphic is TBitmap) then begin
|
|
Tmp := TBitmap.Create;
|
|
try
|
|
Tmp.Assign(DBImage.Picture.Graphic);
|
|
DBImage.Picture.Assign(Tmp);
|
|
finally
|
|
Tmp.Free;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TPictEditDlg.FileOpen(Sender: TObject);
|
|
begin
|
|
with OpenDialog do begin
|
|
DefaultExt := 'BMP';
|
|
Filter := GraphicFilter(TGraphic);
|
|
if Execute then begin
|
|
if DataSource.AutoEdit then DataSource.Edit;
|
|
DBImage.Picture.LoadFromFile(FileName);
|
|
UpdatePictureField;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TPictEditDlg.ImageKeyDown(Sender: TObject; var Key: Word;
|
|
Shift: TShiftState);
|
|
begin
|
|
{if Key = VK_ESCAPE then CancelBtn.Click;}
|
|
end;
|
|
|
|
procedure TPictEditDlg.SaveBtnClick(Sender: TObject);
|
|
begin
|
|
with SaveDialog do begin
|
|
if (DBImage.Picture.Graphic <> nil) and
|
|
not (DBImage.Picture.Graphic.Empty) then
|
|
begin
|
|
DefaultExt := GraphicExtension(TGraphicClass(DBImage.Picture.Graphic.ClassType));
|
|
Filter := GraphicFilter(TGraphicClass(DBImage.Picture.Graphic.ClassType));
|
|
end
|
|
else begin
|
|
DefaultExt := 'BMP';
|
|
Filter := GraphicFilter(TGraphic);
|
|
end;
|
|
if Execute then DBImage.Picture.SaveToFile(FileName);
|
|
end;
|
|
end;
|
|
|
|
procedure TPictEditDlg.OkBtnClick(Sender: TObject);
|
|
begin
|
|
UpdatePictureField;
|
|
ModalResult := mrOk;
|
|
end;
|
|
|
|
procedure TPictEditDlg.StretchBoxClick(Sender: TObject);
|
|
begin
|
|
DBImage.Stretch := StretchBox.Checked;
|
|
end;
|
|
|
|
procedure TPictEditDlg.MenuClick(Sender: TObject);
|
|
begin
|
|
case Integer(TMenuItem(Sender).Tag) of
|
|
1: DBImage.Perform(WM_CUT, 0, 0);
|
|
2: DBImage.Perform(WM_COPY, 0, 0);
|
|
3: DBImage.Perform(WM_PASTE, 0, 0);
|
|
4: begin
|
|
if DataSource.AutoEdit then DataSource.Edit;
|
|
DBImage.Picture.Graphic := nil;
|
|
UpdatePictureField;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TPictEditDlg.FormCreate(Sender: TObject);
|
|
begin
|
|
{$IFDEF COMPILER3_UP}
|
|
OpenDialog := TOpenPictureDialog.Create(Self);
|
|
SaveDialog := TSavePictureDialog.Create(Self);
|
|
{$ELSE}
|
|
OpenDialog := TOpenDialog.Create(Self);
|
|
SaveDialog := TSaveDialog.Create(Self);
|
|
{$ENDIF}
|
|
with OpenDialog do begin
|
|
Title := 'Load picture';
|
|
Options := [ofHideReadOnly, ofFileMustExist, ofShowHelp];
|
|
end;
|
|
with SaveDialog do begin
|
|
Title := 'Save picture as';
|
|
Options := [ofHideReadOnly, ofFileMustExist, ofShowHelp,
|
|
ofOverwritePrompt];
|
|
end;
|
|
end;
|
|
|
|
end.
|