home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2001 September
/
Chip_2001-09_cd1.bin
/
zkuste
/
delphi
/
kolekce
/
d123456
/
DFS.ZIP
/
VInfoReg.pas
< prev
Wrap
Pascal/Delphi Source File
|
2001-06-28
|
6KB
|
243 lines
{$I DFS.INC}
unit VInfoReg;
interface
{$IFDEF DFS_WIN32}
{$R VERSINFO.RES}
{$ELSE}
{$R VERSINFO.R16}
{$ENDIF}
procedure Register;
implementation
uses
{$IFDEF DFS_NO_DSGNINTF}
DesignIntf,
DesignEditors,
{$ELSE}
DsgnIntf,
{$ENDIF}
VersInfo, DFSAbout, Classes, TypInfo, StdCtrls, Forms,
{$IFDEF DFS_WIN32} ComCtrls, {$ELSE} Grids, {$ENDIF}
{$IFDEF DFS_COMPILER_5_UP}
Contnrs,
{$ENDIF}
Controls, Dialogs;
type
{--- Version editor -----------------------------------------------------------}
{ double click opens the filename edit dialog }
{ right click gives two options - show the resources in a grid now }
{ and edit the filename }
TVersionEditor = class(TDefaultEditor)
procedure Edit; override;
{$IFDEF DFS_IPROPERTY}
procedure EditProp(const Prop: IProperty);
{$ELSE}
procedure EditProp(Prop: TPropertyEditor);
{$ENDIF}
procedure ExecuteVerb(Index: Integer); override;
function GetVerb(Index: Integer): string; override;
function GetVerbCount: Integer; override;
private
procedure ShowVersInfoForm(const Filename: string);
end;
{--- filename property editor .. fileopen dialog box --------------------------}
TVersionFilenameProperty = class (TStringProperty)
public
procedure Edit; override;
function GetAttributes: TPropertyAttributes; override;
end;
procedure TVersionFilenameProperty.Edit;
begin
with TOpenDialog.Create(Application) do
begin
Filename := GetValue;
Filter := 'Executables (*.exe)|*.exe|' +
'Libraries (*.dll)|*.dll|' +
'Packages (*.dpl)|*.dpl|' +
'Drivers (*.drv,*.386,*.vxd)|*.drv;*.386;*.vxd|' +
'Any file (*.*)|*.*';
Options := Options + [ofPathMustExist, ofFileMustExist, ofHideReadOnly];
try
if Execute then
SetValue(Filename)
finally
Free
end
end
end;
function TVersionFilenameProperty.GetAttributes: TPropertyAttributes;
begin
Result := [paDialog {$IFDEF DFS_WIN32}, paRevertable {$ENDIF}]
end;
procedure TVersionEditor.Edit;
var
{$IFDEF DFS_DESIGNERSELECTIONS}
Components: IDesignerSelections;
{$ELSE}
{$IFDEF DFS_COMPILER_5_UP}
Components: TDesignerSelectionList;
{$ELSE}
Components: TComponentList;
{$ENDIF}
{$ENDIF}
begin
{$IFDEF DFS_DESIGNERSELECTIONS}
Components := CreateSelectionList;
{$ELSE}
{$IFDEF DFS_COMPILER_5_UP}
Components := TDesignerSelectionList.Create;
{$ELSE}
Components := TComponentList.Create;
{$ENDIF}
{$ENDIF}
try
Components.Add(Component);
GetComponentProperties(Components, tkAny, Designer, EditProp)
finally
{$IFNDEF DFS_DESIGNERSELECTIONS}
Components.Free;
{$ENDIF}
end
end;
procedure TVersionEditor.EditProp(
{$IFDEF DFS_IPROPERTY}
const Prop: IProperty
{$ELSE}
Prop: TPropertyEditor
{$ENDIF}
);
begin
{$IFDEF DFS_IPROPERTY}
Prop.Edit;
Designer.Modified;
{$ELSE}
if Prop is TVersionFilenameProperty then
begin
TVersionFilenameProperty(Prop).Edit;
Designer.Modified
end
{$ENDIF}
end;
procedure TVersionEditor.ShowVersInfoForm(const Filename: string);
var
Frm: TForm;
btnClose: TButton;
VerInfo: TdfsVersionInfoResource;
VersionDisplay: {$IFDEF DFS_WIN32} TListView {$ELSE} TStringGrid {$ENDIF};
begin
Frm := TForm.Create(Application);
try
Frm.BorderStyle := bsDialog;
Frm.Caption := 'Version Info';
Frm.Position := poScreenCenter;
Frm.SetBounds(0, 0, 384, 238);
btnClose := TButton.Create(frm);
btnClose.Parent := Frm;
btnClose.SetBounds(147, 180, 80, 25);
btnClose.Cancel := TRUE;
btnClose.Caption := '&Close';
btnClose.Default := True;
btnClose.ModalResult := mrOK;
VerInfo := TdfsVersionInfoResource.Create(Frm);
VerInfo.Filename := Filename;
{$IFDEF DFS_WIN32}
VersionDisplay := TListView.Create(Frm);
with VersionDisplay do
begin
Parent := Frm;
Left := 8;
Top := 8;
Width := 358;
Height := 164;
ColumnClick := FALSE;
with Columns.Add do
begin
Caption := 'Resource';
Width := 85;
end;
with Columns.Add do
begin
Caption := 'Value';
Width := 265;
end;
ReadOnly := True;
TabOrder := 0;
ViewStyle := vsReport;
end;
VerInfo.VersionListView := VersionDisplay;
{$ELSE}
VersionDisplay := TStringGrid.Create(Frm);
with VersionDisplay do
begin
Parent := Frm;
Left := 8;
Top := 8;
Width := 358;
Height := 164;
ColCount := 2;
FixedCols := 0;
FixedRows := 0;
Options := [goDrawFocusSelected, goColSizing, goRowSelect];
TabOrder := 0;
ColWidths[0] := 85;
ColWidths[1] := 265;
end;
VerInfo.VersionGrid := VersionDisplay;
{$ENDIF}
Frm.ShowModal;
finally
{ Everything created above is owned by Frm, so it will free them. }
Frm.Free;
end;
end;
procedure TVersionEditor.ExecuteVerb(Index: Integer);
begin
case Index of
0 : ShowVersInfoForm(TdfsVersionInfoResource(Component).Filename);
1 : Edit;
end
end;
function TVersionEditor.GetVerb(Index: Integer): string;
begin
case Index of
0 : Result := 'Show Version Info';
1 : Result := 'Set Filename';
end
end;
function TVersionEditor.GetVerbCount: Integer;
begin
Result := 2
end;
procedure Register;
begin
RegisterComponents('DFS', [TdfsVersionInfoResource]);
RegisterPropertyEditor(TypeInfo(TVersionFilename), NIL, '',
TVersionFilenameProperty);
RegisterPropertyEditor(TypeInfo(string), TdfsVersionInfoResource, 'Version',
TDFSVersionProperty);
RegisterComponentEditor(TdfsVersionInfoResource, TVersionEditor);
end;
end.