Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-11-2009
Robin1 Robin1 is offline
Miembro
 
Registrado: nov 2009
Posts: 14
Poder: 0
Robin1 Va por buen camino
LLamar procedimiento de creación de Objetos.

Un gran saludo a todos.

Bueno, como había comentado en otros hilos, trabajo en la realización de un proyecto que debe crear en tiempo de ejecución algunos componentes, tales como Nuevos Tab, Webbrowsers, etc.

El tema es que la aplicación ya está hecha, y funciona de maravilla.

Ahora, me alisto, para publicar una segunda versión, con algunas nuevas características que el usuario ha pedido.

Revisando un poco, el código de la aplicación, el cual de momento es muy extenso, veo que sería posible en lugar, de repetir en distintos procedimientos las mismas instrucciones, podría en una Funcion, o procedimiento dar la instrucción, y luego en cada instancia del programa, hacer un llamado a esta.

El caso es que tengo problemas, para hacer esto, en lo refernte a la creación de objetos en tiempo de ejecución.

Aqui pongo un ejemplo del procedimiento que crea nuevos tabs en el formulario del programa...

Código:
procedure TForm1.NewTab1Click(Sender: TObject);

begin
NewTab := TTabSheet.Create(Self); 
NewTab.Caption := '   New Tab   ' + IntToStr(PageControl1.PageCount +
1); 
NewTab.PageControl := PageControl1; 
PageControl1.ActivePage := NewTab;
end;
Este procedimiento se genera al pulsar un botón.

Ahora bien, resulta que tengo que llamar este procedimiento unas 25 veces, por lo cual, en la primara versión del programa, simplemente copié y pegué las veces necesarias las líneas de codigo.

Esta mañana intentaba entonces, llamar desde los otros 24 procedimientos, este en particular, pero siempre de algún modo obtenía un error, siendo el más comun, el compilador no reconocer el término "Self", luego de la palabra "Create".

Agradecería mucho, si alguien pudiese explicarme un poco, el modo de llamar procedimientos, para reducir un poco código que hace por momentos, enredado, y redundante, un programa propenso a errores.

Mil gracias, y nuevamente, un gran saludo.

Julián.
Responder Con Cita
  #2  
Antiguo 30-11-2009
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por Robin1 Ver Mensaje
Ahora bien, resulta que tengo que llamar este procedimiento unas 25 veces, por lo cual, en la primara versión del programa, simplemente copié y pegué las veces necesarias las líneas de codigo.

Esta mañana intentaba entonces, llamar desde los otros 24 procedimientos, este en particular, pero siempre de algún modo obtenía un error, siendo el más comun, el compilador no reconocer el término "Self", luego de la palabra "Create".
Mi recomendación sería que primero investigaras un poco acerca del constructor Create de TComponent y también sobre la palabra reservada Self de Delphi.

En caso de no tener claro qué es en sí un constructor, la sugerencia sería averiguarlo entonces primero. Y si es necesario que repases las bases de POO, pues adelante, partir desde ahí.

Por la forma en que describes el problema, no pareces estar muy preparado para llevar a cabo la reorganización de código que señalas.

Pero no te desanimes. Entre estos foros, la estupenda ayuda de las versiones decentes de Delphi y un montón de tutoriales y libros que hay por ahí lo lograremos.

Pregunta con confianza (temas nuevos en hilos nuevos, de preferencia).

Al González.
Responder Con Cita
  #3  
Antiguo 30-11-2009
Robin1 Robin1 is offline
Miembro
 
Registrado: nov 2009
Posts: 14
Poder: 0
Robin1 Va por buen camino
Mil gracias por responder.

Muchas gracias, por ayudarme.

Verás, no encontré mucha información sobre el tema específico que buscaba, de modo que realicé algunas pruebas, hasta dar yo mismo con la solución.

Encontré que, para llamar estos procedimientos, desde otros, los llamaba por su nombre, y agregaba (Sender);

Funcionó de maravilla.

Ahora bien, no se si, este es un modo legal de llamar ´rocedimienros, o por el contrario, puede ser sujeto a errores.

Un gran abrazo, y nuevamente mil gracias.

Julián
Responder Con Cita
  #4  
Antiguo 30-11-2009
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Para reducir codigo en tu aplicacion yo te recomendaria usar el componente TActionManager (pestaña Additional de la paleta), este componente te permite crear acciones que luego puedes engancharlas a cualquier evento, en el caso tuyo al evento Onclik de tu button, eso se consigue utilizando la propiedad Action de tu boton y seleccionando la accion creada en tu TActionManager.En otras palabras es como escribir un procedimiento y llamo a ese procedimiento desde cualquier parte del programa de esa manera me ahorro lineas de codigo repetitivas, pero en este caso tan solo seleccionando la accion especifica se hace todo..
Hechale una miradita al TActionManager y veras que tambien sirve para mejorar el aspecto visual de una aplicacion para lo cual te aconsejo un buen tutorial de dicho componente.
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
llamar Procedimiento almacenado en una consulta tcp_ip_es MySQL 3 17-06-2008 12:47:38
creacion objetos MOCOSO07 Varios 4 04-04-2008 22:35:04
Ayuda, como llamar a un procedimiento desde otro procedimiento? Ariatna Varios 1 01-02-2005 04:05:35
ayuda al llamar un procedimiento... ronimaxh Firebird e Interbase 8 27-04-2004 01:53:33
llamar procedimiento cmgenny Varios 2 12-08-2003 00:28:13


La franja horaria es GMT +2. Ahora son las 04:19:19.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi