Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Mar 29 Ene, 2008 8:53 am Asunto: |
|
|
Hola Likibuay:
Estuve analizando tu problema y encontre que esa misma configuración puede repetirse no solo para el form donde estas trabajando.
Supongamos lo siguiente y creo que por ahi va tu consulta.
voy a presentar un ejemplo de algo cotidiano que se realiza en privilegios en cuanto a bases de datos, puede que tengas uno o varios botones que son similares o por que no decirlo realizan las mismas funciones (buscar, editar, agregar, borrar, imprimir) que son la opciones mas comunes, pero de acuerdo a lo que estas preguntando si entra un usuario que tiene el privilegio de consultar por que asi lo has desidido, los otro botones, deben permanecer en estado falso o no presionables. bien si tienes muchos forms con estos botones lo mas basico es que grabes dentro de los privilegios el estado de estos botones y NO referirte a ellos por su nombre, a fortunadamente todos si no es por demas la mayoria de componentes traen consigo una propiedad de nombre TAG. que almacena un valor entero generalmente casi no se usa pero para este caso nos puede ser muy util.
bien ahora van los pasos.
1.- Crea una tabla con los campos suficientes para identificar a los botones.
algo como esto , (nombre del boton, Estado del boton)
| Código: | bBuscar - BuscarEstado
bEditar - EditarEstado
bAgregar - AgregarEstado
bBorrar - BorrarEstado
bImprimir - ImprimirEstado |
estos campos deben ser de tipo entero y los campos de estado tambien ya que contienen el estado del boton, en este caso un campo de tipo numerico para almacenar un solo numero 0 - desactivado, 1 - activado
y les asignas valores por ejemplo
| Código: | bBuscar = 1000
BuscarEstado = 1
{...}
bImprimir = 1005
ImprimrEstado = 0 |
Ahora bien en el form donde tienes los botones, usa la propiedad tag para asignarles el mismo numero por ejemplo
| Código: | this->bBuscar->Tag = 1000; |
Posteriormente realizas un recorrido de los componentes del un form y y comparas la propiedad tag del componente con el primer registro de la tabla
cuando encuentres un componete que sea igual al numero registrado en el campo * en este caso el boton buscar *, entonces cambias el estado del boton con el valor que hay en el campo "Estado"
algo como esto.
| Código: |
TButton *pBoton;
for(int i=0; i < F->ComponentCount; i++)
{
Application->ProcessMessages();
if(
F->Components[i]->InheritsFrom(__classid(TSpeedButton)) ||
F->Components[i]->InheritsFrom(__classid(TButtonControl)) ||
F->Components[i]->InheritsFrom(__classid(TToolButton))
)
{
pBoton= reinterpret_cast< TButton *>(F->Components[i]);
switch(pBoton->Tag)
{
case 1000: // boton BUSCAR;
this->bBuscar->Enabled = (bool) BuscarEstado->Value;
break;
}
Application->ProcessMessages();
}
}
|
donde BuscarEstado es el campo que contiene el estado del boton, en este ejemplo trae 1 por lo tanto este boton estará habilitado.
es una idea pues desconozco tu base de datos (motor y estructura) por lo tanto lo estoy haciendo de una manera general.
Saludos _________________
 |
|