Por razones de fuerza mayor ($) no puedo utilizar el IDE DELPHI4PHP para programar una página web.
Sin embargo la característica del "código abierto " del Frameworks VCL4PHP me perite poder trabajar con
las vcl utilizando otro IDE por ejemplo NetBeans que también es de código abierto y me reconece
las clases además de ayudar con el completado del código.
Desafío 1: ¿Se puede programar con vcl4php si utilizar archivos de recursos ...xml.php?.
Desafio 2: ¿Cómo puedo pasar los parámetros ($sender,$params) a un método definido en una clase particular?.
Desafio 3: ¿Como se pueden definir los componentes que se van a utilizar dentro de una clase particular?.
El siguiente ejemplo me muestra un formulario con template pero no supera los desafiíos anteriores.
¿Quien se anima a contribuir?. desde ya muchas gracias a los que participan.
Código PHP:
   <?php 
// Requerir la clase principal. 
require_once("vcl/vcl.inc.php"); 
 
//Especificar las unidades que se van a utilizar. 
use_unit("google/maps/gmaps.inc.php"); 
//use_unit("Zend/zmail.inc.php"); 
//use_unit("Zend/zcache.inc.php"); 
//use_unit("Zend/zauthdigest.inc.php"); 
//use_unit("Zend/zauthdb.inc.php"); 
//use_unit("Zend/zauth.inc.php"); 
//use_unit("Zend/zacl.inc.php"); 
//use_unit("PEAR/peardatagrid.inc.php"); 
use_unit("jquery/jquery.inc.php"); 
use_unit("oracle.inc.php"); 
use_unit("mysql.inc.php"); 
use_unit("clock.inc.php"); 
use_unit("webservices.inc.php"); 
use_unit("interbase.inc.php"); 
use_unit("dbctrls.inc.php"); 
use_unit("dbgrids.inc.php"); 
use_unit("db.inc.php"); 
use_unit("dbtables.inc.php"); 
use_unit("styles.inc.php"); 
use_unit("auth.inc.php"); 
use_unit("imglist.inc.php"); 
use_unit("pager.inc.php"); 
use_unit("comctrls.inc.php"); 
use_unit("chart.inc.php"); 
use_unit("checklst.inc.php"); 
use_unit("buttons.inc.php"); 
use_unit("jsval/formvalidator.inc.php"); 
use_unit("actnlist.inc.php"); 
use_unit("menus.inc.php"); 
use_unit("forms.inc.php"); 
use_unit("extctrls.inc.php"); 
use_unit("stdctrls.inc.php"); 
 
 
// Crear la clase de la página web. 
class pagina_web extends Page 
{ 
     
    public $columna_izquierda; 
    //public $columna_derecha; 
    //public $contenido_central; 
     
    function create($sender, $params) 
    { 
        $this->columna_izquierda = new Panel(); 
        $this->columna_izquierda->setCaption('Hola mundo.'); 
    } 
     
    function template($sender, $params) 
    { 
        //$template = $params['template']; 
        $meta_title        = 'Hola mundo'; 
        $meta_keyword      = file_get_contents('meta/keyword.txt'); 
        $meta_description  = file_get_contents('meta/description.txt'); 
 
        //$template->_smarty->assign('meta_title',$meta_title); 
        //$template->_smarty->assign('meta_keyword',$meta_keyword); 
        //$template->_smarty->assign('meta_description',$meta_description); 
    } 
     
} 
 
// Especificar variables globales. 
global $application; 
global $pagina_web; 
 
// Instaciar la página web. 
$pagina_web = new pagina_web($application); 
 
// Especiaficar las propiedades de la página web. 
$pagina_web->setAction('index.php');         // string 
$pagina_web->setAlignment('center');         // agLeft - agCenter - agRight  
$pagina_web->setBackground('');             // Img file name 
$pagina_web->setBorderWidth('0');                // Int witdh boirder 
$pagina_web->setBottomMargin('0');            // Int witdh bottom margin 
$pagina_web->setCache('');                    // Path to cache 
$pagina_web->setCached(false);                // true - false 
$pagina_web->setCaption('HEXAST');          // String page title. 
$pagina_web->setColor('');                    // String color #FFFFFF 
$pagina_web->setCursor('crDefault');        // crPointer - CrossHair - crText - crWait - crDefault - crHelp - crE-Resize - crNE-Resize - crN-Resize - crNW-Resize - crW-Resize - crSW-Resize - crS-Resize - crSE-Resize - crAuto  
$pagina_web->setDirectionality('ddLeftToRight'); // ddLeftToRight - ddRightToLeft 
//$pagina_web->setDocType('iso-8859-1');        //Espcifica el tipo de documento según la W3C:  Unicode (UTF-8)            |utf-8 - Western European (ISO)     |iso-8859-1  
$pagina_web->setFont(array( 
                            'taNone',        //Align: taNone - taLeft - taRight - taCenter - taJustify 
                            'caNone',        //Case:  caCapitalize - caUpperCase - caLowerCase - caNone 
                            '#000000',        //Color: String color - example: #000000 
                            'Tahoma',        //Family: String font name  - example: Tahoma 
                            '',                //LineHeigth: 
                            '11px',            //Font size in pixel 
                            'fsNormal',        //Text style: fsNormal - fsItalic - fsOblique 
                            'vaNormal',        //Font variant: vaNormal - vaSmallCaps 
                            'normal'        //Font weight: normal - bold - bolder - lighter - 100 - 200 - 300 - 400 - 500 - 600 - 700 - 800 - 900  
                            )); 
                             
$pagina_web->setFrameBorder('fbNo');        //Frame border: fbDefault - fbNo - fbYes 
$pagina_web->setFrameSpacing('0');            //Frame spacing in pixel 
$pagina_web->setHeight('3000');                 //Especifica el alto de la página en pixeles. 
$pagina_web->setHint('');                     //Set Hint 
$pagina_web->setIcon('');                    //Path to icon file 
$pagina_web->setIsForm(false);                //Espcifica si la pagina es un formulario: true - false 
$pagina_web->setIsMaster(false);             //Especifica si la página es maestra: true - false 
$pagina_web->setLanguage('(default)');        //Especifica el lenguaje de la página: (default) - Spanish (Argentina) -  
$pagina_web->setLayer('0');                    //Especifica el nivel de la capa. 
$pagina_web->setLayout(array( 
                            '5',            //Numero de columnas. 
                            '5',            //Número de filas. 
                            'ABS_XY_LAYOUT',//Tipo de Layout: ABS_XY_LAYOUT - REL_XY_LAYOUT - XY_LAYOUT - FLOW_LAYOUT - GRIDBAG_LAYOUT - ROW_LAYOUT - COL_LAYOUT 
                            true            // Usar íxel transparente: true - false 
                            )); 
$pagina_web->setLeft('0');                    //Distancia desde la izquierda en pixeles. 
$pagina_web->setLeftMargin('0');                //Ancho del margen izquierdo en pixeles. 
$pagina_web->setName('pagina_web');            //Nombnre del objeto. 
$pagina_web->setRightMargin('0');                //Ancho del margen derecho en pixeles. 
$pagina_web->setShowFooter(true);            //Viusarlizar el footer: true - false 
$pagina_web->setShowHeader(true);            //Visualizar el header: true - false 
$pagina_web->setShowHint('');                //Visualiza el Hint. 
$pagina_web->setTag('0');                        //Especificar el tag. 
$pagina_web->setTarget('');                    //Especificar el marco donde hará blanco la acción de la página.                             
$pagina_web->setTemplateEngine('SmartyTemplate'); //Especifica el motor de administrara el template de la página: '' - SmartyTemplate - VCLTemplate 
$pagina_web->setTemplateFilename('template.tpl'); //Especifica el nombre del archivo que se utilizara como template. 
$pagina_web->setTop('0');                        //Especifica la posición supewrior en pixeles. 
$pagina_web->setTopMargin('0');                //Especifica el ancho en pixeles del margen superior. 
$pagina_web->setUseAjax(true);                //Especifica si página va a usar AJAX: true - false 
$pagina_web->setUseAjaxDebug(false);         //Especifica si se va a hacer debug con los query AJAX 
$pagina_web->setUseAjaxUri('');                //Especifica la URL donde se enviaran los query AJAX. 
$pagina_web->setVisible(true);                //Especifica si la página web será visible. 
$pagina_web->setWidth('1300');                //Especifica el ancho de la página. 
 
// Especificamos los métodos de la página web. 
// PHP Event 
$pagina_web->setOnAfterAjaxProcess('');        //Object: Especificar el metodo. 
$pagina_web->setOnAfterShow('');            //Object: Especificar el metodo. 
$pagina_web->setOnAfterShowFooter('');        //Object: Especificar el metodo. 
$pagina_web->setOnBeforeAjaxProcess('');    //Object: Especificar el metodo. 
$pagina_web->setOnBeforeShow('');            //Object: Especificar el metodo. 
$pagina_web->setOnBeforeShowHeader('');        //Object: Especificar el metodo. 
//$pagina_web->setOnCreate($sender, $params);                //Object: Especificar el metodo. 
$pagina_web->setOnShow('');                    //Object: Especificar el metodo. 
$pagina_web->setOnShowHeader('');            //Object: Especificar el metodo. 
$pagina_web->setOnStartBody('');            //Object: Especificar el metodo. 
//$pagina_web->setOnTemplate($sender, $params);                //Object: Especificar el metodo. 
// JS Event 
$pagina_web->setjsOnLoad('');                //Object: Especificar el metodo. 
$pagina_web->setjsOnReset('');                //Object: Especificar el metodo. 
$pagina_web->setjsOnSubmit('');                //Object: Especificar el metodo. 
$pagina_web->setjsOnUnload('');                //Object: Especificar el metodo. 
 
// Mostrar la página web. 
$pagina_web->show(); 
?>     
 

 ¿Es una duda o desafio? Porque lo que expones es que casi casi hagan tu trabajo...
 ¿Es una duda o desafio? Porque lo que expones es que casi casi hagan tu trabajo... 

