cximagelisteditorview.pas
来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 536 行 · 第 1/2 页
PAS
536 行
{********************************************************************}
{ }
{ Developer Express Visual Component Library }
{ Express Cross Platform Library classes }
{ }
{ Copyright (c) 2000-2008 Developer Express Inc. }
{ ALL RIGHTS RESERVED }
{ }
{ The entire contents of this file is protected by U.S. and }
{ International Copyright Laws. Unauthorized reproduction, }
{ reverse-engineering, and distribution of all or any portion of }
{ the code contained in this file is strictly prohibited and may }
{ result in severe civil and criminal penalties and will be }
{ prosecuted to the maximum extent possible under the law. }
{ }
{ RESTRICTIONS }
{ }
{ THIS SOURCE CODE AND ALL RESULTING INTERMEDIATE FILES }
{ (DCU, OBJ, DLL, ETC.) ARE CONFIDENTIAL AND PROPRIETARY TRADE }
{ SECRETS OF DEVELOPER EXPRESS INC. THE REGISTERED DEVELOPER IS }
{ LICENSED TO DISTRIBUTE THE EXPRESSCROSSPLATFORMLIBRARY AND ALL }
{ ACCOMPANYING VCL CONTROLS AS PART OF AN EXECUTABLE PROGRAM }
{ ONLY. }
{ }
{ THE SOURCE CODE CONTAINED WITHIN THIS FILE AND ALL RELATED }
{ FILES OR ANY PORTION OF ITS CONTENTS SHALL AT NO TIME BE }
{ COPIED, TRANSFERRED, SOLD, DISTRIBUTED, OR OTHERWISE MADE }
{ AVAILABLE TO OTHER INDIVIDUALS WITHOUT EXPRESS WRITTEN CONSENT }
{ AND PERMISSION FROM DEVELOPER EXPRESS INC. }
{ }
{ CONSULT THE END USER LICENSE AGREEMENT FOR INFORMATION ON }
{ ADDITIONAL RESTRICTIONS. }
{ }
{********************************************************************}
unit cxImageListEditorView;
{$I cxVer.inc}
interface
uses
{$IFDEF DELPHI6}
Variants,
{$ENDIF}
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
StdCtrls, ExtCtrls, ComCtrls, CommCtrl, Menus, ImgList, ToolWin, cxGraphics,
cxClasses, cxImageListEditor, ActnList, Dialogs, ExtDlgs;
type
TcxImageListEditorFormInternalState = (eisSelectingTransparentColor);
TcxImageListEditorFormInternalStates = set of TcxImageListEditorFormInternalState;
TcxImageListEditorForm = class(TForm)
btnOK: TButton;
btnCancel: TButton;
btnApply: TButton;
gbSelectedImage: TGroupBox;
pbPreview: TPaintBox;
lbTransparentColor: TLabel;
cbTransparentColor: TComboBox;
gbImages: TGroupBox;
lvImages: TListView;
pnlToolBarSubstrate: TPanel;
tbCommands: TToolBar;
tbbAdd: TToolButton;
tbbDelete: TToolButton;
tbbClear: TToolButton;
tbbExport: TToolButton;
tbbReplace: TToolButton;
tbbImport: TToolButton;
pmImageLists: TPopupMenu;
pmCommands: TPopupMenu;
miAdd: TMenuItem;
miReplace: TMenuItem;
miDelete: TMenuItem;
miClear: TMenuItem;
miExport: TMenuItem;
miImport: TMenuItem;
lblManifestWarning: TLabel;
imgWarning: TImage;
imglSmall: TcxImageList;
spdSave: TSavePictureDialog;
actlCommands: TActionList;
actAdd: TAction;
actInsert: TAction;
actReplace: TAction;
actDelete: TAction;
actClear: TAction;
actExport: TAction;
actImport: TAction;
actApply: TAction;
actOK: TAction;
opdOpen: TOpenPictureDialog;
cbImagesSize: TComboBox;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure cbImagesSizeChange(Sender: TObject);
procedure cbTransparentColorChange(Sender: TObject);
procedure cbTransparentColorExit(Sender: TObject);
procedure lvImagesChange(Sender: TObject; Item: TListItem;
Change: TItemChange);
procedure lvImagesDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure lvImagesEndDrag(Sender, Target: TObject; X, Y: Integer);
procedure lvImagesStartDrag(Sender: TObject;
var DragObject: TDragObject);
procedure lvImagesKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure pbPreviewMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure pbPreviewMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure pbPreviewMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure pbPreviewPaint(Sender: TObject);
procedure actAddExecute(Sender: TObject);
procedure actInsertExecute(Sender: TObject);
procedure actReplaceExecute(Sender: TObject);
procedure actDeleteExecute(Sender: TObject);
procedure actClearExecute(Sender: TObject);
procedure actExportExecute(Sender: TObject);
procedure actImportExecute(Sender: TObject);
procedure actApplyExecute(Sender: TObject);
procedure actOKExecute(Sender: TObject);
private
FImageListEditor: TcxImageListEditor;
FImportList: TStrings;
FDragImageIndex: Integer;
FPreviewImageList: TcxImageList;
FInternalState: TcxImageListEditorFormInternalStates;
procedure AddColor(const AColor: string);
function ChangeImagesSize: Boolean;
procedure DrawFocusedItem(ACanvas: TCanvas; ARect: TRect);
function GetColorFromCursorPos(X, Y: Integer): TColor;
function GetFocusedImageIndex: Integer;
function IsValidImagesSize(ADisplayImagesSizeValue: string; out ASize: TSize): Boolean;
procedure SetFocusedImageIndex(AValue: Integer);
procedure AddImages(AAddMode: TcxImageListEditorAddMode);
procedure ImportImageList(Sender: TObject);
procedure PopulateImportItems;
procedure DataChanged(Sender: TObject);
procedure UpdateActions; reintroduce;
procedure UpdateControls;
procedure UpdateImagesSizeIndicator;
procedure UpdateTransparentColor(AColor: TColor); overload;
procedure UpdateTransparentColor(X, Y: Integer); overload;
procedure UpdateTransparentColorIndicator(AColor: TColor);
property FocusedImageIndex: Integer read GetFocusedImageIndex write SetFocusedImageIndex;
public
constructor Create(AImageListEditor: TcxImageListEditor); reintroduce;
destructor Destroy; override;
function GetVisualDataControl: TListView;
procedure SetImportList(AValue: TStrings);
end;
implementation
{$R *.dfm}
uses
Types, Math, cxGeometry, cxControls, dxOffice11, cxLibraryConsts;
type
TcxImageListAccess = class(TcxImageList);
{ TcxImageListEditorForm }
constructor TcxImageListEditorForm.Create(AImageListEditor: TcxImageListEditor);
begin
inherited Create(nil);
FImageListEditor := AImageListEditor;
FImageListEditor.OnChange := DataChanged;
FPreviewImageList := TcxImageList.Create(Self);
{$IFDEF DELPHI9}
PopupMode := pmAuto;
{$ENDIF}
if IsXPManifestEnabled then
begin
imgWarning.Visible := True;
lblManifestWarning.Caption := 'These images may be distorted if used in standard Windows UI controls with XPManifest enabled.';
lblManifestWarning.Visible := True;
Width := Width + MulDiv(6{Rows} * 3{Pixel}, Screen.PixelsPerInch, 96);
end;
end;
destructor TcxImageListEditorForm.Destroy;
begin
FreeAndNil(FPreviewImageList);
inherited;
end;
function TcxImageListEditorForm.GetVisualDataControl: TListView;
begin
Result := lvImages;
end;
procedure TcxImageListEditorForm.SetImportList(AValue: TStrings);
begin
FImportList := AValue;
PopulateImportItems;
end;
procedure TcxImageListEditorForm.FormCreate(Sender: TObject);
begin
lvImages.OnChange := lvImagesChange;
pbPreview.Cursor := crcxColorPicker;
GetColorValues(AddColor);
FDragImageIndex := -1;
Constraints.MinWidth := Width;
Constraints.MinHeight := Height;
end;
procedure TcxImageListEditorForm.FormDestroy(Sender: TObject);
begin
lvImages.OnChange := nil;
end;
procedure TcxImageListEditorForm.cbImagesSizeChange(Sender: TObject);
begin
if not ChangeImagesSize then
UpdateImagesSizeIndicator;
end;
procedure TcxImageListEditorForm.cbTransparentColorChange(Sender: TObject);
begin
if cbTransparentColor.Items.IndexOf(cbTransparentColor.Text) <> -1 then
UpdateTransparentColor(StringToColor(cbTransparentColor.Text));
end;
procedure TcxImageListEditorForm.cbTransparentColorExit(Sender: TObject);
begin
UpdateTransparentColor(StringToColor(cbTransparentColor.Text));
end;
procedure TcxImageListEditorForm.lvImagesChange(Sender: TObject;
Item: TListItem; Change: TItemChange);
begin
UpdateControls;
end;
procedure TcxImageListEditorForm.lvImagesDragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
begin
Accept := lvImages.GetItemAt(X, Y) <> nil;
end;
procedure TcxImageListEditorForm.lvImagesEndDrag(Sender, Target: TObject; X,
Y: Integer);
var
ATargetItem: TListItem;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?