FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
¿Como se declara correctamente un constructor?
Hola Amigos, solicito ayuda a alguna alma caritativa que me puedas orientar en lo siguiente, hice una unidad nueva para contener unas funciones de trabajo para mis proyectos, tengo un procedimiento que puede recibir unos parametros, sin embargo estoy viendo que en ocaciones es necesario que reciba menos parametros de lo que normalmente recibiria, y para tal caso tengo pensado declarar varias veces ese mismo procedimiento pero con diferentes cantidad de parametros, supongo que para eso son los constructores entre otras cosas o no?
Total para eso tengo entendido que debes cambiar la palabra "procedure" por "constructor" pero si lo hago me sale error de sintaxis: [Error] UFunciones.pas(12): Undeclared identifier: 'ControlBarraDeBotonesAltasCambiasEdicion' [Fatal Error] AdminCountier1.dpr(8): Could not compile used unit 'UFunciones.pas' vamos a suponer que quiero declarar 2 veces el procedimiento ControlBarraDeBotonesAltasCambiasEdicion pero aceptando diferente cantidad de parametros...como lo debo hacer? Mi codigo es este: //////////////////////////////////////////////////////////////////////////////// unit UFunciones; interface uses UformaAcceso, Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, fcOutlookList, fcButton, fcImgBtn, fcShapeBtn, ExtCtrls, fcClearPanel, fcButtonGroup, fcOutlookBar, ImgList, fcImager, ComCtrls, StdCtrls, Db, Mask, DBCtrls, ProfDateTimePicker, dxCntner, dxEditor, dxEdLib, dxDBELib, Spin, wwdbedit, Wwdbspin, fcLabel, ToolWin, Buttons, Wwkeycb, dxDBTLCl, dxGrClms, dxTL, dxDBCtrl, dxDBGrid, Menus, DBTables; procedure ControlBarraDeBotonesAltasCambiasEdicion(BotonAlta, BotonEdicion, BotonBorrar, BotonAceptar,BotonCancelar:TSpeedbutton; AccionPasada:string; Tabla: Tdataset; Grupo:Tgroupbox); implementation procedure ControlBarraDeBotonesAltasCambiasEdicion(BotonAlta, BotonEdicion, BotonBorrar, BotonAceptar,BotonCancelar:TSpeedbutton; AccionPasada:string; Tabla: Tdataset; Grupo:Tgroupbox); begin if (AccionPasada='Insertar') then begin Tabla.Insert; BotonEdicion.Enabled:=false; BotonAceptar.Enabled:=true; BotonCancelar.Enabled:=true; BotonAlta.Enabled:=false; BotonBorrar.Enabled:=false; grupo.Enabled:=true; end; if (AccionPasada='Editar') then begin Tabla.Edit; BotonEdicion.Enabled:=false; BotonAceptar.Enabled:=true; BotonCancelar.Enabled:=true; BotonAlta.Enabled:=false; BotonBorrar.Enabled:=false; grupo.Enabled:=true; end; if (AccionPasada='Aceptar') then begin Tabla.Post; BotonEdicion.Enabled:=true; BotonAceptar.Enabled:=false; BotonCancelar.Enabled:=false; BotonAlta.Enabled:=true; BotonBorrar.Enabled:=true; grupo.Enabled:=false; end; if (AccionPasada='Cancelar') then begin Tabla.Cancel; BotonAlta.Enabled:=true; BotonEdicion.Enabled:=true; BotonAceptar.Enabled:=false; BotonCancelar.Enabled:=false; BotonBorrar.Enabled:=true; grupo.Enabled:=false; end; end; //////////////////////////////////////////////////////////////////////
__________________
"Los unicos que no se equivocan son aquellos que no intentan hacer algo." Iván Caballero Cano... ivanhalen77@gmail.com |
#2
|
||||
|
||||
NO hagan caso a la funcion que sale ahi
No hagan caso a este mensaje..no supe como borrarlo
__________________
"Los unicos que no se equivocan son aquellos que no intentan hacer algo." Iván Caballero Cano... ivanhalen77@gmail.com |
#3
|
||||
|
||||
La palabra reservada "constructor" se usa para declarar un constructor en una clase. Vos no estás usando clases, así que lógicamente no andaría.
Para declarar uno o más procedimientos/funciones que se llamen igual pero tengan diferentes parámetros, usá la palabra reservada "overload". Es lo que se llama sobrecarga de operadores.
Y listo. Así de fácil es. Saludongos. |
#4
|
||||
|
||||
Saludos amigos
parece que lo que hay que hacer es ponerle la palabra overload en la seccion de interface a los encabezados de cada procedimiento... No se trata del asunto de los constructores.. osea que sería así: procedure ControlBarraDeBotonesAltasCambiasEdicion(BotonAlta, BotonEdicion, BotonBorrar, BotonAceptar,BotonCancelar:TSpeedbutton; AccionPasada:string; Tabla: Tdataset; Grupo:Tgroupbox); overload procedure ControlBarraDeBotonesAltasCambiasEdicion(BotonEdicion, BotonBorrar, BotonAceptar,BotonCancelar:TSpeedbutton; AccionPasada:string; Tabla: Tdataset; Grupo:Tgroupbox); overload Si alguien tiene una idea mejor, agradesco sugerencias
__________________
"Los unicos que no se equivocan son aquellos que no intentan hacer algo." Iván Caballero Cano... ivanhalen77@gmail.com |
#5
|
||||
|
||||
Correcto, así sería.
Realmente no hay mucho que se pueda hacer en estos casos. Yo creo que tenés dos posibilidades: [1] Cambiarles el nombre para que reflejen los cambios de comportamiento. Por ejemplo: ControlBarraDeBotonesAltasCambiasEdicion y ControlBarraDeBotonesAltasCambiasEdicion_ConX. Lo que pasa es que tu nombre ya es bien largo como para andar agregando sufijos... [2] Usar sobrecarga. Lo de sobrecargar tiene la desventaja de que si el día de mañana tenés comportamiento distinto, pero con los mismos parámetros, no podés sobrecargar. Tenés que cambiarles el nombre y te quedan funciones con sobrecarga y funciones con sufijo. Es decir, dos paradigmas distintos. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Como crear clases correctamente? | alquimista | OOP | 10 | 10-04-2010 12:21:15 |
¿Cómo evitar un warning por sobrecargar un constructor? | vejerf | OOP | 5 | 28-07-2008 13:49:55 |
¡El Profesor Fungus me declara la guerra! | Ñuño Martínez | La Taberna | 11 | 09-07-2008 19:37:29 |
Como Utilizo Correctamente FastReport | hmrvivas | Impresión | 8 | 11-09-2007 17:17:14 |
Como usar correctamente ReplaceDialog? | clanmilano | Varios | 1 | 06-02-2006 13:41:57 |
|