![]() |
llamar a procedure desde otra procedure
Yo sigo preguntando ;). Estoy aprendiendo muchisimo con vosotros.
Me he encontrado que, haciendo un evento onkeypress, por ejemplo, necesito llamar desde ahi a otro procedimiento, pero no se ocmo se puede hacer, quiza me estoy saltando las leyes de la programacion?. |
¿Y cual es tu problema?
¿No sabes como invocarlo? ¿O es que te falla? Es sencillo.. como en cualquier lenguaje....
Creo que a lo mejor no pasa por esto la pregunta... lo veo muy simple... Ya dirás si es esto... Espero ser de ayuda. Saludos |
Hola
Por ejemplo si haces un procedimiento: Para llamar a ese procedimiento solo tienes que poner el nombre: Saludos |
yo creo que si es lo que pregunta....
hace un tiempo me preguntaba lo mismo y cuando veo un lenguaje desconocido me lo pregunto, como dice el amigo anterior asi se llama un procedure y añado una funcion se llama asi ....
Variable:=Funcion_Predefinida(Parametro); con la salvedad que como ya sabras esta "variable" local o global debe ser del mismo tipo que el devuelto por la funcion.... ahora otra cosa que si que no la veia en otros lenguajes en tiempo de diseño puedes llamar a el procedure de un objeto por medio del Inspector de objetos en la paletra Events como ves te sale un combo y desplegandolo asignas el procedure definido para otro objeto ..... aplicacion de esto...? por ejemplo si quieres que varios botones llamen a la misma rutina ..... Espero haber ayudado ..... |
gracias, he tenido que crear un procedure nuevo, proque si hago llamada a un onkeypress me pide datos(sender:tobject).
gracias de nuevo. |
Hola
Que? :confused: :confused: :confused: Lo conseguistes hacer.:rolleyes: :rolleyes: Me quede con la duda, se nota.:D Saludos |
Aja para llamar el Onkeypress ....
para llamar este procedure que tiene dos parametros yo uso el siguiente codigo
a mi me funciona si es una barbaridad hacerlo asi no se ustedes digan..... que opinas Caral pruebalo.... |
Cita:
Vamos, no es que esté mal, pero no son maneras de hacer las cosas. Los eventos en delphi (y en cualquier lenguaje) no están para que uno los llame, sino para que el entorno los llame. Nosotros ponemos ahí, el código que queremos se ejecuta cuando tal o cual evento suceda, pero nosotros no sabemos cuando tal evento sucederá y por ello lo dejamos en manos del entorno avisarnos de cuando eso sucede. Lo que pasa es que muchas veces confundimos el evento en sí con la acción a realizar. Vamos a suponer que tenemos un botón [Guardar] en nuestro formulario, que tiene por objeto guardar el archivo que tengamos abierto. Por un lado está el evento (clic en el botón) y por otro la acción (guardar el archivo). La acción es un método independiente del botón o de cualquier otro elemento visual; un día podemos decidir usar otro tipo de botón o un menú para lanzar la acción, pero el método para guardar no cambiará. Podemos colocar el código de guardado dentro el evento:
pero con esto estaremos atando la lógica de la aplicación (la parte medular) a la interfaz de usuario, siendo que debería ser independiente. Lo más adecuado sería aislar el código de la acción en un método aparte:
e invocarlo en el evento:
De esta manera, podemos reusar el método Guardar desde donde queramos, sin tener que recurrir a llamar explícitamente al "evento"
Si hacemos esto último, y luego decidimos que ya no queremos usar un botón, sino un menú o algún otro elemento visual, tendremos que cambiar el código en todas las partes donde hallamos llamado a Button1Click(). De la forma que comento, un cambio como el que menciono, sólo requerirá poner la llamada a Guardar en el evento de ese otro elemento visual. Así pues, cuando se pregunta uno, como llamar a OnKeyPress, la respuesta sería, no lo hagas, en su lugar, llama al método (acción) a la que dicho evento invoque. // Saludos |
Hola Roman
He hecho procesos determinados para forms especificos, la catedra que acabas de dar es digna de ti. Me alegro de estar presente en estos momentos. La tecnica seguro es la mas simple y limpia, desgraciadamente por alguna razon, posiblemente desconocimiento, no es usual su uso, en el ambito del programador comun, lo que hace falta es poner mas atencion y tener maestros como tu.:) Saludos Maestro. |
ya decia yo....
aja ya les estoy agarrando el punto sensible a los mienbros del foro....
lo digo porque sabia que eso de si es una barbaridad y el codigo mismo claro llamarian la atencion .... pero si lo dice ROMAN compadre es una barbaridad sin duda...ya que (y esto lo digo en serio) no me atreveria a mi nivel discutir con una autoridad de este foro, del cual soy humilde admirador.... pero la verdad funciona hombre si funciona lo que si es que no es "ELEGANTE" pero me resuelve el problema, ya sabes ... sin embargo ya me picaste la curiosidad y voy a revisar mi codigo para montar lo que esta en el onkeypress en una procedure aparte para llamar ..... por cierto roman u otro de los usuarios avanzado por favor respondan la pregunta de la dll crystal con el inno setup o install shields tengo dias prenguntando lo mismo de distintas formas y nadie me contesta.... Please helpppppppppppp........ |
pues si la verdad, es una leccion MAESTRA para tener muy en cuenta que muchas veces ni la pensamos.
Si, la verdad es que me funciono por si quedo una duda a lo que pregunte. y modificando lo que dijo roman, ya queda algo mas decente la programacion. como dije al principio, estoy aprendiendo un monton de delphi y de la manera de estructurar un programa. GRACIAS A TODOS |
Cita:
Y de maestro nada, yo digo muchas cosas en teoría, pero en la práctica, ¡ay mamá! :D // Saludos |
Por otro lado ...
a pesar de estar de acuerdo y de ningun modo discutir....
no esta de mas conocer esos trucos del lenguaje (que no se deben hacer ya se) pero que en momentos de apuro te sacan del atolladero y ademas te permiten conocer mas el lenguaje.... humilde opinion, si vienen mas bombas pues bienvenidas sean.....disparen gurus o usuarios avanzados que pa' aprender es que estoy aca, y como decian mis abuelos a golpes tambien se aprende....;) ;) ;) ;) y de acuerdo con Caral Maestro eres Roman al menos como dices a nivel teorico me quito mil veces el sombrero..... |
ya puestos a preguntar un poco mas de lo mismo o no lo mismo, pero que adecente la estructura.
Como se puede hacer una unit sin form para limpiar de procedures el la unit principal, lo he intentado, metiendo las procedures pero me da error, es decir, si la unit no lleva form no se puede crear un form, pero intente meter las procedures debajo del type. o esto no es legal? gracias again |
anubis, file -> New -> Unit, ahí tendrás una unidad sin form asociado
Saludos |
buenas tardes, se que esta es una pregunat vieja pero solo quiero saber en la estructura que puso lepe, en
que es numero y que es (uno,dos,tres) ya que no se que poner ahi y me da error por ejemplo en un unit asociado a un form se coloca
esto es lo que puse
|
Amigo CarlosHernandez >
Si vas a hacer una unidad con procedimientos y/o funciones que no van a pertenecer a ninguna clase pues puedes hacerlo así: Ahora si por el contrario vas a crear nuevas clases entoces lo haces así: Espero que todo haya quedado claro.;). Saludos...:) |
CarlosHernandez, tienes toda la razón, ese ejemplo con "Numero" es lo típico que se hace para aclarar cosas y al final resulta de lo más complejo y raro...
Eso de "Numero" es un tipo enumerado en Delphi, vamos, esto mismo: Simplemente un tipo de datos que puede contener un sólo estado de todos los posibles. el prefijo "ec" es por aquello de EstadoCivil Es un tipo de datos definido en ese .pas, pero que se usará en otras partes del programa. |
como llamarlo desde otro form
gracias rsgtuamigo y lepe por responder, ya entendi esa parte y corre sin problema, ahora lo que no me deja es llamar ese procedimiento desde el formulario del unit1, aqui declare en las uses el unit2 (que es donde esta el procedimiento a llamar) pero no aparece, no se llamarlo
hola no me lo reconoce, no aparece entre las opciones y el error es el siguiente: "this form of method call only allowed for clas methods" incluso revise este link pero quede igual |
MiClase sólo es la definición de un tipo de datos y no el dato en sí. Luego entonces, por lo general, no puedes usar directamente uno de sus métodos. Sólo los objetos de esa clase pueden hacerlo. Entonces, debes primero crear un objeto de esa clase y usar el método desde ese objeto:
Por otro lado, aunque no es obligatorio, se recomienda anteponer un T (de tipo) a los tipos de datos creados por nosotros, lo cual incluye las clases:
en lugar de
// Saludos |
La franja horaria es GMT +2. Ahora son las 00:09:44. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi