Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-12-2011
leandro085 leandro085 is offline
Miembro
 
Registrado: feb 2008
Posts: 19
Poder: 0
leandro085 Va por buen camino
Gracias a los dos!!

Me sirvieron para entender un poquito mas el tema de funciones y procedimientos

lo solucione con una función y me anduvo, pero quiero que me digan si realmente si esta bien echo.

La declare asi

Código Delphi [-]
function botones(accbot:boolean):boolean;

la función así
Código Delphi [-]
function TFormIva.botones(accbot:boolean):boolean;
begin  
btNuevo.Enabled:=accbot;
btmodificar.Enabled:=accbot;
bteliminar.Enabled:=accbot;
end;

y lo llamo asi
Código Delphi [-]
botones(true);    // o de esta manera

botones(false);

Gracias de nuevo.

Última edición por leandro085 fecha: 07-12-2011 a las 01:48:20.
Responder Con Cita
  #2  
Antiguo 07-12-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por leandro085 Ver Mensaje
lo solucione con una función y me anduvo, pero quiero que me digan si realmente si esta bien echo.
Si las llamadas
Código Delphi [-]
  botones(true);    // o de esta manera
  botones(false);
las haces dentro de un método de TFormIva, es correcto. (ya que sería como hacer Self.botones(true) )

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 07-12-2011
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Hola,

de todas formas has declarado una función cuando, creo yo, lo que te hacía falta es un procedimiento, procedure en lugar de function, por lo que has comentado no parece necesario que al acabar de habilitar o deshabilitar los botones te devuelva un true o un false.

Saludos.
Responder Con Cita
  #4  
Antiguo 07-12-2011
leandro085 leandro085 is offline
Miembro
 
Registrado: feb 2008
Posts: 19
Poder: 0
leandro085 Va por buen camino
Post

Cita:
Empezado por ElDioni Ver Mensaje
Hola,

de todas formas has declarado una función cuando, creo yo, lo que te hacía falta es un procedimiento, procedure en lugar de function, por lo que has comentado no parece necesario que al acabar de habilitar o deshabilitar los botones te devuelva un true o un false.

Saludos.
lo que pasa es que con un procedimiento no me reconocía los botones del form la única forma de poderlo hacer con un una funcion era la siguiente pero no podía pesarla el parámetro de true o false
Código Delphi [-]
procedure habilitar;
begin
  btNuevo.Enabled:=true;
  BtEliminar.Enabled:=true;
  btModificar.Enabled:=true;
  DBNIva.Enabled:=true;
end;

en cambio con la función lo puede hacer pudiendo pesarle una el parámetro para activarlo o desactivarlo.
Responder Con Cita
  #5  
Antiguo 07-12-2011
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Igual que has puesto la función tendrías que poner el procedure, prueba así:

Código Delphi [-]
procedure TFormIva.botones(accbot:boolean); 
begin   
btNuevo.Enabled:=accbot; 
btmodificar.Enabled:=accbot; 
bteliminar.Enabled:=accbot; 
end;

y llamalo igual que lo has hecho con la función.
Responder Con Cita
  #6  
Antiguo 07-12-2011
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Código Delphi [-]
procedure Botones;
begin
  btNuevo.Enabled:= (PermisoAlta) and 
                            (Datasource.Active) and
                            (not CampoX.isnull) ;
  BtEliminar.Enabled:=(Permisoeliminar) and 
                            (Datasource.Active) and
                            (not CampoX.isnull) ;
  btModificar.Enabled:=(PermisoModificar) and 
                            (Datasource.Active) and
                            (not CampoX.isnull) ;
  DBNIva.Enabled:=(PermisoModificar) and 
                            (Datasource.Active) and
                            (not CampoX.isnull) ;

// resto de botones y todas las condiciones 

end;

siendo PermisoXXXXX los permisos que el usuario tiene en la opción que elija.

Esta procedure la llamo después de modificar, insertar, borrar, cambiar un campo, al entrar en el formulario, .... Toda la lógica de botones en una sola función. Una función por formulario.

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #7  
Antiguo 07-12-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Leandro.

Cita:
Igual que has puesto la función tendrías que poner el procedure
Es correcta la apreciación de ElDioni (así como también lo son las demás sugerencias), no había reparado que habías declarado una función y aunque no es incorrecto, es innecesario.

Creo que tenés una confusión entre los procedimientos,funciones y los métodos, a ver si puedo aclararte.

Si tenemos:
Código Delphi [-]
type
  TMiClase = class
    ...
  private
    procedure UNO(Value: Boolean);
  public
    function DOS(Value: Boolean): Boolean;
  end;
Nos encontramos frente a métodos, es decir procedimientos y funciones que pertenecen a una clase. Por lo tanto en la declaración de la cabecera del procedimiento o función, debemos anteponer la clase a la que pertenecen:
Código Delphi [-]
procedure TMiClase.UNO(Value:Boolean);
begin
  ...
end;

function TMiClase.DOS(Value: Boolean): Boolean;
begin
  ...
end;
En el caso del form fijate que se antepone por ejemplo TFormIva (nombre de la clase).

Ahora en el caso de los procedimiento o funciónes que no son un método :
Código Delphi [-]
procedure habilitar; 
begin
  btNuevo.Enabled:=true;  // Incorrecto
  BtEliminar.Enabled:=true;  // Incorrecto
  btModificar.Enabled:=true; // Incorrecto
  DBNIva.Enabled:=true; // Incorrecto
Dentro del procedimiento habilitar, se tiene totál desconocimiento de los TButtons: btNuevo, btmodificar y bteliminar, exepto que indiquemos la clase a la que pertenencen:
Código Delphi [-]
procedure habilitar;
begin
  FormIva.btNuevo.Enabled:=true;  // Correcto
  FormIva.BtEliminar.Enabled:=true;   // Correcto
  FormIva.btModificar.Enabled:=true;  // Correcto
  FormIva.DBNIva.Enabled:=true;  // Correcto
También es posible enviarle los TButton mediante un argumento:
Código Delphi [-]
procedure habilitar(Btns: array of TButton);
var
  i: Integer;
begin
  for i:= Low(Btns) to High(Btns) do
    Btns[i].Enabled:= False;
end;
...
// Llamada de ejemplo
procedure TFormIva.btDisableClick(Sender: TObject);
begin
  habilitar([btNuevo, BtEliminar, btModificar]);
end;
Resumiendo desde un método de la clase TFormIva se puede llamar directamente a btNuevo, por que btNuevo pertenece a TFormIva, pero si se menciona a btNuevo desde otro ámbito debe especificarse a que clase pertenece btNuevo anteponiendole el nombre de la instancia: FormIva.btNuevo.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 07-12-2011 a las 20:21:37.
Responder Con Cita
  #8  
Antiguo 08-12-2011
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Hola leandro085, aparte de las variadas y útiles códigos de los compañeros, si lo que quieres hacer es como creo, que al insertar, modificar, etc, en una base de datos, si es así, tienes en el Ftp del club, mi componente NewPanelDB, este panel permite , sin tener que usar código, que todo lo que tengas dentro del panel , (este enable o no) o (este visible o no) según el estado del Datasourse, además también permite que el panel Cambie de color según el mismo procedimiento, espero te pueda servir.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"

Última edición por José Luis Garcí fecha: 08-12-2011 a las 09:15:57.
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
Glyphs para Botones, sirven los ICO para esto ? mtpedro Gráficos 8 01-02-2006 09:54:59
Inhabilitar Internet nefy Internet 0 13-07-2004 21:04:51
Habilitar/Deshabilitar botones permanentemente melanthea C++ Builder 9 18-06-2004 15:36:31
si hay propiedad cancel para los botones, ¿la hay para enter? soyhugo Varios 2 16-02-2004 15:49:53


La franja horaria es GMT +2. Ahora son las 09:32:10.


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