1,237 changes: 653 additions & 584 deletions ezForm.simba
@@ -1,5 +1,20 @@
{$loadLib ProSocks}

type eZElement=record
__:tComponent;
end;

type eZElementArray=array of eZElement;

type eZForm=record
__:tForm;
___:eZElementArray;
end;

type eZFormArray=array of eZForm;

type eZProp=(eZPropChecked,eZPropDisabled,eZPropPassword,eZPropReadOnly,eZPropVisible);

const
eZTagButton=1;
eZTagCheckbox=2;
Expand All @@ -12,104 +27,135 @@ const
eZTagMemo=9;
eZTagProgressBar=10;

type tZProp=(eZPropChecked,eZPropDisabled,eZPropPassword,eZPropReadOnly,eZPropVisible);

type tZComponent=record
__:tComponent;
end;
var
__eZForm:eZForm;
__eZFormArray:eZFormArray;

type tZComponentArray=array of tZComponent;
(*
Procedure
*)

type tZForm=record
__:tForm;
procedure eZFormFree();
var
_Index:Int32;
begin
for _Index to high(__eZFormArray) do
__eZFormArray[_Index].__.close();
end;

procedure eZFormShow();native;
var
eZForm:tZForm;
ezFormComponentArray:tZComponentArray;

procedure pzFormFree();
begin ezForm.__.close();end;

procedure pZFormShow();native;
begin eZForm.__.showOnTop();end;

function tObject.toComponent():tZComponent;
begin exit(tZComponent(self));end;
_LeftMost,
_TopMost:int32=2147483647;
_Index:int32;
_BottomMost,
_RightMost:int32=-2147483647;
begin
__eZForm.__.setTag(1);
if length(__eZForm.___) then
begin
for _Index to high(__eZForm.___) do
begin
if tButton(__eZForm.___[_Index].__).getVisible() then
begin
_BottomMost:=max(_BottomMost,tButton(__eZForm.___[_Index].__).getTop()+tButton(__eZForm.___[_Index].__).getHeight());
_LeftMost:=min(_LeftMost,tButton(__eZForm.___[_Index].__).getLeft());
_RightMost:=max(_RightMost,tButton(__eZForm.___[_Index].__).getLeft()+tButton(__eZForm.___[_Index].__).getWidth());
_TopMost:=min(_TopMost,tButton(__eZForm.___[_Index].__).getTop());
end;
end;
if (_BottomMost<>-2147483647) and (_LeftMost<>2147483647) and (_RightMost<>-2147483647) and (_TopMost<>2147483647) then
begin
__eZForm.__.setHeight(_BottomMost+_TopMost);
__eZForm.__.setWidth(_LeftMost+_RightMost);
end;
end;
__eZForm.__.showOnTop();
end;

(*
tZForm Methods
eZForm Methods
*)

function tZForm.addButton(vCaption,vFont,vHandle:string;vPosition:tPoint;vDimensions:array[0..1] of int32;vEventHandler:procedure()):tZComponent;
begin exit(self.addComponent('button',vCaption,vFont,vHandle,vPosition,vDimensions,@vEventHandler));end;
function eZForm.addButton(vCaption,vStyle,vID:string;vPosition:tPoint;vDimensions:array[0..1] of int32;vEventHandler:procedure()):eZElement;
begin
exit(self.addElement('button',vCaption,vStyle,vID,vPosition,vDimensions,@vEventHandler));
end;

function tZForm.addCheckbox(vCaption,vFont,vHandle:string;vPosition:tPoint;vEventHandler:procedure()):tZComponent;
begin exit(self.addComponent('checkbox',vCaption,vFont,vHandle,vPosition,[0,0],@vEventHandler));end;
function eZForm.addCheckbox(vCaption,vStyle,vID:string;vPosition:tPoint;vEventHandler:procedure()):eZElement;
begin
exit(self.addElement('checkbox',vCaption,vStyle,vID,vPosition,[0,0],@vEventHandler));
end;

function tZForm.addCombobox(vCaption:tStringArray;vFont,vHandle:string;vPosition:tPoint;vDimensions:array[0..1] of int32;vEventHandler:procedure()):tZComponent;
begin exit(self.addComponent('combobox',implode('|',vCaption),vFont,vHandle,vPosition,vDimensions,@vEventHandler));end;
function eZForm.addCombobox(vCaption:tStringArray;vStyle,vID:string;vPosition:tPoint;vWidth:int32;vEventHandler:procedure()):eZElement;
begin
exit(self.addElement('combobox',implode('|',vCaption),vStyle,vID,vPosition,[vWidth,0],@vEventHandler));
end;

function tZForm.addEdit(vCaption,vFont,vHandle:string;vPosition:tPoint;vDimensions:array[0..1] of int32;vEventHandler:procedure()):tZComponent;
begin exit(self.addComponent('edit',vCaption,vFont,vHandle,vPosition,vDimensions,@vEventHandler));end;
function eZForm.addEdit(vCaption,vStyle,vID:string;vPosition:tPoint;vWidth:int32;vEventHandler:procedure()):eZElement;
begin
exit(self.addElement('edit',vCaption,vStyle,vID,vPosition,[vWidth,0],@vEventHandler));
end;

function tZForm.addGroupbox(vCaption,vFont,vHandle:string;vPosition:tPoint;vDimensions:array[0..1] of int32):tZComponent;
begin exit(self.addComponent('groupbox',vCaption,vFont,vHandle,vPosition,vDimensions,nil));end;
function eZForm.addGroupbox(vCaption,vStyle,vID:string;vPosition:tPoint;vDimensions:array[0..1] of int32):eZElement;
begin
exit(self.addElement('groupbox',vCaption,vStyle,vID,vPosition,vDimensions,nil));
end;

function tZForm.addImage(vFilePath,vHandle:string;vPosition:tPoint;vDimensions:array[0..1] of int32;vEventHandler:procedure()):tZComponent;
begin exit(self.addComponent('image',vFilePath,'',vHandle,vPosition,vDimensions,@vEventHandler));end;
function eZForm.addImage(vFilePath,vID:string;vPosition:tPoint;vDimensions:array[0..1] of int32;vEventHandler:procedure()):eZElement;
begin
exit(self.addElement('image',vFilePath,'',vID,vPosition,vDimensions,@vEventHandler));
end;

function tZForm.addLabel(vCaption,vFont,vHandle:string;vPosition:tPoint):tZComponent;
begin exit(self.addComponent('label',vCaption,vFont,vHandle,vPosition,[0,0],nil));end;
function eZForm.addLabel(vCaption,vStyle,vID:string;vPosition:tPoint):eZElement;
begin
exit(self.addElement('label',vCaption,vStyle,vID,vPosition,[0,0],nil));
end;

function tZForm.addListbox(vCaption:tStringArray;vFont,vHandle:string;vPosition:tPoint;vDimensions:array[0..1] of int32;vEventHandler:procedure()):tZComponent;
begin exit(self.addComponent('listbox',implode('|',vCaption),vFont,vHandle,vPosition,vDimensions,@vEventHandler));end;
function eZForm.addListbox(vCaption:tStringArray;vStyle,vID:string;vPosition:tPoint;vDimensions:array[0..1] of int32;vEventHandler:procedure()):eZElement;
begin
exit(self.addElement('listbox',implode('|',vCaption),vStyle,vID,vPosition,vDimensions,@vEventHandler));
end;

function tZForm.addMemo(vCaption,vFont,vHandle:string;vPosition:tPoint;vDimensions:array[0..1] of int32;vEventHandler:procedure()):tZComponent;
begin exit(self.addComponent('memo',vCaption,vFont,vHandle,vPosition,vDimensions,@vEventHandler));end;
function eZForm.addMemo(vCaption,vStyle,vID:string;vPosition:tPoint;vDimensions:array[0..1] of int32;vEventHandler:procedure()):eZElement;
begin
exit(self.addElement('memo',vCaption,vStyle,vID,vPosition,vDimensions,@vEventHandler));
end;

function tZForm.addProgressbar(vValue:int32;vHandle:string;vPosition:tPoint;vDimensions:array[0..1] of int32):tZComponent;
begin exit(self.addComponent('progressbar',toStr(vValue),'',vHandle,vPosition,vDimensions,nil));end;
function eZForm.addProgressbar(vValue:int32;vID:string;vPosition:tPoint;vDimensions:array[0..1] of int32):eZElement;
begin
exit(self.addElement('progressbar',toStr(vValue),'',vID,vPosition,vDimensions,nil));
end;

function tZForm.addComponent(vComponent,vCaption,vFont,vHandle:string;vPosition:tPoint;vDimensions:array[0..1] of int32;vEventHandler:procedure()):tZComponent;
function eZForm.addElement(vElement,vCaption,vStyle,vID:string;vPosition:tPoint;vDimensions:array[0..1] of int32;vEventHandler:procedure()):eZElement;
var
_Component:tComponent;
_Element:tComponent;
_Font:tFont;
_FontColor,
_FontSize,
_Index:int32;
_FontStyle:tFontStyles;
_Index:int32;
_StringArray:tStringArray;
begin
if vFont<>'' then
if vStyle<>'' then
begin
with _Font do
begin
init();
if execRegExpr('(?i).*\bc(\d+)\b.*',vFont) then
begin
_FontColor:=strToInt(replaceRegExpr('(?i).*\bc(\d+)\b.*',vFont,'$1',true));
setColor(_FontColor);
end;
if execRegExpr('(?i).*\bs(\d+)\b.*',vFont) then
begin
_FontSize:=strToInt(replaceRegExpr('(?i).*\bs(\d+)\b.*',vFont,'$1',true));
setSize(_FontSize);
end;
if execRegExpr('(?i)\bb\b|bold',vFont) then
_FontStyle:=[0];
if execRegExpr('(?i)\bi\b|italic',vFont) then
_FontStyle:=_FontStyle+[1];
if execRegExpr('(?i)\bs\b|strikeout',vFont) then
_FontStyle:=_FontStyle+[2];
if execRegExpr('(?i)\bu\b|underline',vFont) then
_FontStyle:=_FontStyle+[3];
setStyle(_FontStyle);
if execRegExpr('(?i).*\bc(\d+)\b.*',vStyle) then
setColor(strToInt(replaceRegExpr('(?i).*\bc(\d+)\b.*',vStyle,'$1',true)));
if execRegExpr('(?i).*\bs(\d+)\b.*',vStyle) then
setSize(strToInt(replaceRegExpr('(?i).*\bs(\d+)\b.*',vStyle,'$1',true)));
if execRegExpr('(?i)\bb\b',vStyle) then
setStyle(getStyle()+[0]);
if execRegExpr('(?i)\bi\b',vStyle) then
setStyle(getStyle()+[1]);
if execRegExpr('(?i)\bs\b',vStyle) then
setStyle(getStyle()+[2]);
if execRegExpr('(?i)\bu\b',vStyle) then
setStyle(getStyle()+[3]);
end;
end;
case vComponent of
case vElement of
'button':
with tButton(_Component) do
with tButton(_Element) do
begin
init(self.__);
setCaption(replaceRegExpr('^$',vCaption,#0,false));
Expand All @@ -118,36 +164,36 @@ begin
if vDimensions[1] then
setHeight(vDimensions[1]);
setLeft(vPosition.x);
if vHandle<>'' then
setName(vHandle);
if vID<>'' then
setName(vID);
setOnClick(@vEventHandler);
setParent(self.__);
setTag(eZTagButton);
setTop(vPosition.y);
if vDimensions[0] then
setWidth(vDimensions[0]);
result:=tZComponent(_Component);
insert(tZComponent(_Component),ezFormComponentArray);
insert(eZElement(_Element),self.___);
result:=eZElement(_Element);
end;
'checkbox':
with tCheckbox(_Component) do
with tCheckbox(_Element) do
begin
init(self.__);
setCaption(replaceRegExpr('^$',vCaption,#0,false));
if _Font then
setFont(_Font);
setLeft(vPosition.x);
if vHandle<>'' then
setName(vHandle);
if vID<>'' then
setName(vID);
setOnChange(@vEventHandler);
setParent(self.__);
setTag(eZTagCheckbox);
setTop(vPosition.y);
result:=tZComponent(_Component);
insert(tZComponent(_Component),ezFormComponentArray);
insert(eZElement(_Element),self.___);
result:=eZElement(_Element);
end;
'combobox':
with tCombobox(_Component) do
with tCombobox(_Element) do
begin
init(self.__);
_StringArray:=explode('|',vCaption);
Expand All @@ -157,8 +203,8 @@ begin
if _Font then
setFont(_Font);
setLeft(vPosition.x);
if vHandle<>'' then
setName(vHandle);
if vID<>'' then
setName(vID);
if length(_StringArray) then
setItemIndex(0);
setParent(self.__);
Expand All @@ -168,11 +214,11 @@ begin
setTop(vPosition.y);
if vDimensions[0] then
setWidth(vDimensions[0]);
result:=tZComponent(_Component);
insert(tZComponent(_Component),ezFormComponentArray);
insert(eZElement(_Element),self.___);
result:=eZElement(_Element);
end;
'edit':
with tEdit(_Component) do
with tEdit(_Element) do
begin
init(self.__);
setCaption(replaceRegExpr('^$',vCaption,#0,false));
Expand All @@ -181,19 +227,19 @@ begin
if vDimensions[1] then
setHeight(vDimensions[1]);
setLeft(vPosition.x);
if vHandle<>'' then
setName(vHandle);
if vID<>'' then
setName(vID);
setOnChange(@vEventHandler);
setParent(self.__);
setTag(eZTagEdit);
setTop(vPosition.y);
if vDimensions[0] then
setWidth(vDimensions[0]);
result:=tZComponent(_Component);
insert(tZComponent(_Component),ezFormComponentArray);
insert(eZElement(_Element),self.___);
result:=eZElement(_Element);
end;
'groupbox':
with tGroupbox(_Component) do
with tGroupbox(_Element) do
begin
init(self.__);
setCaption(replaceRegExpr('^$',vCaption,#0,false));
Expand All @@ -202,30 +248,32 @@ begin
if vDimensions[1] then
setHeight(vDimensions[1]);
setLeft(vPosition.x);
if vHandle<>'' then
setName(vHandle);
if vID<>'' then
setName(vID);
setParent(self.__);
setTag(eZTagGroupbox);
setTop(vPosition.y);
if vDimensions[0] then
setWidth(vDimensions[0]);
result:=tZComponent(_Component);
insert(tZComponent(_Component),ezFormComponentArray);
insert(eZElement(_Element),self.___);
result:=eZElement(_Element);
end;
'image':
begin
with tImage(_Component) do
with tImage(_Element) do
begin
init(self.__);
setCaption(vCaption);
if vDimensions[1] then
setHeight(vDimensions[1]);
setLeft(vPosition.x);
if vHandle<>'' then
setName(vHandle);
if vID<>'' then
setName(vID);
if @vEventHandler<>nil then
setCursor(-21);
setOnClick(@vEventHandler);
setParent(self.__);
if execRegExpr('^http:\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$',vCaption) then
if execRegExpr('^https?:\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$',vCaption) then
try
getPicture().loadFromURL(vCaption);
except end
Expand All @@ -239,28 +287,28 @@ begin
setTop(vPosition.y);
if vDimensions[0] then
setWidth(vDimensions[0]);
result:=tZComponent(_Component);
insert(tZComponent(_Component),ezFormComponentArray);
insert(eZElement(_Element),self.___);
result:=eZElement(_Element);
end;
end;
'label':
with tLabel(_Component) do
with tLabel(_Element) do
begin
init(self.__);
setCaption(replaceRegExpr('^$',vCaption,#0,false));
if _Font then
setFont(_Font);
setLeft(vPosition.x);
if vHandle<>'' then
setName(vHandle);
if vID<>'' then
setName(vID);
setParent(self.__);
setTag(eZTagLabel);
setTop(vPosition.y);
result:=tZComponent(_Component);
insert(tZComponent(_Component),ezFormComponentArray);
insert(eZElement(_Element),self.___);
result:=eZElement(_Element);
end;
'listbox':
with tListbox(_Component) do
with tListbox(_Element) do
begin
init(self.__);
_StringArray:=explode('|',vCaption);
Expand All @@ -273,19 +321,19 @@ begin
if vDimensions[1] then
setHeight(vDimensions[1]);
setLeft(vPosition.x);
if vHandle<>'' then
setName(vHandle);
if vID<>'' then
setName(vID);
setOnClick(@vEventHandler);
setParent(self.__);
setTag(eZTagListbox);
setTop(vPosition.y);
if vDimensions[0] then
setWidth(vDimensions[0]);
result:=tZComponent(_Component);
insert(tZComponent(_Component),ezFormComponentArray);
insert(eZElement(_Element),self.___);
result:=eZElement(_Element);
end;
'memo':
with tMemo(_Component) do
with tMemo(_Element) do
begin
init(self.__);
setCaption(replaceRegExpr('^$',vCaption,#0,false));
Expand All @@ -294,8 +342,8 @@ begin
if vDimensions[1] then
setHeight(vDimensions[1]);
setLeft(vPosition.x);
if vHandle<>'' then
setName(vHandle);
if vID<>'' then
setName(vID);
setOnChange(@vEventHandler);
setParent(self.__);
setTag(eZTagMemo);
Expand All @@ -304,20 +352,20 @@ begin
setWordWrap(true);
if vDimensions[0] then
setWidth(vDimensions[0]);
result:=tZComponent(_Component);
insert(tZComponent(_Component),ezFormComponentArray);
insert(eZElement(_Element),self.___);
result:=eZElement(_Element);
end;
'progressbar':
with tProgressbar(_Component) do
with tProgressbar(_Element) do
begin
init(self.__);
if vDimensions[1] then
setHeight(vDimensions[1]);
setLeft(vPosition.x);
setMax(100);
setMin(0);
if vHandle<>'' then
setName(vHandle);
if vID<>'' then
setName(vID);
setParent(self.__);
if execRegExpr('^\d+$',vCaption) then
setPosition(strToInt(vCaption));
Expand All @@ -326,172 +374,298 @@ begin
setTop(vPosition.y);
if vDimensions[0] then
setWidth(vDimensions[0]);
result:=tZComponent(_Component);
insert(tZComponent(_Component),ezFormComponentArray);
insert(eZElement(_Element),self.___);
result:=eZElement(_Element);
end;
end;
end;

function tZForm.find():tZComponentArray;
function eZForm.create(vTitle:string=''):eZForm;
begin
exit(ezFormComponentArray);
if self.__=nil then
begin
with self.__ do
begin
init(nil);
setBorderIcons([biSystemMenu,biMinimize]);
setBorderStyle(3);
setCaption(vTitle:=replaceRegExpr('^$',vTitle,'eZForm',false));
setPosition(poScreenCenter);
end;
insert(self,__eZFormArray);
addOnTerminate('eZFormFree');
end;
exit(self);
end;

function eZForm.disabled():boolean;
begin
exit(self.prop('disabled'));
end;

function tZForm.find(vSelector:string):tZComponentArray;overload;
function eZForm.disabled(vDisabled:int32):eZForm;overload;
begin
exit(self.prop('disabled',vDisabled));
end;

function eZForm.find():eZElementArray;
begin
exit(self.___);
end;

function eZForm.find(vSelector:string):eZElementArray;overload;
var
_Index,
_ResultIndex:int32;
begin
setLength(result,self.__.getComponentCount());
if execRegExpr('^#[\w-]+$',vSelector:=lowercase(vSelector)) then
begin
result[0]:=tZComponent(self.__.findComponent(replaceRegExpr('^#([\w-]+)$',vSelector,'$1',true)));
result[0]:=eZElement(self.__.findComponent(replaceRegExpr('^#([\w-]+)$',vSelector,'$1',true)));
_ResultIndex:=1;
end
else if execRegExpr('^[A-z]+$',vSelector) then
for _Index to high(ezFormComponentArray) do
if ezFormComponentArray[_Index].prop('tagname')=vSelector then
for _Index to high(self.___) do
if self.___[_Index].prop('tagname')=vSelector then
begin
result[_ResultIndex]:=ezFormComponentArray[_Index];
result[_ResultIndex]:=self.___[_Index];
_ResultIndex+=1;
end;
setLength(result,_ResultIndex);
exit(result);
end;

function tZForm.height():int32;
function eZForm.height():int32;
begin
exit(self.__.getHeight());
exit(self.prop('height'));
end;

function tZForm.height(vValue:int32):tZForm;overload;
function eZForm.height(vHeight:int32):eZForm;overload;
begin
self.__.setHeight(vValue);
exit(self.prop('height',vHeight));
end;

function eZForm.hide():eZForm;
begin
if self.__.getTag() then
self.prop('visible',false);
exit(self);
end;

function tZForm.new(vTitle:string='';vDimensions:array[0..1] of int32=[0,0]):tZForm;
function eZForm.offsetLeft():int32;
begin
with self.__ do
begin
init(nil);
setBorderIcons([biSystemMenu,biMinimize]);
setBorderStyle(3);
setCaption(vTitle:=replaceRegExpr('^$',vTitle,'tZForm',false));
if vDimensions[1] then
setHeight(vDimensions[1]);
setPosition(poScreenCenter);
if vDimensions[0] then
setWidth(vDimensions[0]);
exit(self.prop('offsetLeft'));
end;

function eZForm.offsetLeft(vOffsetLeft:int32):eZForm;overload;
begin
exit(self.prop('offsetleft',vOffsetLeft));
end;

function eZForm.offsetTop():int32;
begin
exit(self.prop('offsetTop'));
end;

function eZForm.offsetTop(vOffsetTop:int32):eZForm;overload;
begin
exit(self.prop('offsettop',vOffsetTop));
end;

function eZForm.prop(vProperty:string):variant;
begin
if self.__<>nil then
case lowercase(vProperty) of
'disabled':result:=self.__.getEnabled();
'height':result:=self.__.getHeight();
'text':result:=self.__.getCaption();
'offsetleft':result:=self.__.getLeft();
'offsettop':result:=self.__.getTop();
'visible':result:=self.__.getVisible();
'width':result:=self.__.getHeight();
end;
exit(result);
end;

function eZForm.prop(vProperty:string;vValue:variant):eZForm;overload;
begin
case lowercase(vProperty) of
'disabled':
if varType(vValue)=varBoolean then
self.__.setEnabled(not vValue);
'height':
if varType(vValue)=varInteger then
self.__.setHeight(vValue);
'offsetleft':
if varType(vValue)=varInteger then
self.__.setLeft(vValue);
'offsettop':
if varType(vValue)=varInteger then
self.__.setTop(vValue);
'text':
if (varType(vValue)=varInteger) or (varType(vValue)=varString) then
self.__.setCaption(toStr(vValue));
'title':
if (varType(vValue)=varInteger) or (varType(vValue)=varString) then
begin
self.__.setHint(toStr(vValue));
self.__.setShowHint(vValue<>'');
end;
'visible':
if varType(vValue)=varBoolean then
self.__.setVisible(vValue);
'width':
if varType(vValue)=varInteger then
self.__.setWidth(vValue);
end;
addOnTerminate('pzFormFree');
exit(self);
end;

procedure tZForm.remove(vComponent:tZComponent);
{function eZForm.remove(vElement:eZElement):eZForm;
begin
ezFormComponentArray:=ezFormComponentArray.delete(vComponent);
vComponent.hide();
vComponent.__.free();
self.___:=self.___.delete(vElement);
vElement.hide();
vElement.__.free();
exit(self);
end;

procedure tZForm.remove(vHandle:string);overload;
function eZForm.remove(vSelector:string):eZForm;overload;
var
_Index:int32;
begin
ezFormComponentArray:=eZFormComponentArray.delete(tZComponent(self.__.findComponent(vHandle)));
tZComponent(self.__.findComponent(vHandle)).hide();
self.__.findComponent(vHandle).free();
if execRegExpr('^#[\w-]+$',vSelector:=lowercase(vSelector)) then
begin
vSelector:=replaceRegExpr('^#([\w-]+)$',vSelector,'$1',true);
for _Index to high(self.___) do
if self.___[_Index].id()=vSelector then
begin
self.remove(self.___[_Index]);
break;
end;
end
else if execRegExpr('^[A-z]+$',vSelector) then
for _Index to high(self.___) do
if self.___[_Index].tagName()=vSelector then
self.remove(self.___[_Index]);
exit(self);
end;}

procedure eZForm.show();
begin
if self.__.getTag() then
self.prop('visible',true)
else
if self.__<>nil then
begin
__eZForm:=self;
sync(eZFormShow);
end;
end;

function tZForm.show():boolean;
function eZForm.text():string;
begin
sync(pZFormShow);
exit(self.prop('text'));
end;

function tZForm.width():int32;
function eZForm.text(vText:variant):eZForm;overload;
begin
exit(self.__.getWidth());
exit(self.prop('text',vText));
end;

function tZForm.width(vValue:int32):tZForm;overload;
function eZForm.title():string;
begin
self.__.setWidth(vValue);
exit(self);
exit(self.prop('title'));
end;

function eZForm.title(vTitle:variant):eZForm;overload;
begin
exit(self.prop('title',vTitle));
end;

function eZForm.visible():boolean;
begin
exit(self.prop('visible'));
end;

function eZForm.visible(vVisible:boolean):eZForm;overload;
begin
exit(self.prop('visible',vVisible));
end;

function eZForm.width():int32;
begin
exit(self.prop('width'));
end;

function eZForm.width(vWidth:int32):eZForm;overload;
begin
exit(self.prop('width',vWidth));
end;

(*
tZFormComponent Methods
eZElement Methods
*)

function tZComponent.be(vProperty:string):boolean;
function eZElement.be(vProperty:string):boolean;
begin
if self.__<>nil then
case lowercase(vProperty) of
'button':result:=self.__.getTag()=eZTagButton;
'checkbox':result:=self.__.getTag()=eZTagCheckbox;
'combobox':result:=self.__.getTag()=eZTagCombobox;
'checked':
case self.__.getTag() of
eZTagCheckbox:result:=tCheckbox(self.__).getState()=1;
end;
'disabled':
case self.__.getTag() of
eZTagButton:result:=not tButton(self.__).getEnabled();
eZTagCheckbox:result:=not tCheckbox(self.__).getEnabled();
eZTagEdit:result:=not tEdit(self.__).getEnabled();
eZTagListbox:result:=not tListbox(self.__).getEnabled();
eZTagMemo:result:=not tMemo(self.__).getEnabled();
end;
'edit':result:=self.__.getTag()=eZTagEdit;
'groupbox':result:=self.__.getTag()=eZTagGroupbox;
'image':result:=self.__.getTag()=eZTagImage;
'label':result:=self.__.getTag()=eZTagLabel;
'listbox':result:=self.__.getTag()=eZTagListbox;
'memo':result:=self.__.getTag()=eZTagMemo;
'password':
case self.__.getTag() of
eZTagEdit:result:=tEdit(self.__).getPasswordChar()<>#0;
eZTagMemo:result:=tMemo(self.__).getPasswordChar()<>#0;
end;
'progressbar':result:=self.__.getTag()=eZTagProgressBar;
'readonly':
case self.__.getTag() of
eZTagCombobox:result:=tCombobox(self.__).getReadOnly();
eZTagEdit:result:=tEdit(self.__).getReadOnly();
eZTagMemo:result:=tMemo(self.__).getReadOnly();
end;
'visible':
case self.__.getTag() of
eZTagButton:result:=tButton(self.__).getVisible();
eZTagCheckbox:result:=tCheckbox(self.__).getVisible();
eZTagCombobox:result:=tCombobox(self.__).getVisible();
eZTagEdit:result:=tEdit(self.__).getVisible();
eZTagGroupbox:result:=tGroupbox(self.__).getVisible();
eZTagImage:result:=tImage(self.__).getVisible();
eZTagLabel:result:=tLabel(self.__).getVisible();
eZTagListbox:result:=tListbox(self.__).getVisible();
eZTagMemo:result:=tMemo(self.__).getVisible();
eZTagProgressBar:result:=tProgressBar(self.__).getVisible();
end;
case (vProperty:=lowercase(vProperty)) of
'button','checkbox','combobox','edit','groupbox','image','listbox','memo','progressbar':result:=self.tagName()=vProperty;
'checked':result:=self.checked();
'disabled':result:=self.disabled();
'password':result:=self.password();
'readonly':result:=self.readonly();
'visible':result:=self.visible();
end;
exit(result);
end;

function tZComponent.checked():boolean;
function eZElement.checked():boolean;
begin
exit(self.prop('checked'));
end;

function tZComponent.checked(vChecked:boolean):tZComponent;overload;
function eZElement.checked(vChecked:boolean):eZElement;overload;
begin
exit(self.prop('checked',vChecked));
end;

function tZComponent.equals(vComponent:tZComponent):boolean;
function eZElement.color():int32;
begin
exit(self.prop('color'));
end;

function eZElement.color(vColor:int32):eZElement;overload;
begin
exit(self.prop('color',vColor));
end;

function eZElement.cols():int32;
begin
exit(self.prop('cols'));
end;

function eZElement.cols(vCols:int32):eZElement;overload;
begin
exit(self.__=vComponent.__);
exit(self.prop('cols',vCols));
end;

function tZComponent.equals(vSelector:string):boolean;overload;
function eZElement.disabled():boolean;
begin
exit(self.prop('disabled'));
end;

function eZElement.disabled(vDisabled:boolean):eZElement;overload;
begin
exit(self.prop('disabled',vDisabled));
end;

function eZElement.equals(vElement:eZElement):boolean;
begin
exit(self.__=vElement.__);
end;

function eZElement.equals(vSelector:string):boolean;overload;
begin
if execRegExpr('^#[\w-]+$',vSelector:=lowercase(vSelector)) then
result:=lowercase(self.__.getName())=replaceRegExpr('^#([\w-]+)$',vSelector,'$1',true)
Expand All @@ -500,65 +674,84 @@ begin
exit(result);
end;

function tZComponent.handle():string;
function eZElement.height():int32;
begin
exit(self.prop('handle'));
exit(self.prop('height'));
end;

function tZComponent.handle(vHandle:string):tZComponent;overload;
function eZElement.height(vHeight:int32):eZElement;overload;
begin
exit(self.prop('handle',vHandle));
exit(self.prop('height',vHeight));
end;

function tZComponent.height():int32;
function eZElement.hide():eZElement;
begin
exit(self.prop('height'));
exit(self.prop('visible',false));
end;

function tZComponent.height(vHeight:int32):tZComponent;overload;
function eZElement.id():string;
begin
exit(self.prop('height',vHeight));
exit(self.prop('id'));
end;

function tZComponent.hide():tZComponent;
function eZElement.id(vID:string):eZElement;overload;
begin
exit(self.prop('visible',false));
exit(self.prop('id',vID));
end;

function tZComponent.offset():tPoint;
function eZElement.maxLength():int32;
begin
result:=[self.prop('offsetleft'),self.prop('offsettop')];
exit(result);
exit(self.prop('maxLength'));
end;

function tZComponent.offset(vPosition:tPoint):tZComponent;overload;
function eZElement.maxLength(vMaxLength:int32):eZElement;overload;
begin
self.prop('offsetleft',vPosition.x);
self.prop('offsettop',vPosition.y);
exit(self);
exit(self.prop('maxLength',vMaxLength));
end;

function tZComponent.password():boolean;
function eZElement.multiple():boolean;
begin
exit(self.prop('password'));
exit(self.prop('multiple'));
end;

function eZElement.multiple(vMultiple:boolean):eZElement;overload;
begin
exit(self.prop('multiple',vMultiple));
end;

function eZElement.offsetLeft():int32;
begin
exit(self.prop('offsetLeft'));
end;

function eZElement.offsetLeft(vOffsetLeft:int32):eZElement;overload;
begin
exit(self.prop('offsetLeft',vOffsetLeft));
end;

function eZElement.offsetTop():int32;
begin
exit(self.prop('offsetTop'));
end;

function tZComponent.password(vValue:boolean):tZComponent;overload;
function eZElement.offsetTop(vOffsetTop:int32):eZElement;overload;
begin
exit(self.prop('password',vValue));
exit(self.prop('offsetTop',vOffsetTop));
end;

function tZComponent.position():tPoint;
function eZElement.password():boolean;
begin
exit(self.offset());
exit(self.prop('password'));
end;

function tZComponent.position(vPosition:tPoint):tZComponent;overload;
function eZElement.password(vPassword:boolean):eZElement;overload;
begin
exit(self.offset(vPosition));
exit(self.prop('password',vPassword));
end;

function tZComponent.prop(vProperty:string):variant;
function eZElement.prop(vProperty:string):variant;
var
_Font:tFont;
begin
if self.__<>nil then
case lowercase(vProperty) of
Expand All @@ -568,56 +761,27 @@ begin
end;
'color':
case self.__.getTag() of
eZTagButton:result:=tButton(self.__).getFont().getColor();
eZTagCheckbox:result:=tCheckbox(self.__).getFont().getColor();
eZTagCombobox:result:=tCombobox(self.__).getFont().getColor();
eZTagEdit:result:=tEdit(self.__).getFont().getColor();
eZTagGroupbox:result:=tGroupbox(self.__).getFont().getColor();
eZTagLabel:result:=tLabel(self.__).getFont().getColor();
eZTagListbox:result:=tListbox(self.__).getFont().getColor();
eZTagMemo:result:=tMemo(self.__).getFont().getColor();
eZTagButton..eZTagGroupbox,eZTagLabel..eZTagMemo:result:=tButton(self.__).getFont().getColor();
end;
'cols':
case self.__.getTag() of
eZTagListbox:result:=tListbox(self.__).getColumns();
end;
'disabled':
case self.__.getTag() of
eZTagButton:result:=not tButton(self.__).getEnabled();
eZTagCheckbox:result:=not tCheckbox(self.__).getEnabled();
eZTagCombobox:result:=not tCheckbox(self.__).getEnabled();
eZTagEdit:result:=not tEdit(self.__).getEnabled();
eZTagMemo:result:=not tMemo(self.__).getEnabled();
eZTagButton..eZTagEdit,eZTagMemo:result:=not tButton(self.__).getEnabled();
end;
'handle':
'height':
case self.__.getTag() of
eZTagButton:result:=tButton(self.__).getName();
eZTagCheckbox:result:=tCheckbox(self.__).getName();
eZTagCombobox:result:=tCombobox(self.__).getName();
eZTagEdit:result:=tEdit(self.__).getName();
eZTagGroupbox:result:=tGroupbox(self.__).getName();
eZTagImage:result:=tImage(self.__).getName();
eZTagLabel:result:=tLabel(self.__).getName();
eZTagListbox:result:=tListbox(self.__).getName();
eZTagMemo:result:=tMemo(self.__).getName();
eZTagProgressBar:result:=tProgressBar(self.__).getName();
eZTagButton..eZTagProgressBar:result:=tButton(self.__).getHeight();
end;
'height':
'id':
case self.__.getTag() of
eZTagButton:result:=tButton(self.__).getHeight();
eZTagCheckbox:result:=tCheckbox(self.__).getHeight();
eZTagCombobox:result:=tCheckbox(self.__).getHeight();
eZTagEdit:result:=tEdit(self.__).getHeight();
eZTagGroupbox:result:=tGroupbox(self.__).getHeight();
eZTagImage:result:=tImage(self.__).getHeight();
eZTagLabel:result:=tLabel(self.__).getHeight();
eZTagListbox:result:=tListbox(self.__).getHeight();
eZTagMemo:result:=tMemo(self.__).getHeight();
eZTagButton..eZTagProgressBar:result:=tButton(self.__).getName();
end;
'maxlength':
case self.__.getTag() of
eZTagEdit:result:=tEdit(self.__).getMaxLength();
eZTagMemo:result:=tMemo(self.__).getMaxLength();
eZTagEdit,eZTagMemo:result:=tEdit(self.__).getMaxLength();
end;
'multiple':
case self.__.getTag() of
Expand All @@ -626,45 +790,44 @@ begin
end;
'offsetleft':
case self.__.getTag() of
eZTagButton:result:=tButton(self.__).getLeft();
eZTagCheckbox:result:=tCheckbox(self.__).getLeft();
eZTagCombobox:result:=tCheckbox(self.__).getLeft();
eZTagEdit:result:=tEdit(self.__).getLeft();
eZTagGroupbox:result:=tGroupbox(self.__).getLeft();
eZTagImage:result:=tImage(self.__).getLeft();
eZTagLabel:result:=tLabel(self.__).getLeft();
eZTagListbox:result:=tListbox(self.__).getLeft();
eZTagMemo:result:=tMemo(self.__).getLeft();
eZTagProgressBar:result:=tProgressBar(self.__).getLeft();
eZTagButton..eZTagProgressBar:result:=tButton(self.__).getLeft();
end;
'offsettop':
case self.__.getTag() of
eZTagButton:result:=tButton(self.__).getTop();
eZTagCheckbox:result:=tCheckbox(self.__).getTop();
eZTagCombobox:result:=tCheckbox(self.__).getTop();
eZTagEdit:result:=tEdit(self.__).getTop();
eZTagGroupbox:result:=tGroupbox(self.__).getTop();
eZTagImage:result:=tImage(self.__).getTop();
eZTagLabel:result:=tLabel(self.__).getTop();
eZTagListbox:result:=tListbox(self.__).getTop();
eZTagMemo:result:=tMemo(self.__).getTop();
eZTagProgressBar:result:=tProgressBar(self.__).getTop();
eZTagButton..eZTagProgressBar:result:=tButton(self.__).getTop();
end;
'password':
case self.__.getTag() of
eZTagEdit:result:=tEdit(self.__).getPasswordChar()<>#0;
eZTagMemo:result:=tMemo(self.__).getPasswordChar()<>#0;
eZTagEdit,eZTagMemo:result:=tEdit(self.__).getPasswordChar()<>#0;
end;
'readonly':
case self.__.getTag() of
eZTagCombobox:result:=tCombobox(self.__).getReadOnly();
eZTagEdit:result:=tEdit(self.__).getReadOnly();
eZTagMemo:result:=tMemo(self.__).getReadOnly();
eZTagCombobox..eZTagEdit,eZTagMemo:result:=tCombobox(self.__).getReadOnly();
end;
'src':
case self.__.getTag() of
eZTagImage:result:=tImage(self.__).getCaption();
end;
'style':
begin
case self.__.getTag() of
eZTagButton..eZTagGroupbox,eZTagLabel..eZTagMemo:_Font:=tButton(self.__).getFont();
end;
if _Font then
begin
result:='c'+toStr(_Font.getColor());
if fsBold in _Font.getStyle() then
result:=result+' b';
if fsItalic in _Font.getStyle() then
result:=result+' i';
if fsStrikeOut in _Font.getStyle() then
result:=result+' s';
if _Font.getSize() then
result:=result+' s'+toStr(_Font.getSize());
if fsUnderline in _Font.getStyle() then
result:=result+' u';
end;
end;
'tagname':
case self.__.getTag() of
eZTagButton:result:='button';
Expand All @@ -678,45 +841,29 @@ begin
eZTagMemo:result:='memo';
eZTagProgressBar:result:='progressbar';
end;
'text':
case self.__.getTag() of
eZTagButton..eZTagCheckbox,eZTagGroupbox,eZTagLabel:result:=tButton(self.__).getCaption();
end;
'value':
case self.__.getTag() of
eZTagCombobox:result:=tCombobox(self.__).getText();
eZTagEdit:result:=tEdit(self.__).getText();
eZTagCombobox..eZTagEdit,eZTagMemo:result:=tCombobox(self.__).getText();
eZTagListbox:result:=tListbox(self.__).getSelectedText();
eZTagMemo:result:=tMemo(self.__).getText();
eZTagProgressBar:result:=tProgressBar(self.__).getPosition();
end;
'visible':
case self.__.getTag() of
eZTagButton:result:=tButton(self.__).getVisible();
eZTagCheckbox:result:=tCheckbox(self.__).getVisible();
eZTagCombobox:result:=tCombobox(self.__).getVisible();
eZTagEdit:result:=tEdit(self.__).getVisible();
eZTagGroupbox:result:=tGroupbox(self.__).getVisible();
eZTagImage:result:=tImage(self.__).getVisible();
eZTagLabel:result:=tLabel(self.__).getVisible();
eZTagListbox:result:=tListbox(self.__).getVisible();
eZTagMemo:result:=tMemo(self.__).getVisible();
eZTagProgressBar:result:=tProgressBar(self.__).getVisible();
eZTagButton..eZTagProgressBar:result:=tButton(self.__).getVisible();
end;
'width':
case self.__.getTag() of
eZTagButton:result:=tButton(self.__).getWidth();
eZTagCheckbox:result:=tCheckbox(self.__).getWidth();
eZTagCombobox:result:=tCombobox(self.__).getWidth();
eZTagEdit:result:=tEdit(self.__).getWidth();
eZTagGroupbox:result:=tGroupbox(self.__).getWidth();
eZTagImage:result:=tImage(self.__).getWidth();
eZTagLabel:result:=tLabel(self.__).getWidth();
eZTagListbox:result:=tListbox(self.__).getWidth();
eZTagMemo:result:=tMemo(self.__).getWidth();
eZTagProgressBar:result:=tProgressBar(self.__).getWidth();
eZTagButton..eZTagProgressBar:result:=tButton(self.__).getWidth();
end;
end;
exit(result);
end;

function tZComponent.prop(vProperty:string;vValue:variant):tZComponent;overload;
function eZElement.prop(vProperty:string;vValue:variant):eZElement;overload;
var
_Font:tFont;
begin
Expand All @@ -730,14 +877,7 @@ begin
'color':
if varType(vValue)=varInteger then
case self.__.getTag() of
eZTagButton:tButton(self.__).getFont().setColor(vValue);
eZTagCheckbox:tCheckbox(self.__).getFont().setColor(vValue);
eZTagCheckbox:tCombobox(self.__).getFont().setColor(vValue);
eZTagEdit:tEdit(self.__).getFont().setColor(vValue);
eZTagGroupbox:tGroupbox(self.__).getFont().setColor(vValue);
eZTagLabel:tLabel(self.__).getFont().setColor(vValue);
eZTagListbox:tListbox(self.__).getFont().setColor(vValue);
eZTagMemo:tMemo(self.__).getFont().setColor(vValue);
eZTagButton..eZTagGroupbox,eZTagLabel..eZTagMemo:tButton(self.__).getFont().setColor(vValue);
end;
'cols':
if varType(vValue)=varInteger then
Expand All @@ -747,42 +887,22 @@ begin
'disabled':
if varType(vValue)=varBoolean then
case self.__.getTag() of
eZTagButton:tButton(self.__).setEnabled(not vValue);
eZTagCheckbox:tCheckbox(self.__).setEnabled(not vValue);
eZTagCombobox:tCheckbox(self.__).setEnabled(not vValue);
eZTagEdit:tEdit(self.__).setEnabled(not vValue);
eZTagListbox:tListbox(self.__).setEnabled(not vValue);
eZTagMemo:tMemo(self.__).setEnabled(not vValue);
end;
'handle':
if varType(vValue)=varString then
case self.__.getTag() of
eZTagButton:tButton(self.__).setName(vValue);
eZTagCheckbox:tCheckbox(self.__).setName(vValue);
eZTagCombobox:tCombobox(self.__).setName(vValue);
eZTagEdit:tEdit(self.__).setName(vValue);
eZTagGroupbox:tGroupbox(self.__).setName(vValue);
eZTagImage:tImage(self.__).setName(vValue);
eZTagLabel:tLabel(self.__).setName(vValue);
eZTagListbox:tListbox(self.__).setName(vValue);
eZTagMemo:tMemo(self.__).setName(vValue);
eZTagProgressBar:tProgressBar(self.__).setName(vValue);
eZTagButton..eZTagEdit,eZTagListbox..eZTagMemo:tButton(self.__).setEnabled(not vValue);
end;
'height':
if varType(vValue)=varInteger then
case self.__.getTag() of
eZTagButton:tButton(self.__).setHeight(vValue);
eZTagGroupbox:tGroupbox(self.__).setHeight(vValue);
eZTagImage:tImage(self.__).setHeight(vValue);
eZTagListbox:tListbox(self.__).setHeight(vValue);
eZTagMemo:tMemo(self.__).setHeight(vValue);
eZTagProgressBar:tProgressBar(self.__).setHeight(vValue);
eZTagButton,eZTagGroupbox..eZTagImage,eZTagListbox..eZTagProgressBar:tButton(self.__).setHeight(vValue);
end;
'id':
if varType(vValue)=varString then
case self.__.getTag() of
eZTagButton..eZTagProgressBar:tButton(self.__).setName(vValue);
end;
'maxlength':
if varType(vValue)=varInteger then
case self.__.getTag() of
eZTagEdit:tEdit(self.__).setMaxLength(vValue);
eZTagMemo:tMemo(self.__).setMaxLength(vValue);
eZTagEdit,eZTagMemo:tEdit(self.__).setMaxLength(vValue);
end;
'multiple':
if varType(vValue)=varBoolean then
Expand All @@ -793,59 +913,34 @@ begin
'offsetleft':
if varType(vValue)=varInteger then
case self.__.getTag() of
eZTagButton:tButton(self.__).setLeft(vValue);
eZTagCheckbox:tCheckbox(self.__).setLeft(vValue);
eZTagCombobox:tCheckbox(self.__).setLeft(vValue);
eZTagEdit:tEdit(self.__).setLeft(vValue);
eZTagGroupbox:tGroupbox(self.__).setLeft(vValue);
eZTagImage:tImage(self.__).setLeft(vValue);
eZTagLabel:tLabel(self.__).setLeft(vValue);
eZTagListbox:tListbox(self.__).setLeft(vValue);
eZTagMemo:tMemo(self.__).setLeft(vValue);
eZTagProgressBar:tProgressBar(self.__).setLeft(vValue);
eZTagButton..eZTagProgressBar:tButton(self.__).setLeft(vValue);
end;
'offsettop':
if varType(vValue)=varInteger then
case self.__.getTag() of
eZTagButton:tButton(self.__).setTop(vValue);
eZTagCheckbox:tCheckbox(self.__).setTop(vValue);
eZTagCombobox:tCheckbox(self.__).setTop(vValue);
eZTagEdit:tEdit(self.__).setTop(vValue);
eZTagGroupbox:tGroupbox(self.__).setTop(vValue);
eZTagImage:tImage(self.__).setTop(vValue);
eZTagLabel:tLabel(self.__).setTop(vValue);
eZTagListbox:tListbox(self.__).setTop(vValue);
eZTagMemo:tMemo(self.__).setTop(vValue);
eZTagProgressBar:tProgressBar(self.__).setTop(vValue);
eZTagButton..eZTagButton:tProgressBar(self.__).setTop(vValue);
end;
'password':
if varType(vValue)=varBoolean then
case self.__.getTag() of
eZTagEdit:
eZTagEdit,eZTagMemo:
if vValue then
tEdit(self.__).setPasswordChar(chr(0149))
else
tEdit(self.__).setPasswordChar(chr(0));
eZTagMemo:
if vValue then
tMemo(self.__).setPasswordChar(chr(0149))
else
tMemo(self.__).setPasswordChar(chr(0));
end;
'readonly':
if varType(vValue)=varBoolean then
case self.__.getTag() of
eZTagCombobox:tCombobox(self.__).setReadOnly(vValue);
eZTagEdit:tEdit(self.__).setReadOnly(vValue);
eZTagMemo:tMemo(self.__).setReadOnly(vValue);
eZTagCombobox..eZTagEdit,eZTagMemo:tCombobox(self.__).setReadOnly(vValue);
end;
'src':
if varType(vValue)=varString then
case self.__.getTag() of
eZTagImage:
begin
tImage(self.__).setCaption(vValue);
if execRegExpr('^http:\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$',vValue) then
if execRegExpr('^https?:\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$',vValue) then
try
tImage(self.__).getPicture().loadFromURL(vValue);
except end
Expand All @@ -856,68 +951,49 @@ begin
except end;
end;
end;
'style':
if varType(vValue)=varString then
begin
with _Font do
begin
init();
if execRegExpr('(?i).*\bc(\d+)\b.*',vValue) then
setColor(strToInt(replaceRegExpr('(?i).*\bc(\d+)\b.*',vValue,'$1',true)));
if execRegExpr('(?i).*\bs(\d+)\b.*',vValue) then
setSize(strToInt(replaceRegExpr('(?i).*\bs(\d+)\b.*',vValue,'$1',true)));
if execRegExpr('(?i)\bb\b|bold',vValue) then
setStyle(getStyle()+[0]);
if execRegExpr('(?i)\bi\b|italic',vValue) then
setStyle(getStyle()+[1]);
if execRegExpr('(?i)\bs\b|strikeout',vValue) then
setStyle(getStyle()+[2]);
if execRegExpr('(?i)\bu\b|underline',vValue) then
setStyle(getStyle()+[3]);
end;
case self.__.getTag() of
eZTagButton..eZTagGroupbox,eZTagLabel..eZTagMemo:tButton(self.__).setFont(_Font);
end;
end;
'text':
if (varType(vValue)=varInteger) or (varType(vValue)=varString) then
case self.__.getTag() of
eZTagButton..eZTagCheckbox,eZTagGroupbox,eZTagLabel:tButton(self.__).setCaption(toStr(vValue));
end;
'title':
if varType(vValue)=varString then
begin
case self.__.getTag() of
eZTagButton:
eZTagButton..eZTagProgressBar:
begin
tButton(self.__).setHint(vValue);
tButton(self.__).setShowHint(vValue<>'');
end;
eZTagCheckbox:
begin
tCheckbox(self.__).setHint(vValue);
tCheckbox(self.__).setShowHint(vValue<>'');
end;
eZTagCombobox:
begin
tCombobox(self.__).setHint(vValue);
tCombobox(self.__).setShowHint(vValue<>'');
end;
eZTagEdit:
begin
tEdit(self.__).setHint(vValue);
tEdit(self.__).setShowHint(vValue<>'');
end;
eZTagGroupbox:
begin
tGroupbox(self.__).setHint(vValue);
tGroupbox(self.__).setShowHint(vValue<>'');
end;
eZTagImage:
begin
tImage(self.__).setHint(vValue);
tImage(self.__).setShowHint(vValue<>'');
end;
eZTagLabel:
begin
tLabel(self.__).setHint(vValue);
tLabel(self.__).setShowHint(vValue<>'');
end;
eZTagListbox:
begin
tListbox(self.__).setHint(vValue);
tListbox(self.__).setShowHint(vValue<>'');
end;
eZTagMemo:
begin
tMemo(self.__).setHint(vValue);
tMemo(self.__).setShowHint(vValue<>'');
end;
eZTagProgressBar:
begin
tProgressBar(self.__).setHint(vValue);
tProgressBar(self.__).setShowHint(vValue<>'');
end;
end;
end;
'value':
if (varType(vValue)=varInteger) or (varType(vValue)=varString) then
case self.__.getTag() of
eZTagCombobox:tCombobox(self.__).setText(toStr(vValue));
eZTagEdit:tEdit(self.__).setText(toStr(vValue));
eZTagMemo:tMemo(self.__).setText(toStr(vValue));
eZTagCombobox..eZTagEdit,eZTagMemo:tCombobox(self.__).setText(toStr(vValue));
eZTagProgressBar:
if execRegExpr('^\d+$',vValue) then
tProgressBar(self.__).setPosition(max(0,min(100,strToInt(vValue))))
Expand All @@ -927,34 +1003,20 @@ begin
'visible':
if varType(vValue)=varBoolean then
case self.__.getTag() of
eZTagButton:tButton(self.__).setVisible(vValue);
eZTagCheckbox:tCheckbox(self.__).setVisible(vValue);
eZTagCombobox:tCombobox(self.__).setVisible(vValue);
eZTagEdit:tEdit(self.__).setVisible(vValue);
eZTagGroupbox:tGroupbox(self.__).setVisible(vValue);
eZTagImage:tImage(self.__).setVisible(vValue);
eZTagLabel:tLabel(self.__).setVisible(vValue);
eZTagListbox:tListbox(self.__).setVisible(vValue);
eZTagMemo:tMemo(self.__).setVisible(vValue);
eZTagProgressBar:tProgressBar(self.__).setVisible(vValue);
eZTagButton..eZTagProgressBar:tImage(self.__).setVisible(vValue);
end;
'width':
if varType(vValue)=varInteger then
case self.__.getTag() of
eZTagButton:tButton(self.__).setWidth(vValue);
eZTagCombobox:tEdit(self.__).setWidth(vValue);
eZTagEdit:tEdit(self.__).setWidth(vValue);
eZTagGroupbox:tGroupbox(self.__).setWidth(vValue);
eZTagImage:tImage(self.__).setWidth(vValue);
eZTagListbox:tListbox(self.__).setWidth(vValue);
eZTagMemo:tMemo(self.__).setWidth(vValue);
eZTagProgressBar:tProgressBar(self.__).setWidth(vValue);
eZTagButton..eZTagProgressBar:tButton(self.__).setWidth(vValue);
end;
end;
tForm(tButton(self.__).getParentComponent()).repaint();
tForm(tButton(self.__).getParentComponent()).refresh();
exit(self);
end;

function tZComponent.prop(vProperty:tZProp):tZComponent;overload;
function eZElement.prop(vProperty:eZProp):eZElement;overload;
begin
if self.__<>nil then
case vProperty of
Expand All @@ -967,154 +1029,179 @@ begin
exit(self);
end;

procedure tZComponent.remove();
function eZElement.readOnly():boolean;
begin
ezFormComponentArray:=ezFormComponentArray.delete(self);
self.hide();
self.__.free();
exit(self.prop('readOnly'));
end;

function tZComponent.setClipboard():tZComponent;
function eZElement.readOnly(vReadOnly:boolean):eZElement;overload;
begin
if self.__<>nil then
case self.__.getTag() of
eZTagEdit:tEdit(self.__).copyToClipboard();
eZTagMemo:tMemo(self.__).copyToClipboard();
end;
exit(self);
exit(self.prop('readOnly',vReadOnly));
end;

function eZElement.show():eZElement;
begin
exit(self.prop('show',true));
end;

function eZElement.style():string;
begin
exit(self.prop('style'));
end;

function tZComponent.show():tZComponent;
function eZElement.style(vStyle:string):eZElement;overload;
begin
exit(self.prop('visible',true));
exit(self.prop('style',vStyle));
end;

function tZComponent.src():string;
function eZElement.src():string;
begin
exit(self.prop('src'));
end;

function tZComponent.src(vFilePath:string):tZComponent;overload;
function eZElement.src(vSrc:string):eZElement;overload;
begin
exit(self.prop('src',vFilePath));
exit(self.prop('src',vSrc));
end;

function tZComponent.text():string;
function eZElement.tagName():string;
begin
if self.__<>nil then
case self.__.getTag() of
eZTagButton:result:=tButton(self.__).getCaption();
eZTagCheckbox:result:=tCheckbox(self.__).getCaption();
eZTagCombobox:result:=tCheckbox(self.__).getCaption();
eZTagEdit:result:=tEdit(self.__).getText();
eZTagGroupbox:result:=tGroupbox(self.__).getCaption();
eZTagLabel:result:=tLabel(self.__).getCaption();
eZTagMemo:result:=tMemo(self.__).getText();
end;
exit(result);
exit(self.prop('tagName'));
end;

function tZComponent.text(vText:string):tZComponent;overload;
function eZElement.text():string;
begin
if self.__<>nil then
case self.__.getTag() of
eZTagButton:tButton(self.__).setCaption(vText);
eZTagCheckbox:tCheckbox(self.__).setCaption(vText);
eZTagCombobox:tCombobox(self.__).setCaption(vText);
eZTagEdit:tEdit(self.__).setText(vText);
eZTagGroupbox:tGroupbox(self.__).setCaption(vText);
eZTagLabel:tLabel(self.__).setCaption(vText);
eZTagMemo:tMemo(self.__).setText(vText);
end;
exit(self);
exit(self.prop('text'));
end;

function tZComponent.width():int32;
function eZElement.text(vText:variant):eZElement;overload;
begin
exit(self.prop('width'));
exit(self.prop('text',vText));
end;

function tZComponent.width(vWidth:int32):tZComponent;overload;
function eZElement.title():string;
begin
exit(self.prop('width',vWidth));
exit(self.prop('title'));
end;

function tZComponent.val():variant;
function eZElement.title(vTitle:variant):eZElement;overload;
begin
exit(self.prop('title',vTitle));
end;

function eZElement.val():variant;
begin
exit(self.prop('value'));
end;

function eZElement.val(vValue:variant):eZElement;overload;
begin
exit(self.prop('value',vValue));
end;

function eZElement.value():variant;
begin
exit(self.prop('value'));
end;

function tZComponent.val(vValue:variant):tZComponent;overload;
function eZElement.value(vValue:variant):eZElement;overload;
begin
exit(self.prop('value',vValue));
end;

function eZElement.visible():boolean;
begin
exit(self.prop('visible'));
end;

function eZElement.visible(vVisible:boolean):eZElement;overload;
begin
exit(self.prop('visible',vVisible));
end;

function eZElement.width():int32;
begin
exit(self.prop('width'));
end;

function eZElement.width(vWidth:int32):eZElement;overload;
begin
exit(self.prop('width',vWidth));
end;

(*
tZFormComponentArray Methods
eZElementArray Methods
*)

function tZComponentArray.delete(vComponent:tZComponent):tZComponentArray;
function eZElementArray.delete(vElement:eZElement):eZElementArray;
var
_ComponentIndex,
_ElementIndex,
_ResultIndex:int32;
_ComponentArray:tZComponentArray;
begin
setLength(_ComponentArray,length(self));
for _ComponentIndex to high(self) do
if self[_ComponentIndex].__<>vComponent.__ then
setLength(result,length(self));
for _ElementIndex to high(self) do
if self[_ElementIndex].__<>vElement.__ then
begin
_ComponentArray[_ResultIndex]:=self[_ComponentIndex];
result[_ResultIndex]:=self[_ElementIndex];
_ResultIndex+=1;
end;
setLength(_ComponentArray,_ResultIndex);
result:=_ComponentArray;
setLength(result,_ResultIndex);
exit(result);
end;

function tZComponentArray.delete(vSelector:string):tZComponentArray;overload;
function eZElementArray.delete(vSelector:string):eZElementArray;overload;
var
_ComponentIndex,
_ElementIndex,
_ResultIndex:int32;
_ComponentArray:tZComponentArray;
begin
setLength(_ComponentArray,length(self));
setLength(result,length(self));
if execRegExpr('^#[\w-]+$',vSelector:=lowercase(vSelector)) then
begin
vSelector:=replaceRegExpr('^#([\w-]+)$',vSelector,'$1',true);
for _ComponentIndex to high(self) do
if lowercase(self[_ComponentIndex].__.getName())<>vSelector then
for _ElementIndex to high(self) do
if lowercase(self[_ElementIndex].__.getName())<>vSelector then
begin
_ComponentArray[_ResultIndex]:=self[_ComponentIndex];
result[_ResultIndex]:=self[_ElementIndex];
_ResultIndex+=1;
end;
end
else if execRegExpr('^[A-z]+$',vSelector) then
begin
for _ComponentIndex to high(self) do
if self[_ComponentIndex].prop('tagname')<>vSelector then
for _ElementIndex to high(self) do
if self[_ElementIndex].prop('tagname')<>vSelector then
begin
_ComponentArray[_ResultIndex]:=self[_ComponentIndex];
result[_ResultIndex]:=self[_ElementIndex];
_ResultIndex+=1;
end;
end;
setLength(_ComponentArray,_ResultIndex);
result:=_ComponentArray;
setLength(result,_ResultIndex);
exit(result);
end;

function eZElementArray.disabled(vDisabled:boolean):eZElementArray;
var
_Index:int32;
begin
for _Index to high(self) do
self[_Index].disabled(vDisabled);
exit(self);
end;

function tZComponentArray.eq(vIndex:int32):tZComponent;
function eZElementArray.eq(vIndex:int32):eZElement;
begin
if length(self) and (vIndex>=low(self)) and (vIndex<=high(self)) then
if (length(self)<>0) and (vIndex>=low(self)) and (vIndex<=high(self)) then
result:=self[vIndex];
exit(result);
end;

function tZComponentArray.first():tZComponent;
function eZElementArray.first():eZElement;
begin
if length(self) then
result:=self[0];
exit(result);
end;

function tZComponentArray.height(vHeight:int32):tZComponentArray;
function eZElementArray.height(vHeight:int32):eZElementArray;
var
_Index:int32;
begin
Expand All @@ -1123,7 +1210,7 @@ begin
exit(self);
end;

function tZComponentArray.hide():tZComponentArray;
function eZElementArray.hide():eZElementArray;
var
_Index:int32;
begin
Expand All @@ -1132,24 +1219,24 @@ begin
exit(self);
end;

function tZComponentArray.isnt(vComponent:tZComponent):tZComponentArray;
function eZElementArray.isnt(vComponent:eZElement):eZElementArray;
begin
exit(self.delete(vComponent));
end;

function tZComponentArray.isnt(vSelector:string):tZComponentArray;overload;
function eZElementArray.isnt(vSelector:string):eZElementArray;overload;
begin
exit(self.delete(vSelector));
end;

function tZComponentArray.last():tZComponent;
function eZElementArray.last():eZElement;
begin
if length(self) then
result:=self[high(self)];
exit(result);
end;

function tZComponentArray.prop(vProperty:string;vValue:variant):tZComponentArray;
function eZElementArray.prop(vProperty:string;vValue:variant):eZElementArray;
var
_Index:int32;
begin
Expand All @@ -1158,7 +1245,7 @@ begin
exit(self);
end;

function tZComponentArray.prop(vProperty:tZProp):tZComponentArray;overload;
function eZElementArray.prop(vProperty:eZProp):eZElementArray;overload;
var
_Index:int32;
begin
Expand All @@ -1167,7 +1254,7 @@ begin
exit(self);
end;

function tZComponentArray.show():tZComponentArray;
function eZElementArray.show():eZElementArray;
var
_Index:int32;
begin
Expand All @@ -1176,37 +1263,34 @@ begin
exit(self);
end;

procedure tZComponentArray.remove();
function eZElementArray.text(vText:string):eZElementArray;
var
_Index:int32;
begin
for _Index to high(self) do
begin
ezFormComponentArray:=ezFormComponentArray.delete(self[_Index]);
self[_Index].hide();
self[_Index].__.free();
end;
self[_Index].text(vText);
exit(self);
end;

function tZComponentArray.text(vText:string):tZComponentArray;
function eZElementArray.val(vValue:variant):eZElementArray;
var
_Index:int32;
begin
for _Index to high(self) do
self[_Index].text(vText);
self[_Index].val(vValue);
exit(self);
end;

function tZComponentArray.val(vValue:variant):tZComponentArray;
function eZElementArray.value(vValue:variant):eZElementArray;
var
_Index:int32;
begin
for _Index to high(self) do
self[_Index].val(vValue);
self[_Index].value(vValue);
exit(self);
end;

function tZComponentArray.width(vWidth:int32):tZComponentArray;
function eZElementArray.width(vWidth:int32):eZElementArray;
var
_Index:int32;
begin
Expand All @@ -1215,6 +1299,20 @@ begin
exit(self);
end;






(*
tObject Methods
*)

function tObject.toElement():eZElement;
begin
exit(eZElement(self));
end;

(*
tPicture Methods
*)
Expand All @@ -1226,15 +1324,15 @@ var
_Socket:sslSocket;
begin
pro_initSocket(_Socket, nil, nil, nil, nil);
pro_createSocket(_Socket, '');
pro_setSSL(_Socket, false, false, true);
pro_createSocket(_Socket,'');
pro_setSSL(_Socket, false,false,true);
pro_setURL(_Socket,vURL);
pro_doGetEx(_Socket,_Result);
{$ifDef lape}
setLength(Result,_Result.size);
memMove(_Result.memory^,Result[1],_Result.size);
setLength(result,_Result.size);
memMove(_Result.memory^,result[1],_Result.size);
{$else}
Result :=_Result.memory;
result:=_Result.memory;
{$endIf}
try
pro_FreeSocket(_Socket);
Expand All @@ -1245,7 +1343,7 @@ var
_Path,
_Picture:string;
begin
if execRegExpr('^http:\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$',vURL) then
if execRegExpr('^https?:\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$',vURL) then
begin
_Path:=includePath+'eZForm Resources\'+replaceRegExpr('\W+',vURL,'_',false);
createDirectory(includePath+'eZForm Resources');
Expand All @@ -1260,40 +1358,11 @@ begin
end;
end
if fileExists(_Path) then
begin
try
self.loadFromFile(_Path);
except end;
deleteFile(_Path);
end;
end;
end;


{
ToDo:
TForm.
TLabel.
TButton.
TBitBtn.
TSpeedButton.
TComboBox.
TEdit.
TRichEdit.
TMemo.
TImage.
TShape.
TScrollBox.
TCheckListBox.
TProgressBar.
TCheckBox.
TRadioButton.
TBevel.
TTimer.
TMainMenu.
TPopupMenu.
TTabControl.
TOpenDialog.
TSaveDialog.
TFontDialog.
TColorDialog.
TFindDialog.
TReplaceDialog.
}