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 11-11-2003
vetustas vetustas is offline
Miembro
 
Registrado: oct 2003
Posts: 77
Poder: 21
vetustas Va por buen camino
form con botones visibles o no

Tengo un form con un dbnavigator y en mi form tengo unos botones que segun una condición tienen que mostrarse o no. El problema es que no se como hacerlo. Habia puesto en el evento onshow este codigo:
Código:
if dbCheckBox1.Checked then
  begin
    Button_Inscripcion.Enabled:=false;
    Button_Practica.Enabled:=true;
  end
  else
    begin
     Button_Inscripcion.Enabled:=true;
     Button_Practica.Enabled:=false;
    end;
pero el problema es que al usar el boton de "next" del navegador no me funciona. Los botones siempre estan igual. En que evento deberia ponerlo? o como lo hago?
gracias
Responder Con Cita
  #2  
Antiguo 11-11-2003
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 21
andres1569 Va por buen camino
Hola:

Si, como supongo, los botones se habilitan/deshabilitan dependiendo del valor de un campo del Dataset en cuestión, el botón Next no es el mejor lugar puesto que ahí aún no se ha cambiado de registro.

Como la lógica pertenecería más bien al Dataset, y este se debe de encontrar en un DataModule, lo que he hecho en esos casos es colocar un DataSource ligado al Dataset deseado en dicho formulario (independientemente de que ya haya otro/s DataSources ligados en el DataModule). Si interceptas el evento OnDataChange del DataSource, ahí sabes cuándo se ha cambiado de registro:

Código:
procedure DataSource1.DataChange (AField: TField);
begin
  if Field = nil then  // indica que se cambió de registro
  begin
     Button_Inscripcion.Enabled := CampoInscripcion.AsBoolean;
     Button_Practica.Enabled := CampoPractica.AsBooelan;
  end;
end;
A ver si es eso, saludos
__________________
Guía de Estilo
Responder Con Cita
  #3  
Antiguo 11-11-2003
vetustas vetustas is offline
Miembro
 
Registrado: oct 2003
Posts: 77
Poder: 21
vetustas Va por buen camino
A lo mejor he hecho algo mal xo haciendo lo que me dijiste me da un error de ejecución. Una violacion de memoria dice
Cita:
el botón Next no es el mejor lugar puesto que ahí aún no se ha cambiado de registro
no lo tengo puesto en el boton next. Lo tengo en el evento "onshow" del form.
Responder Con Cita
  #4  
Antiguo 12-11-2003
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 21
andres1569 Va por buen camino
Hola:

El código que te puse es orientativo, no lo cojas literalmente, puse el nombre de unos campos "CampoInscripcion" y "CampoPractica", suponiendo que la información que habilita/deshabilita los botones se puede sacar de ahí, de la tabla que estés tratando.

Por lo demás, no sé a qué puede ser debido ese error, pero recuerda que ese Datasource debe estar en el formulario donde tienes los botones.

También te recomendaría mirar la ayuda de los TActionList, quizás te convenga definir dos acciones "Inscripción" y "Práctica", asociarlas a los botones correspondientes, e interceptar el evento OnUpdate de las mismas (que Delphi lanza cuando se actualiza el formulario), para fijar la propiedad Enabled.

Son ideas, un saludo
__________________
Guía de Estilo
Responder Con Cita
  #5  
Antiguo 12-11-2003
vetustas vetustas is offline
Miembro
 
Registrado: oct 2003
Posts: 77
Poder: 21
vetustas Va por buen camino
Muchas gracias. Ya funciona. Lo que hacia mal era no poner el datasource en el form donde estaban los botones
Graciasssss
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


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


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