![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
De antemano te comento que no conozco C++ en profundidad, pero esto lo hice funcionar:
Código:
//---------------------------------------------------------------------------
#include <vcl.h>
#include <registry.hpp>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
const String Regkey = "\\software\\Mi Marca\\Mi Soft\\";
TRegistry *MyRegistry = new TRegistry();
try {
MyRegistry->RootKey = HKEY_LOCAL_MACHINE;
MyRegistry->OpenKey(Regkey, True);
Button1->Enabled = MyRegistry->ReadBool(Button1->Name);
}
catch(ERegistryException &E) {
ShowMessage(E.Message);
delete MyRegistry;
return;
}
delete MyRegistry;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
const String Regkey = "\\software\\Mi Marca\\Mi Soft\\";
TRegistry *MyRegistry = new TRegistry();
try {
MyRegistry->RootKey = HKEY_LOCAL_MACHINE;
MyRegistry->OpenKey(Regkey, True);
MyRegistry->WriteBool(Button1->Name, Button1->Enabled);
}
catch(ERegistryException &E) {
ShowMessage(E.Message);
delete MyRegistry;
return;
}
delete MyRegistry;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Button1->Enabled = !Button1->Enabled;
}
//---------------------------------------------------------------------------
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
|
|
#2
|
|||
|
|||
|
Hola:
He copiado y pegado el código que me pones, pero me lanza una excepción diciendo que no puede leer datos del botón 1 (exactamente no me acuerdo del mensaje, es que no estoy en casa ahora mismo...) Lo intentaré de nuevo, pero bueno, si alguien sabe por qué me puede ocurrir esta excepción, que me lo comente por favor. Un saludo |
|
#3
|
||||
|
||||
|
Lo va a lanzar la primera ejecución, yo te recomendaría que preguntes si existe la clave o el valor a buscar, y si existe leer el valor.
PD: ¿Buscaste algún componente tipo el TFormStorage de las RxLibs para automatizar esto y no escribir código para cada form.?
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
|
|
#4
|
|||
|
|||
|
Yo es que soy una novata en esto del Builder, así que ese componente que me comentas pues ni idea... Pero bueno, sólo tego qe hacerlo para una Form, así que supongo que en cuanto logre que me funcione, ya tendré el problema resuelto...
De todas maneras, si no lo consigo, probablemente acuda a vosotros otra vez Muchísimas gracias por tu tiempo. Un saludo |
|
#5
|
|||
|
|||
|
Hola!
He intentado hacerlo con un archivo ini de la siguiente manera: Guardar configuración Código: TIniFile *Conf=new TIniFile("c:\\archivo.ini"); Conf->WriteBool("Botones", "Boton C",Button1->Enabled); delete Conf; Leer configuración Código: TIniFile *Conf=new TIniFile("c:\\archivo.ini"); corresponda Conf->ReadBool("Botones", "Boton C",true); delete Conf; El caso es que el archivo ini me lo crea bien, con los valores correctos, pero a la hora de ejecutar la aplicación, el botón siempre me aparece habilitado, independientemente de lo que indique el archivo ini... Yo lo que hago es compilar, y una vez que tengo la aplicación, le doy a un botón para que se me deshabilite el botón 1. Luego cierro, y vuelvo a ejecutar la aplicación, (sin compilar de nuevo), y me sale el botón 1 habilitado siempre... Qué estoy haciendo mal??? Un saludo |
|
#6
|
||||
|
||||
|
¿En qué eventos estas poniendo este código?
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
|
|
#7
|
||||
|
||||
|
Y no haria falta asignar el valor leido a la propiedad:
Código:
Leer configuración
TIniFile *Conf=new TIniFile("c:\\archivo.ini");
Button1->Enabled = Conf->ReadBool("Botones", "Boton C",true);
delete Conf;
Hasta luego. ![]()
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
|
#8
|
|||
|
|||
|
Claro!
Ahí estaba el fallo... Qué tonta! Ya me funciona perfectamente, poniendo el código anterior en los eventos OnCreate y OnClose de la form... Pero si tengo que hacerlo dentro de un marco (frame), me serviría ponerlo en los eventos OnEnter y OnExit? Muchas gracias por vuestra ayuda y perdón por no poner en el otro mensaje el código entre las etiquetas. Un saludo |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|