<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6060677996370570966</id><updated>2011-08-01T10:58:58.296-07:00</updated><title type='text'>Lazarus + Zeos</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://lazaruszeos.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060677996370570966/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://lazaruszeos.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Fabio Ferreira</name><uri>http://www.blogger.com/profile/09913502342006431214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_cftsv1Tl2kY/TFGRPXapIVI/AAAAAAAAAAM/XARxsc6vn4k/S220/foto.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>1</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6060677996370570966.post-7254607123095284702</id><published>2010-07-29T19:10:00.001-07:00</published><updated>2010-08-05T06:12:41.192-07:00</updated><title type='text'>Uso de componentes Zeos en Lazarus y Delphi</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_cftsv1Tl2kY/TFI2AwB-BFI/AAAAAAAAABU/UVz66c1fAwo/s1600/Zeos.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="122" src="http://2.bp.blogspot.com/_cftsv1Tl2kY/TFI2AwB-BFI/AAAAAAAAABU/UVz66c1fAwo/s640/Zeos.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Los componentes Zeos permiten el acceso a diferentes bases de datos en los compiladores de Delphi, C++ Builder y Lazarus. Estos componentes no visuales facilitan todas las operaciones relacionadas con bases de datos de diversos tipos como Oracle, Postgres, Mysql, FireBird, SQLite, etc. casi que de igual manera. De hecho es posible migrar toda una aplicación de una base de datos a otra con solo unos cuantos cambios en las propiedades de los componentes.&lt;br /&gt;&lt;br /&gt;Esta página NO pretende brindar una explicación exhaustiva sobre toda la funcionalidad de &lt;i&gt;Zeos&lt;/i&gt;, el objetivo&amp;nbsp; de este tutorial es que el usuario pueda rápidamente tener conexión y ejecutar operaciones de &lt;i&gt;INSERT, DELETE y UPDATE. &lt;/i&gt;Posteriormente el programador podrá explorar mas opciones de dichos componentes.&lt;br /&gt;&lt;br /&gt;La página oficial de los componentes: &lt;a href="http://zeos.firmos.at/portal.php"&gt;http://zeos.firmos.at/portal.php&lt;/a&gt;&lt;br /&gt;La página de descarga: &lt;a href="http://sourceforge.net/projects/zeoslib/"&gt;http://sourceforge.net/projects/zeoslib/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Instalación en Lazarus.&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Descargue y descomprima el archivo de los componentes Zeos.&lt;/li&gt;&lt;li&gt;Desde Lazarus vaya a la sección "Paquete" y de clic en "Abrir archivo de paquete (*.lpk)".&lt;/li&gt;&lt;li&gt;Abra el archivo "Componentes.lpk" que está ubicado en la ruta "\ZEOSDBO-x.x.x-stable\packages\lazarus".&lt;/li&gt;&lt;li&gt;Clic en "Instalar".&lt;/li&gt;&lt;li&gt;Cuando se le pregunte si desea recompilar Lazarus, haga clic en "si".&lt;/li&gt;&lt;li&gt;Al volver a abrir Lazarus encontrará una nueva pestaña con los componenentes Zeos, como se aprecia en la figura:&lt;/li&gt;&lt;/ol&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;script type="text/javascript"&gt;  var _gaq = _gaq || [];  _gaq.push(['_setAccount', 'UA-17824163-1']);  _gaq.push(['_trackPageview']);  (function() {    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);  })();&lt;/script&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_cftsv1Tl2kY/TFNKsLPjgdI/AAAAAAAAACs/wWGazQwY_MM/s1600/Pestana.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="48" src="http://1.bp.blogspot.com/_cftsv1Tl2kY/TFNKsLPjgdI/AAAAAAAAACs/wWGazQwY_MM/s640/Pestana.jpg" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Pestaña de componentes Zeos, después de la instalación&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Construyendo una aplicación básica.&lt;/span&gt;&lt;/b&gt; &lt;br /&gt;&lt;ol&gt;&lt;/ol&gt;En este ejemplo vamos a hacer una aplicación muy sencilla donde se tendrán las siguientes características:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Motor de la BD: SQLite &lt;/li&gt;&lt;li&gt;La base de datos tendrá una sola tabla que se llamará "personas".&lt;/li&gt;&lt;li&gt;Los datos a ingresar son: Nombre (VarChar[30]) y Edad (Integer).&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-large;"&gt;&lt;b&gt;&lt;span style="color: red;"&gt;Nota: Si no conoce SQLite le recomiendo leer primero el post de SQLite.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Primero vamos a comenzar un nuevo proyecto con lazarus: Archivo&amp;gt;&amp;gt;Nuevo&amp;gt;&amp;gt;Aplicación&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_cftsv1Tl2kY/TFI6doUu7RI/AAAAAAAAABc/4b8085764ms/s1600/Nuevo+Proyecto.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="362" src="http://1.bp.blogspot.com/_cftsv1Tl2kY/TFI6doUu7RI/AAAAAAAAABc/4b8085764ms/s400/Nuevo+Proyecto.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;A continuación le pondremos de nombre al formulario el nombre "PruebaZeos", para esto usamos la propiedad "Name" del formulario.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_cftsv1Tl2kY/TFI7dNCOXyI/AAAAAAAAABk/4v-5_Vgl-bA/s1600/PruebaZeos.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="315" src="http://3.bp.blogspot.com/_cftsv1Tl2kY/TFI7dNCOXyI/AAAAAAAAABk/4v-5_Vgl-bA/s640/PruebaZeos.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&amp;nbsp;Posteriormente guardamos el proyecto en alguna ubicación de nuestro PC, Archivo&amp;gt;&amp;gt;Guardar Todo&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_cftsv1Tl2kY/TFI77wxXsuI/AAAAAAAAABs/LYwOSmIba8s/s1600/Guardar_Todo.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_cftsv1Tl2kY/TFI77wxXsuI/AAAAAAAAABs/LYwOSmIba8s/s320/Guardar_Todo.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Una vez hecho esto, agregamos los siguientes componentes y le cambiamos el nombre por el texto que aparezca dentro del paréntesis:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Pestaña "Zeos Access&lt;/b&gt; "&lt;br /&gt;&lt;ul&gt;&lt;li&gt;TZconnection (Conexion)&lt;/li&gt;&lt;li&gt;TZquery (Query)&lt;/li&gt;&lt;li&gt;Ztable (Tabla) &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Pestaña "Data&amp;nbsp; Access"&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Datasource (Datos)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Pestaña "Data Controls"&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;TDBGrid (Grid)&lt;/li&gt;&lt;li&gt;TDBNavigator (Navegador)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;En este momento debes tener un formulario similar al de la figura:&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_cftsv1Tl2kY/TFI-EWhZSaI/AAAAAAAAAB0/mv4c9dGOTMY/s1600/Formulario+1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="315" src="http://3.bp.blogspot.com/_cftsv1Tl2kY/TFI-EWhZSaI/AAAAAAAAAB0/mv4c9dGOTMY/s400/Formulario+1.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Acto seguido debemos modificar las opciones de los componentes, para que estos se "entiendan" entre si, para ello cambie las propiedades de acuerdo a las siguientes líneas:&lt;br /&gt;&lt;br /&gt;Conexion.Protocol=SQLite3&lt;br /&gt;Conexion.Database=C:\\prueba.sqlite &lt;br /&gt;Query.Connection=Conexion&lt;br /&gt;Tabla.Connection=Conexion &lt;br /&gt;Datos.Dataset=Tabla&lt;br /&gt;Navegador.DataSource=Datos&lt;br /&gt;Grid.DataSource=Datos&lt;br /&gt;Tabla.Tablename=personas &lt;br /&gt;&lt;br /&gt;Con lo anterior, ya la aplicación está en capacidad de cargar la base de datos "prueba" y mostrarla en el DBGrid, se preguntarán ¿Como va a cargar una BD que no existe?, pues bien con SQLite la BD es creada si es que no existe.&lt;br /&gt;Vamos a usar el potencial de estos componentes para cargar la BD en tiempo de diseño, para esto vamos al componente "Conexion" y cambiamos la propiedad "Connected" a TRUE.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;¿QUE PASÓ? .... Obtuvimos el siguiente mensaje.......&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_cftsv1Tl2kY/TFJBMweNRBI/AAAAAAAAAB8/5ej-9tn7k4Q/s1600/Error.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="145" src="http://1.bp.blogspot.com/_cftsv1Tl2kY/TFJBMweNRBI/AAAAAAAAAB8/5ej-9tn7k4Q/s400/Error.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Tranquilos, todo está en orden. Lo que sucede es que SQLite es una base de datos que trabaja con una dll que se llama "sqlite3.dll" y si no encuentra dicha dll genera el mensaje de error. Para solucionar esto descargamos la dll de este enlace: &lt;a href="http://www.4shared.com/file/N_5uBn3r/sqlite3.html"&gt;http://www.4shared.com/file/N_5uBn3r/sqlite3.html&lt;/a&gt; aunque también la puede conseguir en la pagina oficial de SQLITE: &lt;a href="http://www.sqlite.org/index.html"&gt;http://www.sqlite.org/index.html&lt;/a&gt; y agregamos la dll a la carpeta del ejecutable y también la copiamos a la carpeta &lt;b&gt;"C:\\Windows\System32"&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;Hecho lo anterior intentamos conectarnos nuevamente, si hicimos todo correctamente ya no aparecerá la ventana de error, pero tampoco sucede nada en el formulario. Pues bien aun no se han creado tablas, ni registros ni nada, por eso aun no vemos cambios, sin embargo si vamos a nuestro disco duro "C" veremos que el archivo "C:\\prueba.sqlite" ya ha sido creado!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_cftsv1Tl2kY/TFJHTfgFHjI/AAAAAAAAACc/svNog0JQ5n0/s1600/Archivo_Creado.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="176" src="http://3.bp.blogspot.com/_cftsv1Tl2kY/TFJHTfgFHjI/AAAAAAAAACc/svNog0JQ5n0/s640/Archivo_Creado.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Vamos por buen camino... ya tenemos conectividad con la base de datos, ahora vamos a agregar algo de código en el evento "OnCreate" del formulario:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&lt;b&gt;procedure &lt;/b&gt;TForm1.FormCreate&lt;b&gt;&lt;span style="color: red;"&gt;(&lt;/span&gt;&lt;/b&gt;Sender&lt;b&gt;&lt;span style="color: red;"&gt;:&lt;/span&gt;&lt;/b&gt; TObject&lt;b&gt;&lt;span style="color: red;"&gt;);&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;var&lt;/b&gt; Cadena_SQL&lt;span style="color: red;"&gt;:&lt;/span&gt;&lt;b&gt;string&lt;span style="color: red;"&gt;;&lt;/span&gt;&lt;/b&gt; &lt;span style="color: blue;"&gt;//Cadena del comando SQL a ejecutar&lt;/span&gt;&lt;br /&gt;&lt;b&gt;begin&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;Conexion.Connect&lt;b style="color: red;"&gt;;&lt;/b&gt;&lt;span style="color: blue;"&gt; //me conecto a la BD&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;Cadena_SQL:=&lt;span style="color: #3d85c6;"&gt;'CREATE&amp;nbsp; TABLE&amp;nbsp; IF NOT EXISTS "main"."personas" ("nombre" VARCHAR(30), "edad" INTEGER)';&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;Query.SQL.Clear&lt;b&gt;&lt;span style="color: red;"&gt;;&lt;/span&gt;&lt;/b&gt; &lt;span style="color: blue;"&gt;//se limpia la cadena SQL existente&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;Query.SQL.Text&lt;b style="color: red;"&gt;:=&lt;/b&gt;Cadena_SQL;&lt;span style="color: blue;"&gt; //cargo el comando SQL a ejecutar&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;Query.ExecSQL&lt;b style="color: red;"&gt;;&lt;/b&gt;&lt;span style="color: blue;"&gt; //Ejecuto el comando&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&lt;span style="color: blue;"&gt;//En este punto la tabla ya esta creada por lo tanto ya se puede abrir&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size: xx-small;"&gt;&lt;span style="color: blue;"&gt;//el componente de TABLA&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size: xx-small;"&gt;Tabla&lt;b style="color: red;"&gt;.&lt;/b&gt;Open&lt;b&gt;&lt;span style="color: red;"&gt;;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size: xx-small;"&gt;&lt;span style="color: blue;"&gt;//Ajustamos el ancho de las columnas para que se vean mejor&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size: xx-small;"&gt;Grid.Columns[0].Width&lt;b style="color: red;"&gt;:=&lt;/b&gt;80&lt;b&gt;&lt;span style="color: red;"&gt;;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size: xx-small;"&gt;Grid.Columns[1].Width&lt;b&gt;&lt;span style="color: red;"&gt;:=&lt;/span&gt;&lt;/b&gt;80&lt;b style="color: red;"&gt;;&lt;/b&gt; &lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: xx-small;"&gt;&lt;b&gt;end&lt;/b&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: xx-small;"&gt;&lt;span style="font-size: small;"&gt;En seguida ejecutamos el programa, y si todo los hemos hecho correctamente podremos hacer lo que el siguiente video nos muestra:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-acf1ffcce22424a1" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v24.nonxt2.googlevideo.com/videoplayback?id%3Dacf1ffcce22424a1%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330191772%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D2B05ABF0F2E4C78CD122CE8A374EAE094051972.12D66A0149DEB9D62D972C33F8C469A3F2EF88A7%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Dacf1ffcce22424a1%26offsetms%3D5000%26itag%3Dw160%26sigh%3DHVbO6MVPVJXDr3Qtlti17Xrof5k&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v24.nonxt2.googlevideo.com/videoplayback?id%3Dacf1ffcce22424a1%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330191772%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D2B05ABF0F2E4C78CD122CE8A374EAE094051972.12D66A0149DEB9D62D972C33F8C469A3F2EF88A7%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Dacf1ffcce22424a1%26offsetms%3D5000%26itag%3Dw160%26sigh%3DHVbO6MVPVJXDr3Qtlti17Xrof5k&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;/div&gt;&lt;span style="font-size: xx-small;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Nuestra aplicación ya está conectada a la BD y funcionando!&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Ahora le recomiendo que use el "DBNavigator" (La barrita con botones que está debajo del grid) para agregar, editar y eliminar registros y de esta forma examine las posibilidades de manejar de esta forma una BD sencilla.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Ahora vamos a hacer algo un poco mas complejo, vamos a usar nuestros propios controles para la manipulación de la BD. Para esto volvemos a Lazarus y de la pestaña "Adittional" arrastramos 2 controles "TlabeledEdit". Nuestro formulario debe quedar así:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_cftsv1Tl2kY/TFNNzc9stFI/AAAAAAAAAC0/_R_lrx4Vjp4/s1600/Labeled.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="266" src="http://3.bp.blogspot.com/_cftsv1Tl2kY/TFNNzc9stFI/AAAAAAAAAC0/_R_lrx4Vjp4/s400/Labeled.jpg" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Formulario con 2 controles "Tlabelededit" añadidos&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Al control "TlabeledEdit1" le modificamos las siguientes propiedades:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;"Name"&lt;/b&gt;=TextoNombre&lt;br /&gt;&lt;b&gt;"EditLabel.Caption"&lt;/b&gt;=Nombre&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Al control "TlabeledEdit2" le modificamos las siguientes propiedades:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;"Name"&lt;/b&gt;=TextoEdad&lt;br /&gt;&lt;b&gt;"EditLabel.Caption"&lt;/b&gt;=Edad&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Ahora vamos a la pestaña "Standard" y agregamos 3 componentes "Tbutton"&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Al control "Tbutton1" le modificamos las siguientes propiedades:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;"Name"&lt;/b&gt;=BotonAgregar&lt;br /&gt;&lt;b&gt;"Caption"&lt;/b&gt;=Agregar&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Al control "Tbutton2" le modificamos las siguientes propiedades:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;"Name"&lt;/b&gt;=BotonEditar&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;"Caption"&lt;/b&gt;=Editar&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;Al control "Tbutton3" le modificamos las siguientes propiedades:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;"Name"&lt;/b&gt;=BotonEliminar&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;"Caption"&lt;/b&gt;=Eliminar&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Con todos estos cambios, nuestro formulario debe quedar así:&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_cftsv1Tl2kY/TFNQYsJvc8I/AAAAAAAAADE/nRksuGp4E9E/s1600/botones.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="266" src="http://3.bp.blogspot.com/_cftsv1Tl2kY/TFNQYsJvc8I/AAAAAAAAADE/nRksuGp4E9E/s400/botones.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Ahora vamos al evento "Onclic" del boton AGREGAR, lo cual se puede hacer haciendo doble clic sobre el boton en tiempo de diseño; y agregamos el código como se muestra a continuación:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: xx-small;"&gt;&lt;b&gt;procedure&lt;/b&gt; TPruebaZeos&lt;b style="color: red;"&gt;.&lt;/b&gt;BotonAgregarClick&lt;b style="color: red;"&gt;(&lt;/b&gt;Sender: TObject&lt;b&gt;&lt;span style="color: red;"&gt;);&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;&amp;nbsp; Tabla.Insert; &lt;span style="color: blue;"&gt;//Se pone la tabla en modo de inserccion&lt;/span&gt;&lt;br /&gt;&amp;nbsp; Tabla.FieldByName&lt;b style="color: red;"&gt;(&lt;/b&gt;'nombre'&lt;b&gt;&lt;span style="color: red;"&gt;).&lt;/span&gt;&lt;/b&gt;Text:=TextoNombre.Text&lt;b style="color: red;"&gt;;&lt;/b&gt;&lt;span style="color: blue;"&gt; //se carga el valor del nombre&lt;/span&gt;&lt;br /&gt;&amp;nbsp; Tabla.FieldByName&lt;b style="color: red;"&gt;(&lt;/b&gt;'edad'&lt;b style="color: red;"&gt;).&lt;/b&gt;Value:=StrToInt&lt;b&gt;&lt;span style="color: red;"&gt;(&lt;/span&gt;&lt;/b&gt;TextoEdad.Text&lt;b style="color: red;"&gt;);&lt;/b&gt; &lt;span style="color: blue;"&gt;//se carga el valor de la edad&lt;/span&gt;&lt;br /&gt;&amp;nbsp; Tabla.Post&lt;b style="color: red;"&gt;;&lt;/b&gt;&amp;nbsp; &lt;span style="color: blue;"&gt;//se ejecuta la inserccion&lt;/span&gt;&lt;br /&gt;&lt;b&gt;end; &lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Ejecutamos el programa y probamos la insercción de registros:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-ed419fad4ae5af9b" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v2.nonxt1.googlevideo.com/videoplayback?id%3Ded419fad4ae5af9b%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330191772%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D29A590F44B5B20A2E53647DB8020A556451B69AC.7EDB276F2DCE74647738BB035C43F0ED05BD455%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Ded419fad4ae5af9b%26offsetms%3D5000%26itag%3Dw160%26sigh%3DcWBOrXWcqEflGSb3PPq6H4asrS8&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v2.nonxt1.googlevideo.com/videoplayback?id%3Ded419fad4ae5af9b%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330191772%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D29A590F44B5B20A2E53647DB8020A556451B69AC.7EDB276F2DCE74647738BB035C43F0ED05BD455%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Ded419fad4ae5af9b%26offsetms%3D5000%26itag%3Dw160%26sigh%3DcWBOrXWcqEflGSb3PPq6H4asrS8&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;Muy bien, ahora vamos a la parte de la edición, esto va a funcionar de la siguiente manera: Se selecciona un registro a editar haciendo clic directamente sobre el "Grid", posteriormente ingresamos los nuevos datos en los controles de "Nombre" y "Edad" y en ese momento si presionamos el botón de "edición" cuyo código es el siguiente:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;procedure&lt;/b&gt; TPruebaZeos.BotonEditarClick&lt;b style="color: red;"&gt;(&lt;/b&gt;Sender: TObject&lt;b&gt;&lt;span style="color: red;"&gt;);&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;&amp;nbsp; Tabla.Edit;&lt;span style="color: blue;"&gt; //Se pone la tabla en modo de edicion&lt;/span&gt;&lt;br /&gt;&amp;nbsp; Tabla.FieldByName&lt;b&gt;&lt;span style="color: red;"&gt;(&lt;/span&gt;&lt;/b&gt;'nombre'&lt;b style="color: red;"&gt;)&lt;/b&gt;.Text:=TextoNombre.Text&lt;b&gt;&lt;span style="color: red;"&gt;;&lt;/span&gt;&lt;/b&gt; &lt;span style="color: blue;"&gt;//se carga el valor del nombre&lt;/span&gt;&lt;br /&gt;&amp;nbsp; Tabla.FieldByName&lt;b style="color: red;"&gt;(&lt;/b&gt;'edad'&lt;b style="color: red;"&gt;)&lt;/b&gt;.Value:=StrToInt&lt;b style="color: red;"&gt;(&lt;/b&gt;TextoEdad.Text&lt;b style="color: red;"&gt;);&lt;/b&gt;&lt;span style="color: blue;"&gt; //se carga el valor de la edad&lt;/span&gt;&lt;br /&gt;&amp;nbsp; Tabla.Post&lt;b style="color: red;"&gt;;&lt;/b&gt;&amp;nbsp; &lt;span style="color: blue;"&gt;//se ejecuta la edición&lt;/span&gt;&lt;br /&gt;&lt;b&gt;end;&amp;nbsp; &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Notese que la única diferencia con respecto al código del boton de "agregar" es que la tabla se ponde en modo de edición en vez de insercción.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-78d41a10b98591b1" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v22.nonxt6.googlevideo.com/videoplayback?id%3D78d41a10b98591b1%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330191772%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D3EEF00E73319B10FA6E65F789985086A672D48D0.40ADD6797ED7F1FD7DE4F3695BE7095BC24C964E%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D78d41a10b98591b1%26offsetms%3D5000%26itag%3Dw160%26sigh%3DaEHy2rkhmOya7SkH40YoGsJXyIY&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v22.nonxt6.googlevideo.com/videoplayback?id%3D78d41a10b98591b1%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330191772%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D3EEF00E73319B10FA6E65F789985086A672D48D0.40ADD6797ED7F1FD7DE4F3695BE7095BC24C964E%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D78d41a10b98591b1%26offsetms%3D5000%26itag%3Dw160%26sigh%3DaEHy2rkhmOya7SkH40YoGsJXyIY&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;Para eliminar un registro, primero lo seleccionamos en el "Grid" y luego damos clic en el botón "Eliminar". A continuación tenemos el código de dicho botón:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;procedure&lt;/b&gt; TPruebaZeos.BotonEliminarClick&lt;b style="color: red;"&gt;(&lt;/b&gt;Sender: TObject&lt;b&gt;&lt;span style="color: red;"&gt;);&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;&amp;nbsp; Tabla.Delete; &lt;span style="color: blue;"&gt;//Se borra el registro actualmente seleccionado en el grid&lt;/span&gt;&lt;br /&gt;&lt;b&gt;end;&amp;nbsp;&amp;nbsp;&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-545a9b759c7e4766" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v13.nonxt5.googlevideo.com/videoplayback?id%3D545a9b759c7e4766%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330191772%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D5EB0B96E4874DD131438AFF22F2D4BC76BBB4971.2AD964A29FE8BF1BD1BC36CB3D31668B7B7225F4%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D545a9b759c7e4766%26offsetms%3D5000%26itag%3Dw160%26sigh%3DOM5SZ8eLVPNCnsPHkAT2DRnPYS8&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v13.nonxt5.googlevideo.com/videoplayback?id%3D545a9b759c7e4766%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330191772%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D5EB0B96E4874DD131438AFF22F2D4BC76BBB4971.2AD964A29FE8BF1BD1BC36CB3D31668B7B7225F4%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D545a9b759c7e4766%26offsetms%3D5000%26itag%3Dw160%26sigh%3DOM5SZ8eLVPNCnsPHkAT2DRnPYS8&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="color: orange; text-align: center;"&gt;&lt;span style="font-size: large;"&gt;Descarga del proyecto: &lt;a href="http://www.4shared.com/file/ZmtBTzyw/Ejemplo_Zeos_Lazarus.html"&gt;http://www.4shared.com/file/ZmtBTzyw/Ejemplo_Zeos_Lazarus.html&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: orange; text-align: center;"&gt;&lt;span style="font-size: large;"&gt;Enlaces de Lazarus en español:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-size: large;"&gt;&lt;a href="http://www.clublazarus.com/"&gt;http://www.clublazarus.com/&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;a href="http://hispalazarus.mi-web.es/foro/"&gt;&lt;span style="color: black; font-size: large;"&gt;http://hispalazarus.mi-web.es/foro/&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="color: orange; text-align: center;"&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060677996370570966-7254607123095284702?l=lazaruszeos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lazaruszeos.blogspot.com/feeds/7254607123095284702/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://lazaruszeos.blogspot.com/2010/07/uso-de-componentes-zeos-en-lzarus-y.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060677996370570966/posts/default/7254607123095284702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060677996370570966/posts/default/7254607123095284702'/><link rel='alternate' type='text/html' href='http://lazaruszeos.blogspot.com/2010/07/uso-de-componentes-zeos-en-lzarus-y.html' title='Uso de componentes Zeos en Lazarus y Delphi'/><author><name>Fabio Ferreira</name><uri>http://www.blogger.com/profile/09913502342006431214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_cftsv1Tl2kY/TFGRPXapIVI/AAAAAAAAAAM/XARxsc6vn4k/S220/foto.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cftsv1Tl2kY/TFI2AwB-BFI/AAAAAAAAABU/UVz66c1fAwo/s72-c/Zeos.jpg' height='72' width='72'/><thr:total>1</thr:total></entry></feed>
