Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-12-2011
leandro085 leandro085 is offline
Miembro
 
Registrado: Feb 2008
Posts: 19
Poder: 0
leandro085 Va por buen camino
Post procedimiento para habilitar o inhabilitar botones

hola como están

quisiera saber si existe alguna forma de armar un procedimiento para habilitar botones y o des-habilitar botones.
porque lo intento de hacer de esta forma pero no me reconoce los botones.

Código Delphi [-]
procedure habilitar;
begin
  btNuevo.Enabled:=true;
  BtEliminar.Enabled:=true;
  btModificar.Enabled:=true;
  DBNIva.Enabled:=true;
end;
Responder Con Cita
  #2  
Antiguo 07-12-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: Dec 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.101
Poder: 30
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.

Un modo puede ser:
Código Delphi [-]
procedure TForm1.ButtonsOnOff(Activo: Boolean);
begin
  ...
  Button2.Enabled:= Activo;
  Button3.Enabled:= Activo;
  ... 
end;

Otro:
Código Delphi [-]
procedure TForm1.ButtonsOnOff(Activo: Boolean);
var
  i: Integer;
begin
  for i:= 0 to ComponentCount -1 do
    if Components[i] is TButton then
      TButton(Components[i]).Enabled:= Activo;
end;
Este último deshabilita todos los botones del form.

Llamada:
Código Delphi [-]
  ButtonsOnOff(False); // Deshabilitar;
  ButtonsOnOff(True); // Habilitar;

De todas formas creo que no te reconoce los botones por que los estás referenciando desde un procedimiento y no un método del form, intentá así:
Código Delphi [-]
...
  TForm1 = class(TForm);
  ...
  private
     procedure habilitar;
  end;
...
implementation

procedure TForm1.habilitar;
...

Saludos.
__________________
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 00:08:17.
Responder Con Cita
  #3  
Antiguo 07-12-2011
Avatar de microbiano
microbiano microbiano is offline
Miembro
 
Registrado: Sep 2008
Ubicación: Mexico D.F
Posts: 349
Poder: 11
microbiano Va por buen camino
utiliza una funcion

yo lo hago asi
[delphi]

declaras la funcion en:

Código Delphi [-]
private
    
     function botones(WBoton:Integer):Integer;

y despues
Código Delphi [-]

function Tform_capt_pro.botones(Wboton:Integer):Integer;
begin
  if WBoton=0 then //insertar  aqui puedes usar una cadena por ejemplo insertar pero tendrias que cambiar la variable a string
    begin
      self.pgc1.Enabled:=True;
      self.btn_guardar.Enabled:=True;
      self.btn_insertar.Enabled:=False;
    end;
if WBoton='insertar then //insertar  aqui puedes usar una cadena por ejemplo insertar pero tendrias que cambiar la variable a string
    begin
      self.pgc1.Enabled:=True;
      self.btn_guardar.Enabled:=True;
      self.btn_insertar.Enabled:=False;
    end;    

end;

y para llamarla
Código Delphi [-]
botones(2); // o la palabra insertar modificar

Última edición por microbiano fecha: 07-12-2011 a las 00:06:18. Razón: por error en los determinadas de codigo
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
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
  #5  
Antiguo 07-12-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: Dec 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.101
Poder: 30
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
  #6  
Antiguo 07-12-2011
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: Jul 2005
Ubicación: Murcia (España)
Posts: 913
Poder: 14
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
  #7  
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
  #8  
Antiguo 07-12-2011
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: Jul 2005
Ubicación: Murcia (España)
Posts: 913
Poder: 14
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
  #9  
Antiguo 07-12-2011
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: Dec 2003
Ubicación: Zamudio
Posts: 1.375
Poder: 16
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
  #10  
Antiguo 07-12-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: Dec 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.101
Poder: 30
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
  #11  
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.340
Poder: 17
José Luis Garcí Va por buen camino
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
  #12  
Antiguo 12-12-2011
Avatar de PepeLolo
PepeLolo PepeLolo is offline
Miembro
 
Registrado: Jun 2003
Ubicación: Fuenlabrada - Madrid - Espagna
Posts: 260
Poder: 16
PepeLolo Va por buen camino
Cita:
Empezado por leandro085 Ver Mensaje
hola como están

quisiera saber si existe alguna forma de armar un procedimiento para habilitar botones y o des-habilitar botones.
porque lo intento de hacer de esta forma pero no me reconoce los botones.

Código Delphi [-]
procedure habilitar;
begin
  btNuevo.Enabled:=true;
  BtEliminar.Enabled:=true;
  btModificar.Enabled:=true;
  DBNIva.Enabled:=true;
end;
Yo que tú crearía un componente que derive de TButton al que puedas asociar un Datasource y que el comportamiento de este dependa del estado del DataSource (Browse, Insertar, Editar, etc..)

Tienes el código necesario en la unidad DBCtrls.pas, componente "TDBNavigator".
__________________
PepeLolo
El hombre el único virus que mide más de unas cuantas micras
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 15:49:40.


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