Está en la página 1de 9

DesarrollodeaplicacionesconGambas.

TutorialyejemplodeunprogramahechoconGambas.
Sumario:VamosacrearunaaplicacinsencillaconGambas.Veremoscmoseprogramanloseventosyalgunostrucosytcnicas detrabajoconestemagnficoentornodedesarrollo. DavidAsoreylvarez.Febrerode2005. Introduccin Primerospasos Gestindeeventos Consideracionesrelativasaldiseodeformularios Algrano... Accin"Limpiar" Accin"Aadir" Accin"Modificar" Accin"Borrar" Accin"Salir" Accin"Abrir" Accin"Guardar" Unltimoajuste Nuestroprogramafuncionando Distribuyendonuestraaplicacin Conclusiones Acercadeestedocumentoydelautor Notas

Introduccin
GambasesunaherramientadedesarrollovisualdeaplicacionesmuysimilaralosconocidosprogramascomercialesMicrosoftVisual BasicoBorlandDelphi. ConGambassepuedenhaceraplicacionesoprogramasconinterfazgrficadeformamuyrpida,puesintegranundiseadorde formulariosoventanas,uneditordecdigo,unexploradordeclases,unvisordeayuda,etc. EstetipodeherramientashansidosiempremuyhabitualesenlaplataformaMicrosoftWindows,peroparaLinuxnoexistantantas,o biennoestabantandepuradas.PodemosencontrarKdevelop,KylixoVDKBuilder.Hayquedestacarqueeneldesarrollode aplicacionesenLinuxhayunalargatradicinycostumbredeemplearmuchasherramientasdiferentes,cadaunaespecializadaenuna tareaenconcreto(p.ej.,uncompilador,uneditor,undepurador,cadaunoporseparado),porloqueestetipodeherramientas integradas(IDE)nohanaparecidohastahacepoco. Existeungrupodeprogramadoresydesarrolladoresqueestnacostumbradosaestasherramientasintegradas,yaseaporquesuelen trabajarconellasenotrasplataformasoporquelesresultamscmodoofcil. Gambasesunaherramienta,que,enpalabrasdesuautor,BenotMinisini,permitelacreacindeprogramaspotentes,deformafcil ysencilla.Ellenguajedeprogramacinqueseutilizaesunaversindel"viejo"BASIC.Puedesorprenderquesehayaescogidoun lenguajetanbsicoeinclusolimitadocomoeselBASIC,peronohayqueolvidarqueunodelosobjetivosdelaherramientaes acercareldesarrollodeaplicacionesapersonasnoexpertasenlaprogramacin. Elobjetivodeestetutorialespresentarunpocoporencimalaherramienta,perovamosapresuponerqueellectoryasabe programarunpoco,yquetrminoscomofuncin,evento,variableysimilareslesonfamiliares.Hayexcelentestutoriales disponiblesenInternet(1),yelpropioprogramaincorporaunnavegadordedocumentacinbastantecompleto.

LaversindeGambasutilizadaalredactarestetutorialesla1.01.LapginawebdeGambasestenhttp://gambas.sourceforge.net

Descargarelprogramadeejemplo:agenda.tar.gz Estetutorialenpdf:gambas_tutorial.pdf

Primerospasos
Paranorepetirnosyaportaralgomsaloqueyahayescrito,novamosaentrarencmoeselentornodedesarrollo,niparaqu sirvecadaherramienta,etc.EnlapropiadocumentacindeGambasvienenalgunostutorialesintroductoriosyunapartadollamado "VisualIntroductiontoGambas". Enestetutorialintentaremoshacerunprogramacompletoyfuncionaldesdeelprincipio,ysolucionaremoslasnecesidadessegn vayansurgiendo. Vamosacrearunprogramaqueseaunaespeciedecuadernooagendaparatomarnotas.Sepodrnaadiroborrarnotas,adems demodificarlasexistentes.Encualquiermomentosepuedenguardarlasnotasaunficheroorecuperarotrasdeunfichero. EnGambas,seleccionamoslaopcin"Nuevoproyecto".Seleccionamoscrearunproyectogrficoyelprogramanospidealgunos datoscomoelnombreyttulodelproyecto:

Tambinnosdejaelegirdosopcionesadicionales:"Elproyectoestraducible"y"Loscontrolesdelformulariosonpblicos".Las dejamossinmarcaryseguimos. Acontinuacinseleccionamoseldirectoriodondequeremosguardarelproyectoyfinalizamoselasistenteparalacreacinde proyectos.Conelbotnderechopulsamosenelapartado"Formularios"yseleccionamoslaopcin"Nuevoformulario". Vamosadisearelformularioconun"ListBox"yvariosbotonesparaaadir,modificar,borrar,etc.Eldiseoqueproponemossera algoas:

Tenemosun"Label",un"ListBox"yvariosbotones,queseinsertanenelformularioseleccionndolosenlacajadeherramientasy "dibujndolos"sobreelformulario.Lomsdestacableenestecasosonlosbotones"Abrir","Guardar"y"Salir",queloshemos situadoencimadeun"Panel"envezdesobreelformulariodirectamente. Paraconseguirquelosbotonesrespondana"atajosdeteclado",hayqueponerun"ampersand"(&)delantedelaletraqueservir como"atajo". Paracrearelmen,pulsamosconelbotnderechoencualquierpuntovacodelformularioyseleccionamoslaopcin"Editorde men":

Alcrearlosbotonesylasdistintasentradasenelmenpodemosobservarenlaventanadepropiedadesquehay,apartedelas opcionestpicas(nombre,clase,textoamostrar,etc.),unaopcinllamada"Grupo".Estaopcinesmuyinteresante,puestoquesi tenemosvarioscontroles(p.ej.,elmen"Abrir"yelbotn"Abrir")quedebenhacerlomismo,asocindolosalmismogruposlo tenemosqueescribirelcdigocorrespondientealgrupodeaccionesalquepertenececadacontrol. Aspues,ennuestroprogramadeejemplo,hemosasociadoalgrupo"Abrir"elmenyelbotn"Abrir",algrupo"Guardar"elbotn yelmen"Guardar",etc. Siahorahacemosclickenunbotnoenelmencorrespondiente,senosabrireleditordecdigoposicionndoseelcursorenla

declaracindeunprocedimientoquesellamaigualqueelgrupodeacciones.

Gestindeeventos
Losprogramasconinterfazgrficadeusuariosuelenbasarsufuncionamientoeneventos.Estoes,cadavezqueelusuario"hace algo"enlaaplicacin,segenerauneventoysteeventopuedetenerasociadounafuncinoprocedimientoquerespondaalaaccin delusuario. Si,porejemplo,elusuariohaceclickenuncontroldeterminado,segeneranvarioseventos:MousePress,alpresionarelbotndel ratn,MouseRelease,alliberarelbotndelratn,Clickcomoresultadodeestaaccin.Sielusuariohacedobleclick,elevento generadoesunDblClick.Porsupuesto,notodosloscontrolessoncapacesderesponderatodosloseventos.Notienesentido hablardeleventoResizeenunbotn,puestoqueesteeventosegeneraalredimensionarunaventana. EnGambas,paraintroducirelcdigodelprocedimiento(2)correspondienteaunevento,sedeclaradelasiguientemanera:
PBIUoto_vno ULCSBCnrlEet

DondeC n r l o t o eselnombredelcontrolqueestrespondiendoaleventoyE e t eseleventoqueseproduce.Algunoscontroles vno tienenuneventopredeterminado,queeselmsusual:unbotntienecomoeventopredeterminadoelC i k l c ,etc. EnGambas,alhacerclicksobrecualquiercontrol,seabreeleditordecdigoenladeclaracindeleventopredeterminado,conuna excepcin.Comocomentbamosantes,sielcontrolestasociadoaungrupodeacciones,eleditorseabreenladeclaracindel procedimientocorrespondientealgrupodeacciones.

Consideracionesrelativasaldiseodeformularios
Aldisearelformulariodelaaplicacin,debemostenerencuentavariascuestiones: Notodoslosusuariosutilizanlamismaresolucindepantalla,gestordeventanasytipodefuentes.Hayquetenercuidadoy notratarde"aprovechar"demasiadoelespacio.Podemosacabarconetiquetasdetexto(Label)ilegibles,botonesconeltexto cortado,etc Porlamismarazn,convienequelaventanaprincipaldelaaplicacinsearedimensionableporelusuario(enGambasesla propiedadBorderdelformulario.NoesrecomendablefijarestapropiedadaFixed. Alcrearelformulario,senosofrecenvariasopcionesquepuedenserinteresantes: Lasopcionesrelativasalconstructorydestructornossirvenenelcasodequequeramoshaceralgunaoperacinsobreel formularioantesdevisualizarloyalcerrarlo,respectivamente. Aparecenlassiguientesdeclaraciones:
'Gmals abscas flULCSB_e( iePBIUnw) ED N PBIUfe( ULCSB_re) ED N PBIUomOe( ULCSBFr_pn) ED N

Siseleccionamoselegimoslasopciones"Constructoresttico"y"Destructoresttico",lasdeclaracionesquenosaparecen ahoraeneleditordecdigoson:

'Gmalsie abscasfl SAIULCSB_nt) TTCPBIUii( ED N SAIULCSB_xt) TTCPBIUei( ED N PBIUnw) ULCSB_e( ED N PBIUfe( ULCSB_re) ED N PBIUomOe( ULCSBFr_pn) ED N

Podemosasalterarelcomportamientodenuestraaplicacinalabrirsey/ocerrarseelformulario.Queelprocedimientoest declaradocomoSTATICsignificaqueslopodraccederavariablesdeclaradastambincomoSTATIC.

Algrano...
Yatenemosnuestroformulariodiseado.Ahorasetratadeimplementarfuncionalidadaloscontroles. Loprimeroquevamosahaceresquelosbotones"Aadir","Modificar","Borrar"y"Limpiar"(ylasentradascorrespondientesenlos mens)funcionen.

Accin"Limpiar"
EstebotnseencargadeborrartodaslasentradasquehayaenelListBox.Parasabercmohacersto,buscamosenelnavegador deayudaladocumentacinrelativaalcontrolListBox:

Ladocumentacinseencuentrabajoel"rbol"g . t b q ,queesdondeseencuentraladocumentacindetodosloscontrolesdeltipo "visual"(botones,etiquetas,mens,etc...).VemosqueelListBoxproporcionaunmtodo"C e r l a ",queprecisamentehaceloque queremos:borrartodoelcontenidodelcontrol. Haciendoclickenelbotn"Limpiar",seabreeleditordecdigoenelprocedimientocorrespondiente.Aadimoselsiguientecdigo:


PBIUipa_lc( ULCSBLmirCik) LsBx.la( ito1Cer) ED N

Fcil,verdad?.

Accin"Aadir"
Estoyaesunpocomscomplicado.Queremosqueelusuario,alpulsarelbotn,puedaescribirunalneadetextoquesecargueen elListBox. Gambasnoproporcionapordefectoundilogodeltipo"InputBox",asquelovamosacrearnosotrosmismos.Creamosunnuevo formulario,peroahorasquequeremosdisponerdeunconstructor.Porqu?.Porqueenelmomentodecrearlocambiaremos algunaspropiedadescomoelttulo,algnmensajedetextoyunvalorpordefectoparalaentradadetexto.Esteeseldiseoque proponemos:

Elformularionotienemuchacomplicacin.DisponedeunaetiquetaoL b l a e ,unaentradadetexto(T x B x e t o )ydosbotones. Comobuencuadrodedilogoqueseprecie,esconvenientequesepuedacancelarconlateclaE c p yaceptarconlatecla sae Etr ne: LoscontrolesB t o tienendospropiedadesadecuadasparaestecometido.Son"Default"y"Cancel".Paraelbotn"Aceptar", utn ponemos"Default"aT u y"Cancel"aF l e re a s .Paraelbotn"Cancelar",alcontrario. Deestamanera,cuandoseabraelformulario,unapulsacinenlatecla<E T R N E >serequivalenteapulsarelbotn"Aceptar"yuna pulsacinenlatecla<E C S >simularelbotn"Cancelar". Elsiguienteproblemaquesenosplanteaescmoretornarelvalorqueintroduceelusuarioenlaentradadetextoalaventana principal.HayquedestacarqueenGambasnohayvariablesglobales,asquetendremosquebuscarotrasolucin.Enel"Consejo deldan7",(men"?>Consejosdelda")senossugierequecreemosunmduloenelcualponemosunavariablePUBLIC,as puedeseraccedidadesdecualquierpuntodelaaplicacin. Creamosunmdulo(botnderechoen"Mdulos>Nuevomdulo")ylollamamosM o u ,porejemplo.Estaserala Cmn implementacindelmdulo:
'Gmaouefl absmdlie PBIetSSrn ULCtxoAtig

As,sinms.Ahoratenemosunavariablevisibledesdecualquierpuntodelprogramaquepuedeseraccedidaconlanotacin
Mou.et Cmntxo

Losiguienteesimplementarelformularioqueharlasvecesde"InputBox".Estaserasuimplementacin:
'Gmalsie abscasfl PBIUnwttlSSrn,mnaeAtigPINLtxo ULCSB_e(iuoAtigesjSSrn,OTOAet Atig SSrn) M.atoiuo ECpin=ttl Lbl.atoesj ae1Cpin=mnae 'utigsvlacmasietvco nSrneeaooFless"a" IetHNTxBx.et=txo FtxoTEeto1Txet ED N PBIUutn_lc(seelbtnAetr ULCSBBto1Cik)'Etseocpa Mou.eteto1Tx Cmntxo=TxBx.et M.ls() ECoe0 ED N PBIUutn_lc(seelbtnCnea ULCSBBto2Cik)'Etseoaclr M.ls() ECoe0 ED N

Elprocedimiento_ e eselconstructor.Comonosinteresaqueeltextodelaetiqueta,elttuloyeltextoaeditarseandistintoscada nw vez,losajustamosalcrearlaventana. Elbotn"Aceptar"asignaeltextoenelT x B x e t o enlavariablet x o e t delmduloM o u ycierraelformulario.Elbotn"Cancelar" Cmn simplementecierralaventana. ComolavariableM o u . e t escomn,tenemosqueacordarnosde"limpiarla"cadavezquelautilicemos.Vamosaverloahora Cmntxo mismo. Elprocedimientoparaelbotn"Aadir"delformularioprincipaleselsiguiente.Esbastanteautoexplicativo:
PBIUnai_lc( ULCSBAndrCik) 'DcaaousrIpto" elrmsneto"nubx fAIpto SFnuBx 'CemsenuBxadllttl,mnaeamsrr raolIpto,psnoeeuoesjota

'yuaooeet:lehoadlmmnoyuafeht nvlrprdfcoafcayhreoetnlcia f=NWFnuBx"srbretaa, EIpto(Eciinrd" "srbalnaqedsaaai:, Ecialeueedr" Ct(o)&") SrNw>" 'Lotao omsrms fSoMdl) .hwoa( 'Sausdcpaaeiotxo ihnplaoaetryhnmtdet, 'etrnlaibeMou.et saeavralCmntxo ICmntxoTEUacdnasFle FMou.etHN'naeavcaeas 'Eotoitoinnmtdaaaaiet:.d lcnrlLsBxteeuooprdrtxoAd LsBx.d(Cmntxo ito1AdMou.et) '"aimsavralo Vcao"laibecmn Mou.et" Cmntxo=" EDI NF ED N

Accin"Modificar"
Alpulsarestebotn,elusuariomodificaralgunadelasentradasquehayaenelListBox.Sinohayninguna,elbotnnodebehacer nada,ysinohanseleccionadoningunalnea,mostrarunmensajedeaviso.Veamoslaimplementacindelprocedimientoasociado.
'AcMdfcr cin"oiia" PBIUoiia_lc( ULCSBMdfcrCik) fAIpto SFnuBx Iito1Cut>0TEinaaaelfruai, FLsBx.onHN'Sohyndneomlro upoiddCute.Esecs, 'srpeaons0netao ohcmsnd. 'naeoaa Iito1Idx=HN FLsBx.ne1TE 'Lrpeaneoeuleeniedalnaslcind. apoiddIdxnsdvevldceleeecoaa 'Sohyslcindign,dvev1netaovsms inaeecoaannuaeule.Esecs,aiao 'asaiohcmsms luuroynaeo. msaeIf(Dbeecoaalnaqedsamdfcr" esg.no"eeslcinrleueeoiia.) ES LE 'Esaiaslcindneneito. luuroheecoaoualnaelLsBx 'MsrmsnetoIpto,psnoetmineeteecoao otaousrnuBxadlabltxoslcind. 'EeteecoaoeapoiddTxebeoLsBxtm ltxoslcindslrpeaetdlojtitoIe 'slcind,aueacduvzcnlrpeaeetd eecoaolqesceeaseoapoiddSlce 'dlLsBx eito f=NWFnuBx"oiianrd" EIpto(Mdfcretaa, "oiiualnaslcind:, Mdfqeleeecoaa" LsBx.urn.et ito1CretTx) fSoMdl) .hwoa( 'EudodilgIptooiialaibecmatd lcaredooFnuBxmdfcavralopria 'elmdlCmn neuoMou. 'Soeta,lsgaolLsBxtmslcind. insvcaaainmsaitoIeeecoao ICmntxoTEito1CretTxCmntxo FMou.etHNLsBx.urn.et=Mou.et 'Cmne,"aimsavralopriadsusdsra ooatsvcao"laibecmatdepeual. Mou.et" Cmntxo=" EDI NF EDI NF ED N

Accin"Borrar"
Comoenelcasoanterior,elListBoxdebeteneralgunalnea,yelusuariodebehaberseleccionadounaalmenos.Elcdigoessimilar aldelbotn"Modificar":
PBIUorrCik) ULCSBBra_lc( iAnee SItgr i=LsBx.ne ito1Idx I=0TE Fi>HN LsBx.eoei'EooRmvutne,jso ito1Rmv()lmtdeoeqiaualnaut 'luurms oqeqeeo ESFLsBx.onN1TE LEIito1Cut>0ADi=HN 'Cmrbmsqeeitooetau opoaoulLsBxnsvcoyqe 'hyloslcind. aaageecoao msaeIf(Dbeecoaalnaqedsabra.) esg.no"eeslcinrleueeorr"

EDI NF ED N

Podemosobservarquelaimplementacindeestascuatroaccionesescomnparalosbotonesylasentradasequivalentesenel men. Ahorapasamosaimplementarlasaccionesrelativasalmanejodeficheros(Abrir,Guardar)ysalirdelaaplicacin.Empezaremos porlofcil:

Accin"Salir"
Lafuncindeestebotn(ylacorrespondienteentradaenelmen)escerrarlaaplicacin.Nadamssencillo:
PBIUai_lc( ULCSBSlrCik) M.ls()'Msuarfrnilpoiomlro ECoe0Eeneeecaarpofruai FnuBx Ipto ED N

Sepodrahacerunpocomsamigableestaaccinagregandoundilogodeltipo"EstUd.segurodequequieresalirdela aplicacin?"yactuarenconsecuencia.Dejamosestamejoracomoejercicioparaellector.

Accin"Abrir"
Qusesuponequedebehacer?.Puespreguntarlealusuarioporunarchivo,leerloycargarelcontenidoenelListBox.Veamos directamentelaaccincorrespondiente:
PBIUbi_lc( ULCSBArrCik) DMcAtig ISSrn DMarcdnsAtig] Ir_aeaSSrn[ Dao.ilSlcinnacio ilgTte="eecoeurhv" Dao.itr=["aoeaed*dt),"oooihrs(.) ilgFleDtsdgna(.aa"Tdslsfceo**"] IOilgOeFl(HN FNTDao.pnie)TE arcdns=SltFl.ODDao.ah,"n) r_aeapi(ieLA(ilgPt)\" LsBx.la( ito1Cer) FRECNarcdns OAHcIr_aea LsBx.d() ito1Adc NX ET EDI NF ED N

EstetrozodecdigosenospresentaunacaractersticamuyinteresantedeGambas,lasclases"noinstanciables"oestticas(3).Son clasesquenopuedeninstanciarseperopuedenutilizarsedirectamente.Enestaaccinvemosenaccindosdeestasclases:laclase" F l "y"D a o ". ie ilg Porejemplo,laclaseD a o proporcionaaccesoalostpicoscuadrosdedilogodeseleccindeficheros,colores,etc.Est ilg documentadaeng . t bq

Ennuestraaplicacin,queremosseleccionarunficheroycargarlo.Parahacersto,utilizaremoslaclaseD a o delasiguiente ilg forma:


Dao.ilSlcinnacio ilgTte="eecoeurhv" Dao.itr=["aoeaed*dt),"oooihrs(.) ilgFleDtsdgna(.aa"Tdslsfceo**"] IOilgOeFl(HN FNTDao.pnie)TE 'ec.. t.

Ajustamoselttulodelcuadrodedilogo,proporcionamosunfiltroparalaseleccindeltipodeficheroporextensinyfinalmente invocamoselmtodoO e F l ( delaclase.Curiosamente,siNOseseleccionaunfichero(elusuariopulsa"Cancelar",etc...),el pnie) valorderetornodelmtodoO e F l ( esT u .Unavezseleccionadoelficheroporpartedelusuario,podemosaccederala pnie) re rutacompletaconlapropiedadD a o . a h ilgPt

LaclaseF l (sudocumentacinseencuentra"colgando"delaentradag )proporcionavariosmtodosparatrabajarconficheros. ie b

EnladocumentacindeGambas,enlaseccin"HowdoI..."semuestranvariosejemplosparaleeryescribirficheros.Nosotros vamosautilizarennuestraaplicacinelmtodoL a ( ,querecibecomoargumentolarutadeunficheroydevuelveunS r n con od) tig todoelcontenidodelfichero.Parasepararlaslneasquecontieneelfichero,utilizamoslafuncinS l t ) p i ( ,quetomacomo argumentoslacadenaquequeremos"partir",elcarcterautilizarcomoseparador(unsaltodelneaennuestrocaso,"\ ")y n devuelveunA r y S r n s r a de t i g .Porellohemosdeclaradolavariablea r c d n s r _ a e a comoS r n [ : tig]
DMarcdnsAtig] Ir_aeaSSrn[

Unavezquetenemoslalistadecadenascontenidasenelfichero,limpiamoselListBoxyvamosaadiendounaaunacadacadena utilizandoelmtodoA d ) d ( delListBox.

Accin"Guardar"
Alpulsarelbotn"Guardar"olaentradaequivalenteenelmen,elprogramadebevolcarloscontenidosaunficherodetexto. Mostraremosuncuadrodedilogoalusuarioparaquenosproporcioneelnombredelficheroautilizar.Esteeselcdigo correspondiente:
PBIUura_lc( ULCSBGadrCik) lnaSSrn iesAtig dsioAtig etnSSrn nmrhvSItgr uAcioAnee lnaito1Cnet ies=LsBx.otns Dao.ilSlcinnacio ilgTte="eecoeurhv" Dao.itr=["aoeaed*dt) ilgFleDtsdgna(.aa"] IOilgSvFl(HN FNTDao.aeie)TE Iih$Dao.ah)<.aaHN FRgt(ilgPt,5>"dt"TE dsio=Dao.ah&"dt" etnilgPt.aa ES LE dsio=Dao.ah etnilgPt EDI NF Fl.aedsioies ieSv(etn,lna) EDI NF ED N

Queremosquelosdatosseguardenenunficheroconlaextensin. a a d t ,asquesielnombredelficheroqueproporcionaelusuario noterminaen".data",concatenamosmanualmentelaextensin.Paraguardarelcontenidoenunfichero,utilizamoselmtodo S v ( delaclaseF l ,quetomacomoargumentoslarutaalficheroyeltextoquequeremosvolcar.Accedemosalcontenidodel ae) ie ListBoxmediantesupropiedadC n e t ,quedevuelveunS r n ,conunsaltodelnea"\ "separandocadaentradaenel otns tig n ListBox.

Unltimoajuste
SenosocurrequeserainteresantequecuandoelusuarioseposicioneenunadelaslneasdelListBoxpudiesevisualizarelcontenido completodelalnea,yaquepuedenaparecercortadassisonmuylargas.Lovamosahacerdelasiguienteforma:cuandoelusuario hacedobleclickenunaentrada,elcontenidodelalnealomostraremosenuncuadrodedilogo:
PBIUito1Dllc( ULCSBLsBx_bCik) Iito1Idx>HN FLsBx.ne=0TE msaeIf(ito1CretTx) esg.noLsBx.urn.et EDI NF ED N

Nuestroprogramafuncionando

Distribuyendonuestraaplicacin
Yatenemoslaaplicacincreada.PodemosprobarlaencualquiermomentodeldesarrolloutilizandolateclaF5. Ahoraqueremosutilizarlacomounprogramanormal,sintenerquetenerGambasfuncionando.Paraellohayunaopcinenelmen principaldeGambas("Proyecto>Crearejecutable").Estonosgeneraunarchivoejecutable"monoltico",estoes,incluyetodoslos formularios,implementacinyficherosadicionalesdelproyecto.Esteejecutablenoescdigomquina,es"bytecode"ejecutablepor elintrpretedeGambas,g x b .EstoimplicaquenecesitamostenerinstaladoGambasparaejecutarprogramasescritosconGambas (aligualqueotroslenguajes:senecesitatenerJavaparaejecutaraunprogramaescritoenJava). Porfortuna,enlamayoradelasdistribucionesqueincluyenGambassehanseparadoloscomponentesyhayun"Gambasruntime", queincluyeelintrprete,peronoelentornodedesarrollocompleto. TambinpodemoscrearpaquetesRPMoDEBparanuestroprograma.Estospaquetestendrncomodependenciaelintrpretede Gambas(elg m a u t m ).Hayunasistentemuyfcildeusarparacrearlospaquetes("Proyecto>Crearpaquetede absrnie instalacin...").

Conclusiones
HemosvistolofcilqueescrearunaaplicacinmnimamentefuncionalconGambas.Proporcionabastantescontrolesyclases predefinidas.Haytambinextensionesparacrearaplicacionescliente/servidor,accesoabasesdedatos,multimedia,etc. Personalmentemeparecequeesunaherramientaconmuchsimofuturo,y,afortunadamente,eldesarrollodeGambasesmuyactivo, corrigindoseloserroresquevansurgiendoconmucharapidez. Gracias,Benot(etcol.)!Excelentetrabajo!

Acercadeestedocumentoydelautor
Comomencionbamosantes,laaplicacinsehadesarrolladoutilizandolaversin1.01deGambas(heutilizadolospaquetes precompiladosparaDebian"Sid").Enelmomentodeescribirestedocumento,laversin1.0.3acabadeserpublicada,yenel momentoenqueleasestedocumento,probablementehayaunaversinmsmoderna.Convieneleerlalistadecambiosdeuna versinaotraporsiseproducealgunaincompatibilidad. Cualquiercomentario,sugerenciaomejoradeestedocumentoesbienvenida. Micorreoesforodejazz(arroba)gmail(punto)com Rollolegal:Estedocumentoeslibre,puedescopiarlo,distribuirlo,modificarlo,enlazarlo,traducirloaotraslenguaseinclusovenderlo, perosiempreconservandoestanotaycitandolaprocedenciadeldocumento.Encualquiercaso,elautoragradeceraquesele notificase,yenunmomentodado,serretribuidoeconmicamenteporsuesfuerzo(sicuela,cuela)

Notas
1. HayunbuentutorialdeiniciacinydocumentacindeGambasencastellanoenhttp://gambas.gnulinex.org 2. Loseventosdebentratarseconunprocedimiento,estoes,unafuncinquenoretornavaloralguno. 3. Nosoyexpertoenlaterminologausadaenlaprogramacinorientadaaobjetos,asque,probablementeestarusandoalgn trminoincorrectamente.Misdisculpas)

También podría gustarte