If Image.Picture<>nil then就可以了。
解决方案 »
- 高分:利用扩展存储过程master..xp_cmdshell进行数据导入导出的问题
- 如何解决网络连接异常报错(大家帮忙)
- 定义记录的问题,谢谢 20分
- 请用过ODAC开发Oracle数据库应用程序的朋友谈谈感受和用法!参与有分啊!!!
- 如何解决多文本问题?
- ADO中如何中得到数据库名和表名??
- strpos是否区分大小写?如果是,有没有不区分大小写的?
- 我的报表fastreport每次打印,第一页都是空白的,为什么了??????????
- select 代入参数!
- 在query中union的用法及功能是什么?书上找不到请指点
- 怎样在SQL2000数据库中存入图像(.bmp ,.jpg)?急!!!!
- 关于系统日期和时间的设置问题,知道的大侠请指点一下
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;
{*******************************************************}
{ }
{ Delphi VCL Extensions (RX) demo program }
{ }
{ Copyright (c) 1996 AO ROSNO }
{ Copyright (c) 1997 Master-Bank }
{ }
{*******************************************************}unit EditPict;{$I RX.INC}interfaceuses WinTypes, WinProcs, Classes, Graphics, Forms, Controls, Buttons, Dialogs,
StdCtrls, ExtCtrls, Placemnt, DBCtrls, DB, Menus
{$IFDEF RX_D3}, ExtDlgs, ComCtrls {$ENDIF};type
TPictEditDlg = class(TForm)
OkBtn: TBitBtn;
CancelBtn: TBitBtn;
LoadBtn: TBitBtn;
Bevel: TBevel;
FormPlacement: TFormPlacement;
SaveBtn: TBitBtn;
DataSource: TDataSource;
DBNavigator: TDBNavigator;
DBImage: TDBImage;
StretchBox: TCheckBox;
PopupMenu: TPopupMenu;
Cut1: TMenuItem;
Copy1: TMenuItem;
Paste1: TMenuItem;
Clear1: TMenuItem;
N1: TMenuItem;
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 RX_D3}
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_RX_GIF}, RxGIF {$ENDIF}
{$IFDEF RX_D3} {$IFNDEF CBUILDER}, 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 RX_D3}
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.