PDA

Ver la Versión Completa : Guardar configuraciones


REHome
01-12-2004, 21:30:39
Con Delphi 7 puse un label en el FORM y cuando pulso sobre ella cambia de color. Cuando cierro el programa y lo vuelvo a ejecutar, no se queda guardado.

¿Hay alguna manera o código que cree un archivo para guardar los datos estos de configuración? Es decir, que si predeterminado el color es negro y o lo pongo rojo, al ejecutarlo de nuevo se vuelva rojo.

Creo que es creando un *.INI o algo así.

Me podrían ayudar como se hace esto?

delphi.com.ar
01-12-2004, 21:55:40
Estas cambiando el color en tiempo de ejecución???... de ser así, no tienes que encargarte de guardarlo de alguna forma. Una de ellas puede ser utilizar el TFormStorage de las RxLibs, otra forma puede ser hacerlo "a mano" con las clases TIniFile o TRegistry...

Saludos!

REHome
03-12-2004, 05:57:36
Hola.

Es que cuando guarda será en tiempo de ejecución digo yo, no cuando está apagado por decirlo de alguna manera.

Pueden poner un ejemplo con código de cómo se guarda algún dato de configuración en un INI. Por ejemplo. Pongo un label1 en la forma. creo una aprte de código que al pulsar sobre label cambie de color, y cuando cambie de color al cerrar el programa se gusrde y al volverlo abrir se quede ya última configuración que he hecho.

ÇOtro ejemplo. Esto sule pasar por Word. Pones una letra que quieras, el tamaño que quieras y al abrirlo de nuevo, está lo último que has puesto.

Espero quen me entiendas loq ue quiero decir.

Lepe
03-12-2004, 13:44:52
Busca por TIniFile o por TRegistry en el foro, se ha hablado mucho de eso.

TiniFile guardas en un archivo .ini
TRegistry guardas en el Registro de Windows.

¿Cual usar?
Tú decides. Si no te importa que el usuario vea la configuración y la cambie, usa el TiniFile.

Saludos


Perdón, no me fijé que delphi.com.ar ya lo habia mencionado.

delphi.com.ar
03-12-2004, 13:49:55
...no cuando está apagado por decirlo de alguna manera. :confused:

Lo que te he sugerido anteriormente, puede ser una buena solución.

Saludos!

REHome
03-12-2004, 14:17:00
Ok, creo que hablé un poco mal el tono. Perdón.


He buscado por ahí pero no entiendo lo suficientes, al ayuda está en inglés y no entiendo exactamente.

Alguien puede dar un ejemplo pequeño de guardar este dato de cambiar de color en un ini con un label.

Que hay que hacer.

Dicen que es facil y yod e facil no veo nada. además nunca he hecho esto y me parece muy complicado.

Empezamos con el form desde cero y con un label1 dentro, el código de moemnto sería así. DEspués de todo esto no se que hacer, simplemente quiero que se guarde el color que deseo cuando cierre el programa.



unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Label1: TLabel;
procedure Label1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Label1Click(Sender: TObject);
begin
with font do
case font.color of
clWindowText: font.Color := clred;
clred: font.Color := clWindowText;
end;
end;
end.

marcoszorrilla
03-12-2004, 14:45:48
Ok, creo que hablé un poco mal el tono. Perdón. Está bien reconocer los fallos, efectivamente te han dado el camino a seguir para que puedas llevar a buen fin lo que pretendes.

Aquí tienes el ejemplo que pides, como tal ejemplo no hace exactamente lo que tu quieres pero esa parte la dejo para ti.


procedure TIni.Button1Click(Sender: TObject);
Var

Fichero: TiniFile;
Begin
Fichero := TIniFile.Create ('D:/MiParadox.ini'); // Accedemos al Fichero

//Leemos el INI
//Read+TipoDato(Seccion - Tipo_Dato - Valor que tomará sino hay nada)
Edit1.text:=Fichero.ReadString ('NetDir','String','Error');
Edit2.text:=Fichero.ReadString ('TempDir','String','Error');
CheckBox1.Checked:=Fichero.Readbool('LocalShare','Booleano',False);
Edit3.Text:=IntToStr(Fichero.ReadInteger('Usuarios','Integer',-1));
Edit4.Text:=DateToStr(Fichero.ReadDate('Fecha','Date',Date));
Edit5.Text:=Fichero.ReadString ('Letra','String','Arial');
lbtipoletra.Font.Name:=Fichero.ReadString ('Letra','String','Arial');
lbTipoletra.Color:=Fichero.ReadInteger ('Color','Integer',clBlue);
Fichero.Free; // Cerramos el Fichero
end;

procedure TIni.Button2Click(Sender: TObject);
Var
Fichero : Tinifile;
Begin
Fichero := Tinifile.Create ('d:/MiParadox.ini'); // Accedemos al Fichero
//Guardamos el INI
//Sección - Tipo_Dato - Valor
MiColor:=clBlue;
Fichero.WriteString ('NetDir','String','MiDir');
Fichero.WriteString ('TempDir','String','OtroDir');
Fichero.Writebool ('LocalShare','Booleano',False);
Fichero.WriteInteger('Usuarios','Integer',22);
Fichero.WriteDate('Fecha','Date',Date);
Fichero.WriteString('Letra','String','Symbol');
Fichero.WriteInteger('Color','Integer',MiColor);
Fichero.free; //Cerramos el Fichero.
end;

Un Saludo.

REHome
03-12-2004, 15:47:30
Gracias por la ayuda.

El el boton dos, me da error donde pone Micolor. ¿Sabes como arreglarlo?

----------------------

Hice uno por mi mismo. El problema que tengo, que el color que elijo, no se queda guardado. Siempre sale negro.

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, inifiles;

type
TForm1 = class(TForm)
Label1: TLabel;
Button1: TButton;
Button2: TButton;
procedure Label1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Label1Click(Sender: TObject);
begin
with label1 do
case font.color of
clWindowText: font.Color := clred;
clred: font.color := clMaroon;
clMaroon: font.color := clGreen;
clGreen: font.color := clwindowtext;
end;
End;

procedure TForm1.Button1Click(Sender: TObject);
Var
Fichero: TiniFile;
begin
Fichero := TIniFile.Create ('C:/MiSuperIni.ini'); // Accedemos al Fichero
label1.Caption:=Fichero.ReadString ('NetDir','String','Error');
Fichero.Free; // Cerramos el Fichero

end;

procedure TForm1.Button2Click(Sender: TObject);
Var
Fichero : Tinifile;

begin
Fichero := Tinifile.Create ('C:/MiSuperIni.ini'); // Accedemos al Fichero

Fichero.WriteString ('NetDir','String','MiDir');

Fichero.free; //Cerramos el Fichero.

end;

end.

delphi.com.ar
03-12-2004, 17:01:15
El el boton dos, me da error donde pone Micolor. ¿Sabes como arreglarlo?
Cuando nos notificas de un error, es bueno que aclares de que error se trata, y en qué línea se produce. Te recomiendo leer la Guía de Estilos (http://www.clubdelphi.com/foros/guiaestilo.php) del foro.

Por otro lado, veo que esta utilizando la barra invertida (/) para informar rutas aparentemente de Windows cuando la barra a utilizar es "\". Ademas veo que estas escribiendo un valor fijo, no lo que tengas en tus componentes: Fichero.WriteString ('NetDir','String','MiDir');


Saludos!