91 lines
2.0 KiB
ObjectPascal
91 lines
2.0 KiB
ObjectPascal
unit MaskEditor;
|
|
|
|
interface
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
ExtCtrls, maskgenerator, dsgnintf;
|
|
|
|
|
|
type
|
|
TCoolMaskEditor = class(TPropertyEditor)
|
|
private
|
|
FValue:string;
|
|
public
|
|
destructor destroy;override;
|
|
procedure Edit;override;
|
|
function GetAttributes: TPropertyAttributes;override;
|
|
function getname:string; override;
|
|
function getValue:string; override;
|
|
published
|
|
property Value:string read FValue write FValue;
|
|
end;
|
|
|
|
var
|
|
FormCreated:boolean=false;
|
|
|
|
implementation
|
|
|
|
uses
|
|
CoolForm;
|
|
|
|
function TCoolMaskEditor.getname:string;
|
|
begin
|
|
result:='Mask';
|
|
end;
|
|
|
|
|
|
function TCoolMaskEditor.getValue:string;
|
|
begin
|
|
result:='Mask';
|
|
end;
|
|
|
|
|
|
|
|
destructor TCoolMaskEditor.Destroy;
|
|
begin
|
|
if Formmaskgenerator<>nil then
|
|
begin
|
|
FormMaskGenerator.Free;
|
|
FormMaskGenerator:=nil;
|
|
FormCreated:=false;
|
|
end;
|
|
inherited;
|
|
end;
|
|
|
|
function TCoolMaskEditor.GetAttributes: TPropertyAttributes;
|
|
begin
|
|
// Make Delphi display the (...) button in the objectinspector
|
|
Result := [paDialog];
|
|
end;
|
|
|
|
|
|
procedure TCoolMaskEditor.Edit;
|
|
//******************* Unknown *************************
|
|
begin
|
|
// Create the maskeditorform if it doesn`t exist yet
|
|
if not assigned(FormMaskGenerator) then
|
|
begin
|
|
formMaskGenerator:=TFormMaskGenerator.Create(nil);
|
|
formMaskGenerator.OriginalRegionData:=nil;
|
|
formMaskGenerator.SaveOriginalRegionData;
|
|
FormCreated:=true;
|
|
end;
|
|
with formMaskGenerator do
|
|
begin
|
|
// Set the existing mask in the editor
|
|
formMaskGenerator.Rgn1:=hrgn(TRegionType(GetOrdValue).Fregion);
|
|
// copy the bitmap into the editor
|
|
Image1.picture.bitmap.Assign(TRegionType(GetOrdValue).owner.picture.bitmap);
|
|
opendialog1.filename:='';
|
|
Showmodal;
|
|
// get the new region from the editor
|
|
hrgn(TRegionType(GetOrdValue).Fregion):=formMaskGenerator.Rgn1;
|
|
// note: the editorform must not be freed here
|
|
// if done, delphi eats lines of the sourcecode of the form in which coolform is used
|
|
// (every line where a visible component is defined) ... rather strange
|
|
end;
|
|
end;
|
|
|
|
|
|
end.
|