| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
likibuay Master


Registrado: 24 Abr 2006Mensajes: 190Ubicación: COLOMBIA
|
Publicado: Vie 14 Ago, 2009 9:18 pm Asunto: Error, Help |
|
|
Buenas...
tengo un problema con el siguiente código..
utilizo Builder C++ 6
lo q quiero es habilitar componentes según el perfil.
| Código: |
Query1->SQL->Text="SELECT boton FROM perfiles_permisos where idperfil='"+perfil+"' and estado ='1'";
Query1->Open();
while(!Query1->Eof){
TLMDButton * button;
TLMDTabSheet * pestana;
TLMDPageControl * carpeta;
for(int i=0; i <ComponentCount>ClassNameIs("TLMDTabSheet")) pestana = (TLMDTabSheet *)Components[i];
if(Components[i]->ClassNameIs("TLMDButton")) button = (TLMDButton *)Components[i];
if(Components[i]->ClassNameIs("TLMDPageControl")) carpeta = (TLMDPageControl *)Components[i];
if(button->Name == Query1->Fields->Fields[0]->AsString){
button->Visible=false;
}
if(pestana->Name == Query1->Fields->Fields[0]->AsString){
pestana->TabVisible=false;
}
if(carpeta->Name == Query1->Fields->Fields[0]->AsString){
carpeta->Visible=false;
}
}
Query1->Next();
}
Query1->Close(); |
este es el error q me sale cuando lo trato de hacer en tiempo de ejecución, gracias de antemano.
http://s3.subirimagenes.com:81/otros/previo/thump_3042490dibujo.jpg _________________ ><(((((º> From °l||l° §ÂN ÅNЮ€$ i§Lã$ °l||l°
_____________________ |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Vie 14 Ago, 2009 10:34 pm Asunto: |
|
|
Al parecer estas tratando de usar un componente que no tiene una asignación o creación en memoria
| Código: | button = (TLMDButton *)Components[i]; |
Intenta usarlos de esta manera
| Código: | button = reinterpret_cast<TLMDButton *>(Components[i]); |
_________________
 |
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Sab 15 Ago, 2009 12:23 am Asunto: |
|
|
Estoy de acuerdo con Cesar. Creo que tratas de hacer uso de punteros a componente inválidos. Yo trataría de hacer lo siguiente:
| Código: | TLMDButton * button;
.....
button = dynamic_cast< TLMDButton* >(Components[i]);
.....
// Si button es nulo, no se encontró ningún TLMDButton en el array...
if(button){
if(button->Name == Query1->Fields->Fields[0]->AsString){
button->Visible=false;
}
}
|
Saludos. |
|
| Volver arriba |
|
 |
likibuay Master


Registrado: 24 Abr 2006Mensajes: 190Ubicación: COLOMBIA
|
Publicado: Sab 15 Ago, 2009 3:23 pm Asunto: |
|
|
Escafandra, Cesar gracias por contestar.
tratando con los códigos q uds postean aquí también me sale error...
sigo intentando...
muchas gracias. _________________ ><(((((º> From °l||l° §ÂN ÅNЮ€$ i§Lã$ °l||l°
_____________________ |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Sab 15 Ago, 2009 9:41 pm Asunto: Re: Error, Help |
|
|
| likibuay escribió: |
....
| Código: |
......
for(int i=0; i <ComponentCount>ClassNameIs("TLMDTabSheet"))
.......... |
.......
|
¿Estás seguro que asi es la sentencia 'for' que tienes? _________________
 |
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Lun 17 Ago, 2009 12:32 am Asunto: |
|
|
Si, lo que Cesar te sugiere es que debes marcar la opción "Deshabilitar HTML en este mensaje" para que no confunda los "< >" con etiquetas HTML o hacerlo en tu perfil.
Esa parte del bucle for no la hemos podido ver, pero una fuente del error puede ser un límite mal establecido. Para todos los componentes del array debe ser:
| Código: | for(int i=0; i <ComponentCount - 1; i++){
........
........
} |
Saludos. |
|
| Volver arriba |
|
 |
|