>tili%ación de 'aria&les en la Progra#ación descripti'o !n el e2e#plo #encionado anterior#ente, si desea sustituir una 'aria&le en lugar de utili%ar una e+presión regular, puede ser escrito co#o 9i# u8a#e u8a#e h user10 rowser(QTP Training)Page(QTP Training).ink(te+t3hGo To 8e+t Page ju8a#e,\ "t#l tag3h5)4lick
!l uso de identificadores de ordinales en Progra#ación descripti'o Ta#&i@n puede utili%ar cualuiera de los tres identificadores ordinales (índice, la u&icación, en la progra#ación descripti'a *i usted tiene D ca2as de no#&re de usuario, uno de&a2o del otro en la aplicación de de#ostración de #ercurio, se pueden escri&ir co#o rowser(#icclass3hrowser)Page(#icclass3hPage)e&!dit(t$pe3hte+t,\ na#e3huser8a#e,"t#l tag3hI8P>T,inde+3h)*et #ercur$ rowser(#icclass3hrowser)Page(#icclass3hPage)e&!dit(t$pe3hte+t,\ na#e3huser8a#e,"t#l tag3hI8P>T,inde+3hB)*et #ercur$
5lgunos puntos i#portantes a tener en cuenta con la progra#ación e+positi'a B5l usar progra#ación descripti'o desde un punto específico dentro de una 2eraruía de o&2etos de prue&a, de&e continuar utili%ando Progra#ación descripti'a a partir de ese punto "acia adelante dentro de la #is#a declaración *i especifica un o&2eto de prue&a por su no#&re de repositorio de o&2etos despu@s de ue otros o&2etos de la 2eraruía se "an descrito utili%ando Progra#ación
descripti'o, QTP no será capa% de identificar el o&2eto Por e2e#plo, puede utili%ar rowser(9escB)Page(9escB).ink(descE) , $a ue utili%a Progra#ación descripti'o a tra'@s de toda la 2eraruía de o&2etos de prue&a Puede ta#&i@n utili%ar rowser(Inde+)Page(9escB).ink(descE) , $a ue utili%a Progra#ación descripti'o a partir de un cierto punto en la descripción (a partir de la página de descripción del o&2eto) *in e#&argo, no se puede utili%ar rowser(9escB)Page(9escB).ink(!+a#pleB ″) , $a ue utili%a Progra#ación descripti'o para el rowser $ o&2etos Page, pero a continuación, intenta utili%ar un repositorio de o&2etos no#&re para el o&2eto de la prue&a !nlace (QTP intenta locali%ar el o&2eto de 'ínculo &asado en su no#&re, pero no puede locali%arlo en el repositorio $a ue el padre se especifican #ediante progra#ación descripti'o) DQTP e'alAa todos los 'alores de propiedad en Progra#ación descripti'o co#o e+presiones regulares Por lo tanto, si desea introducir un 'alor ue contiene un carácter de e+presión regular especial (co#o ^,?, = ), use el ] (&arra in'ertida) carácter para instruir QTP para tratar los caracteres especiales co#o caracteres literales !n el e2e#plo anterior , si tu'i@ra#os par@ntesis alrededor de no#&re de usuario, ue "a&ría sido escrito rowser(#icclass3hrowser)Page(#icclass3hPage)e&!dit(t$pe3hte+t,\ na#e3h](user8a#e]),"t#l tag3hI8P>T)*et #ercur$
desde par@ntesis es un carácter especial e+presión regular $ en este caso usted uerría tratarlo co#o un literal .;icclass se #uestra co#o no#&re de clase de o&2eto de espiona2e
*i utili%a 8o#&re de clase en 9P, QTP generará un error F9e alguna #anera "a$ un #ito en la co#unidad QTP ue 9P se puede utili%ar cuando QTP es incapa% de identificar un o&2eto utili%ando los #edios nor#ales Progra#ación descripti'a proporciona una #anera de e'itar repositorio de o&2etos $ le da un poco de fle+i&ilidad para identificar el o&2eto *in e#&argo, si aAn despu@s de la adición de co#ple#entos adecuados no es capa% de identificar un o&2eto utili%ando los #edios nor#ales, no asu#a ue 9P puede 'enir a su rescate
!M!;P.=* !CT:5* Progra#ación !stática 's Progra#ación descripti'a diná#ico3 !nfoue descripti'o estáticawindow(Title3h.ogin)in!dit(5ttac"edTe+t3h5gent 8a#e3,"eig"t3hD,widt"3hBBK )*et a&cd
Progra#ación descripti'o estática3 !sta es rápido $ corto pero puede causar el pro&le#a cuando las secuencias de co#andos están #adurando a un ni'el ue usted pueda necesitar #is#o o&2eto en pantalla diferentes de la #is#a escritura de la prue&a !sta sinta+is tiene el &eneficio de reci&ir un disparo $ rápido, pero puede causar pro&le#as si 'a#os a utili%ar el o&2eto de nue'o en otro lugar !n este caso 'a#os a tener ue reescri&ir las todas las cadenas de descripción, lo ue "ace el código #enos legi&le $ #ás difícil de #antener (es decir, si una de las propiedades i&an a ca#&iar, nos 'ere#os o&ligados a "acer 'arias reparaciones en diferentes lugares a lo largo el código) 9iná#ica Progra#ación descripti'a3 .a ra%ón principal por la ue supongo ue esto se utili%a es por algAn tie#po un o&2eto aparecerá en un padre diferente cada 'e% (por e2e#plo - un pop-up ue aparece &a2o la su&-'entana de iniciar) !n algunas aplicaciones, la Anica #anera de tra&a2ar con tales o&2etos es con
9P 5parte de ue "a$ algunos o&2etos diná#icos, co#o cuadro de lista para ue el contenido se 'a #odificando por lo ue en ese #o#ento esta descripti'o diná#ica será #ás eficiente $ fle+i&le suficiente una 'enta2a #ás es de acuerdo con esto, en lugar de tra&a2ar con un solo o&2eto a la 'e% , pode#os reunir todos los o&2etos en una #atri% ue responden a nuestras propiedades de identificación, $ tra&a2ar con ellos co#o un con2unto, $ ca#&iar el ta#aJo de la #atri% sie#pre ue lo necesite#os Proporciona#os estado de 'alores $ propertie st"at descri&e el o&2eto directa#ente !n el código anterior para colocar a&cd en todo el cuadro in!dit necesita #ás cantidad de declaraciones SQu@ pasa si en el futuro usted o&tiene #ás ue el nA#ero especificado de ca2a in!dit, uno tiene ue escri&ir 'arias instrucciones para aco#odar @l #ientras ue en la progra#ación descripti'a diná#ica ue 'a a tener toda la colección de la ca2a in!dit en una #atri% $ se puede utili%ar en una especie de &ucle, el #e2or e2e#plo podría ser un in.ist o cuadro desplega&le o&2eto !n la progra#ación descripti'a 9iná#ica3 Proporciona#os colección de propiedades $ 'alores a desscription del o&2eto $ luego proporciona#os otras declaraciones en apo$o de la colección de o&2etos por e2e#plo 4"ildo&2ects 5de#ás un o&2eto $ su propiedad contiene el no#&re del o&2eto $ el 'alor de la propiedad del o&2eto a ca#&io, ofrece una colección de o&2etos ue tienen #is#as propiedades >na 'e% ue se crea la propiedad del o&2eto ue pode#os tener agregar, uitar 'alores desde $ "asta la propiedad del o&2eto puede ser introducido durante el tie#po de e2ecución 4ode3 –
6tatic .4 EroIserAZ1L=.)lic EroIserAZ2L=.)lic
–
"ynamic.4 6et oEutton Z "escription.)reate
oEutton
Enfoque descriptivo dinámico.6et my3arZ description.)reate<= my3artL=.3alueZL$gent DameAL my3ar
9e&o decir auí ue no "a$ ninguna regla ue tene#os ue usar estática o diná#ica !"#$"%&%'()* DES'"(!+(,% D(*%&('% #bjDes.'rear#bjDes Dialo/text0Loin/23/4inEdit/3/attac5ed text/3 Datatable.,alue/#bjeto6suario/3122.'lic7 #bjDes.'rear#bjDes Dialo/text0Loin/23/4inEdit/3/attac5ed text/3 Datatable.,alue/#bjeto6suario/3122.+ype daun(terator2 #bjDes.'rear#bjDes Dialo/text0Loin/23/4inEdit/3/attac5ed text/3 Datatable.,alue/#bjeto!ass/3122.'lic7 #bjDes.'rear#bjDes Dialo/text0Loin/23/4inEdit/3/attac5ed text/3 Datatable.,alue/#bjeto!ass/3122.+ype datatable.,alue/pass/312 #bjDes.'rear#bjDes 4indo8/text09li5t "eservation/23/&as7Ed:ox/3/attac5ed text/3 Datatable.,alue/#bjeto!ass/3122.'lic7 #bjDes.'rear#bjDes Dialo/text09li5t "eservation/23/%ctive;/3/acx?@? L#* A@0AA %& 9"% 110BA %& %9 C1>./ 4indo8/9li5t "eservation/2.4inEdit/*ame0/2.Set /:ernardo alonso &ejia/ 4indo8/9li5t "eservation/2.4in"adio:utton/9irst/2.Set 4indo8/9li5t "eservation/2.4in:utton/(nsert #rder/2.'lic7 4indo8/9li5t "eservation/2.%ctivate
QTP 9=T8et6actor$ for#ulario personali%ado !n este artículo se #uestra có#o crear un for#ulario personali%ado (ue se #uestra #ás a&a2o) usando 9ot8et6actor$Para crear el for#ulario, us@ isual *tudio, luego se con'ierte el código en 9=T8et6actor$ para el uso con QTPOo
reco#iendo ue "agas lo #is#o, co#o crear el for#ulario con todos los controles pertinentes sin un diseJador puede ser una tarea tediosa
*inta+is 9ot8et6actor$ .a siguiente sinta+is es co#o una instancia de un tipo de 8!T Puede ser creado con 9=T8et6actor$
*et 'ar\4reateInstance h 9=T8et6actor$4reateInstance (T$pe8a#e V,5sse#&l$W V,argsW)
!+plicación de cada argu#ento de 4reateInstance es la siguiente •
T$pe8a#e3 !l no#&re co#pleto del tipo de o&2eto, por e2e#plo, *$ste#indows6or#s6or#
•
;onta2e3 =pcional
*i el ensa#&lado se carga pre'ia#ente en el
registro, ue no es necesario para entrar en @l
9e lo
contrario, de&erá introducir el no#&re de ruta co#pleta, por e2e#plo, *$ste#indows6or#s
*i desea crear una instancia
de un tipo en el G54 (cac"@ de ensa#&lados glo&al), puede introducir el no#&re corto, por e2e#plo, las for#as •
args3 =pcional .os argu#entos necesarios, en su caso, para el 8o#&re de tipo $ < o 5sa#&lea especificada
!l 4ódigo !l código siguiente "ace ue sea posi&le
Tenga en cuenta
ue todos los ca#pos aJaden a esta for#a tan sólo para fines de de#ostración $ puede ue no sea posi&le "acer cada uno el tra&a2o co#o lo "arían en un entorno 8!T namespace = "System.Windows.Forms" Set oPoint = DotNetFactory.CreateInstance("System.Drawing.Point", "System.Drawing", x, y) Set oo!Strip = DNetFactory.CreateInstance( "System.Windows.Forms.oo!Strip") Set oo!StripDropDown#$tton = DNetFactory.CreateInstance(% "System.Windows.Forms.oo!StripDropDown#$tton") oo!Strip.Items.&dd oo!StripDropDown#$tton oPoint.x = ' oPoint.y = ' Set oo!Strip.ocation = oPoint Set oo!Strip*en$Item = DNetFactory.CreateInstance("System.Windows.Forms.oo!Strip*en$Item") Set oo!StripItem = DNetFactory.CreateInstance(% "System.Windows.Forms.oo!StripItem", namespace, oo!Strip*en$Item) oo!Strip*en$Item.Widt+ = - oo!Strip*en$Item.eig+t = // oo!Strip*en$Item.ext = "New" Set oo!StripItemDisp!aySty!e = DNetFactory.CreateInstance(% "System.Windows.Forms.oo!StripItemDisp!aySty!e") oo!StripDropDown#$tton.Disp!aySty!e = oo!StripItemDisp!aySty!e.ext oo!StripDropDown#$tton.DropDownItems.&dd oo!Strip*en$Item oo!StripDropDown#$tton.ext = "Fi!e" Set C+ec0#ox1 = DNetFactory.CreateInstance( "System.Windows.Forms.C+ec0#ox") oPoint.x = 2 oPoint.y = 31 Set C+ec0#ox1.ocation = oPoint C+ec0#ox1.Widt+ = -' C+ec0#ox1.eig+t = 14
C+ec0#ox1.ext = "C+ec0#ox1" Set C+ec0#ox/ = DNetFactory.CreateInstance( "System.Windows.Forms.C+ec0#ox") oPoint.x = 2 oPoint.y = 55 Set C+ec0#ox/.ocation = oPoint C+ec0#ox/.Widt+ = -' C+ec0#ox/.eig+t = 14 C+ec0#ox/.ext = "C+ec0#ox/" Set 6adio#$tton1 = DNetFactory.CreateInstance( "System.Windows.Forms.6adio#$tton") oPoint.x = 114 oPoint.y = 55 Set 6adio#$tton1.ocation = oPoint 6adio#$tton1.eig+t = 14 6adio#$tton1.Widt+ = -5 6adio#$tton1.ext = "6adio#$tton1" Set 6adio#$tton/ = DNetFactory.CreateInstance( "System.Windows.Forms.6adio#$tton") oPoint.x = 114 oPoint.y = 31 Set 6adio#$tton/.ocation = oPoint 6adio#$tton/.Widt+ = -5 6adio#$tton/.eig+t = 14 6adio#$tton/.ext = "6adio#$tton/" Set #$tton = DotNetFactory.CreateInstance("System.Windows.Forms.#$tton") oPoint.x = 37/ oPoint.y = 141 Set #$tton.ocation = oPoint #$tton.Widt+ = 1'7 #$tton.eig+t = 3#$tton.ext = "C!ose Form" Set Progress#ar = DNetFactory.CreateInstance("System.Windows.Forms.Progress#ar") oPoint.x = 1- oPoint.y = 145 Set Progress#ar.ocation = oPoint Progress#ar.Widt+ = / Progress#ar.eig+t = 33 Set ext#ox = DNetFactory.CreateInstance( "System.Windows.Forms.ext#ox") oPoint.x = 43 oPoint.y = 54 Set ext#ox.ocation = oPoint ext#ox.Widt+ = 1/1 ext#ox.eig+t = /' Set Com8o#ox = DNetFactory.CreateInstance( "System.Windows.Forms.Com8o#ox") oPoint.x = 43 oPoint.y = / Set Com8o#ox.ocation = oPoint Com8o#ox.Name = "Com8o#ox" Com8o#ox.Widt+ = 1/1 Com8o#ox.eig+t = /1 Com8o#ox.Items.&dd "#!ac0" Com8o#ox.Items.&dd "W+ite"
Com8o#ox.Items.&dd "6ed" Com8o#ox.Items.&dd "9reen" Set a8e!1 = DNetFactory.CreateInstance("System.Windows.Forms.a8e!") oPoint.x = 2 oPoint.y = 34 Set a8e!1.ocation = oPoint a8e!1.Widt+ = 22 a8e!1.eig+t = 13 a8e!1.ext = "Com8o#ox" Set a8e!/ = DNetFactory.CreateInstance("System.Windows.Forms.a8e!") oPoint.x = 11 oPoint.y = 23 Set a8e!/.ocation = oPoint a8e!/.Widt+ = 21 a8e!/.eig+t = 13 a8e!/.ext = "ext#ox" Set 9ro$p#ox1 = DNetFactory.CreateInstance( "System.Windows.Forms.9ro$p#ox") 9ro$p#ox1.Contro!s.&dd 6adio#$tton1 9ro$p#ox1.Contro!s.&dd 6adio#$tton/ 9ro$p#ox1.Contro!s.&dd C+ec0#ox1 9ro$p#ox1.Contro!s.&dd C+ec0#ox/ oPoint.x = 1/ oPoint.y = 75 Set 9ro$p#ox1.ocation = oPoint 9ro$p#ox1.Widt+ = //4 9ro$p#ox1.eig+t = 2 9ro$p#ox1.ext = "9ro$p#ox1" Set 9ro$p#ox/ = DNetFactory.CreateInstance( "System.Windows.Forms.9ro$p#ox") 9ro$p#ox/.Contro!s.&dd a8e!/ 9ro$p#ox/.Contro!s.&dd ext#ox 9ro$p#ox/.Contro!s.&dd a8e!1 9ro$p#ox/.Contro!s.&dd Com8o#ox oPoint.x = /52 oPoint.y = 75 Set 9ro$p#ox/.ocation = oPoint 9ro$p#ox/.Widt+ = /1' 9ro$p#ox/.eig+t = 7 9ro$p#ox/.ext = "9ro$p#ox/" Set Form = DotNetFactory.CreateInstance( "System.Windows.Forms.Form") Form.Cance!#$tton = #$tton Form.Contro!s.&dd oo!Strip Form.Contro!s.&dd #$tton Form.Contro!s.&dd Progress#ar Form.Contro!s.&dd 9ro$p#ox1
Form.Contro!s.&dd 9ro$p#ox/ Form.Widt+ = 7' Form.eig+t = /25 Form.ext = "6e!e:antCodes DNetFactory ;xamp!e" Form.S+ow() Wait(/) ext#ox.ext = "Starting..." Com8o#ox.ext = "W+ite" Progress#ar.*axim$m = 5 Progress#ar.*inim$m = ' Progress#ar.Step = 1 For i = ' to 5 Progress#ar.Per
!M!;P.=* He creado un for#ulario $ aJadir un cuadro de te+to $ un &otón (ok) se "ace pero uiero #ostrar el #ensa2e por e2e#plo3 "ec"o es alguien "ace clic en el &otón así ue Scuál es la sinta+is para &uton click 5iH oo/( =eiH
5iH oo) I oo) is c'icKe He) LiM( sea/cHi) o/ His coe==7'z He'7 as oo)=6'icK is )o o/Ki) is7'a; (essae E) i
E) iH
Por fa'or, intente lo siguiente3
Se oo/( < Do.eaco/;=6/eaeI)sa)ce#NS;se(=5i)os=o/(s=o/(N, NS;se(=5i)os=o/(sN% Se oo)OG < Do.eaco/;=6/eaeI)sa)ce#NS;se(=5i)os=o/(s=o)N, NS;se(=5i)os=o/(sN% Se oo)6a)ce' < Do.eaco/;=6/eaeI)sa)ce#NS;se(=5i)os=o/(s=o)N, NS;se(=5i)os=o/(sN% Se Diae/) < Do.eaco/;=6/eaeI)sa)ce#NS;se(=5i)os=o/(s=Dia'oes'N, NS;se(=5i)os=o/(sN% Se oPoi) < Do.eaco/;=6/eaeI)sa)ce#NS;se(=D/ai)=Poi)N,NS;se(=D/ai)N, B, ;%
5iH oPoi) =B < J =; < J E) 5iH
5iH oo)OG =QeB < NOGN =Cocaio) < oPoi) =Dia'oes' < Diae/)=OK E) 5iH
5iH oPoi) =B < J =; < 3J E) 5iH
5iH oo)6a)ce' =QeB < N6a)ce'N =Cocaio) < oPoi) =Dia'oes' < Diae/)=6a)ce'
E) 5iH
5iH oo/( =eiH < J00 =6o)/o's=A oo)OG =6o)/o's=A oo)6a)ce' =SHoDia'o E) 5iH
I oo/(=Dia'oes' < Diae/)=OK QHe) R6oe o o7e) a)oHe/ o/( soB NO7e)i) a)oHe/ o/(==N E) I
I oo/(=Dia'oes' < Diae/)=6a)ce' QHe) R6oe o o so(eHi) e'se soB NDoi) so(eHi) e'se==N E) I
Se oo/( < .oHi) Se oo) < .oHi) Se Diae/) < .oHi) Se oPoi) < .oHi)
FEstá seuro que desea utilizar G+!H &uy a menudo3 5e visto personas que quieren automatizar las pruebas sIlo porque quieren usar este apasionante palabra de moda. Se realiza sin que exista aluna justificaciIn de lo que se necesite automatizar. Jo suerirKa que antes de pensar siquiera en la automatizaciIn3 se debe de 5acer un estudio ex5austivo de la aplicaciIn que se pretende %utomatizar. Se deben de analizar las siuientes cuestiones antes de decidir si automatiza o no0 Las pruebas se necesitan aplicar para varias versiones o nada mas es para una. La cantidad de Data que se usa para las pruebas es muy variada o son alunos valores mKnimos. Las pruebas se necesitan probar en varios ambientes diferentes Exploradores 2. Los siuientes tipos no son considerados como los buenos candidatos para la automatizaciIn0 'asos de prueba que sIlo se ejecutará una vez. 'asos de prueba que se seleccionan con frecuencia para su ejecuciIn. 'asos de prueba que requieren intervenciIn manual3 es decir3 una tarea que no es posible automatizar. El más imp. uno-basado en la intuiciIn y el conocimiento de la aplicaciIn. Ej. si usted encuentra que usted no puede escapar de la intervenciIn manual. •
•
•
•
•
•
•
!or encima de todo el esfuerzo necesario para desarrollar y mantener los scripts automatizados debe ser comparado contra los recursos no de 5oras3 presupuesto2 que la tarea tomarKa mientras que la ejecuciIn
manual. La cantidad de cambios que la aplicaciIn sufre tambin debe tenerse en cuenta para la elecciIn de la automatizaciIn de pruebas. Si una aplicaciIn se somete a cambios drásticos que sinifica que más tiempo se aotará en el mantenimiento de los scripts. Estas aplicaciones son3 por consiuiente mala elecciIn para la automatizaciIn. +eniendo en cuenta los puntos anteriores el retorno de la inversiIn "(2 debe ser calculado y ste debe ser el criterio más importante para decidir automatizar las pruebas. %N4O )aracter:sticas principales que tienen que cumplir un sistema para considerarlo como $utomati?able.
C+ec0#ox1.ext = "C+ec0#ox1" Set C+ec0#ox/ = DNetFactory.CreateInstance( "System.Windows.Forms.C+ec0#ox") oPoint.x = 2 oPoint.y = 55 Set C+ec0#ox/.ocation = oPoint C+ec0#ox/.Widt+ = -' C+ec0#ox/.eig+t = 14 C+ec0#ox/.ext = "C+ec0#ox/" Set 6adio#$tton1 = DNetFactory.CreateInstance( "System.Windows.Forms.6adio#$tton") oPoint.x = 114 oPoint.y = 55 Set 6adio#$tton1.ocation = oPoint 6adio#$tton1.eig+t = 14 6adio#$tton1.Widt+ = -5 6adio#$tton1.ext = "6adio#$tton1" Set 6adio#$tton/ = DNetFactory.CreateInstance( "System.Windows.Forms.6adio#$tton") oPoint.x = 114 oPoint.y = 31 Set 6adio#$tton/.ocation = oPoint 6adio#$tton/.Widt+ = -5 6adio#$tton/.eig+t = 14 6adio#$tton/.ext = "6adio#$tton/" Set #$tton = DotNetFactory.CreateInstance("System.Windows.Forms.#$tton") oPoint.x = 37/ oPoint.y = 141 Set #$tton.ocation = oPoint #$tton.Widt+ = 1'7 #$tton.eig+t = 3#$tton.ext = "C!ose Form" Set Progress#ar = DNetFactory.CreateInstance("System.Windows.Forms.Progress#ar") oPoint.x = 1- oPoint.y = 145 Set Progress#ar.ocation = oPoint Progress#ar.Widt+ = / Progress#ar.eig+t = 33 Set ext#ox = DNetFactory.CreateInstance( "System.Windows.Forms.ext#ox") oPoint.x = 43 oPoint.y = 54 Set ext#ox.ocation = oPoint ext#ox.Widt+ = 1/1 ext#ox.eig+t = /' Set Com8o#ox = DNetFactory.CreateInstance( "System.Windows.Forms.Com8o#ox") oPoint.x = 43 oPoint.y = / Set Com8o#ox.ocation = oPoint Com8o#ox.Name = "Com8o#ox" Com8o#ox.Widt+ = 1/1 Com8o#ox.eig+t = /1 Com8o#ox.Items.&dd "#!ac0" Com8o#ox.Items.&dd "W+ite"
Com8o#ox.Items.&dd "6ed" Com8o#ox.Items.&dd "9reen" Set a8e!1 = DNetFactory.CreateInstance("System.Windows.Forms.a8e!") oPoint.x = 2 oPoint.y = 34 Set a8e!1.ocation = oPoint a8e!1.Widt+ = 22 a8e!1.eig+t = 13 a8e!1.ext = "Com8o#ox" Set a8e!/ = DNetFactory.CreateInstance("System.Windows.Forms.a8e!") oPoint.x = 11 oPoint.y = 23 Set a8e!/.ocation = oPoint a8e!/.Widt+ = 21 a8e!/.eig+t = 13 a8e!/.ext = "ext#ox" Set 9ro$p#ox1 = DNetFactory.CreateInstance( "System.Windows.Forms.9ro$p#ox") 9ro$p#ox1.Contro!s.&dd 6adio#$tton1 9ro$p#ox1.Contro!s.&dd 6adio#$tton/ 9ro$p#ox1.Contro!s.&dd C+ec0#ox1 9ro$p#ox1.Contro!s.&dd C+ec0#ox/ oPoint.x = 1/ oPoint.y = 75 Set 9ro$p#ox1.ocation = oPoint 9ro$p#ox1.Widt+ = //4 9ro$p#ox1.eig+t = 2 9ro$p#ox1.ext = "9ro$p#ox1" Set 9ro$p#ox/ = DNetFactory.CreateInstance( "System.Windows.Forms.9ro$p#ox") 9ro$p#ox/.Contro!s.&dd a8e!/ 9ro$p#ox/.Contro!s.&dd ext#ox 9ro$p#ox/.Contro!s.&dd a8e!1 9ro$p#ox/.Contro!s.&dd Com8o#ox oPoint.x = /52 oPoint.y = 75 Set 9ro$p#ox/.ocation = oPoint 9ro$p#ox/.Widt+ = /1' 9ro$p#ox/.eig+t = 7 9ro$p#ox/.ext = "9ro$p#ox/" Set Form = DotNetFactory.CreateInstance( "System.Windows.Forms.Form") Form.Cance!#$tton = #$tton Form.Contro!s.&dd oo!Strip Form.Contro!s.&dd #$tton Form.Contro!s.&dd Progress#ar Form.Contro!s.&dd 9ro$p#ox1
Form.Contro!s.&dd 9ro$p#ox/ Form.Widt+ = 7' Form.eig+t = /25 Form.ext = "6e!e:antCodes DNetFactory ;xamp!e" Form.S+ow() Wait(/) ext#ox.ext = "Starting..." Com8o#ox.ext = "W+ite" Progress#ar.*axim$m = 5 Progress#ar.*inim$m = ' Progress#ar.Step = 1 For i = ' to 5 Progress#ar.Per
!M!;P.=* He creado un for#ulario $ aJadir un cuadro de te+to $ un &otón (ok) se "ace pero uiero #ostrar el #ensa2e por e2e#plo3 "ec"o es alguien "ace clic en el &otón así ue Scuál es la sinta+is para &uton click 5iH oo/( =eiH
5iH oo) I oo) is c'icKe He) LiM( sea/cHi) o/ His coe==7'z He'7 as oo)=6'icK is )o o/Ki) is7'a; (essae E) i
E) iH
Por fa'or, intente lo siguiente3
Se oo/( < Do.eaco/;=6/eaeI)sa)ce#NS;se(=5i)os=o/(s=o/(N, NS;se(=5i)os=o/(sN% Se oo)OG < Do.eaco/;=6/eaeI)sa)ce#NS;se(=5i)os=o/(s=o)N, NS;se(=5i)os=o/(sN% Se oo)6a)ce' < Do.eaco/;=6/eaeI)sa)ce#NS;se(=5i)os=o/(s=o)N, NS;se(=5i)os=o/(sN% Se Diae/) < Do.eaco/;=6/eaeI)sa)ce#NS;se(=5i)os=o/(s=Dia'oes'N, NS;se(=5i)os=o/(sN% Se oPoi) < Do.eaco/;=6/eaeI)sa)ce#NS;se(=D/ai)=Poi)N,NS;se(=D/ai)N, B, ;%
5iH oPoi) =B < J =; < J E) 5iH
5iH oo)OG =QeB < NOGN =Cocaio) < oPoi) =Dia'oes' < Diae/)=OK E) 5iH
5iH oPoi) =B < J =; < 3J E) 5iH
5iH oo)6a)ce' =QeB < N6a)ce'N =Cocaio) < oPoi) =Dia'oes' < Diae/)=6a)ce'