Ver Mensaje Individual
  #8  
Antiguo 06-12-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola richy08.

Para no dejarte la pelota picando, te pongo un ejemplo de como hacerlo en ambos casos.

Usando Registry:
Código Delphi [-]
...
implementation

uses Registry;

var
 CurrentTab: Integer = 0;

procedure TForm1.FormCreate(Sender: TObject);
var
  i,j: Integer;
  e  : TEdit;
begin
  with TRegistry.Create do
  try
    RootKey:= HKEY_CURRENT_USER;
    if OpenKey('MiProg\PageCtrl',False) then
    begin
      with PageControl1 do
      begin
        for i := 0 to PageCount - 1 do
          for j := 0 to Pages[i].ControlCount-1 do
            if Pages[i].Controls[j] is TEdit then
            begin
              e := TEdit(Pages[i].Controls[j]);
              e.Text := ReadString(e.Name+'Text');
              e.Color:= ReadInteger(e.Name+'Color');
            end;
        CloseKey;
        ActivePageIndex := 0;
      end;
    end;
  finally
    Free;
  end;
end;

procedure TForm1.PageControl1Change(Sender: TObject);
var
  i: Integer;
  e: TEdit;
begin
  with TRegistry.Create do
  try
    RootKey:= HKEY_CURRENT_USER;
    if OpenKey('MiProg\PageCtrl', True) then
    begin
      with PageControl1 do
      begin
        for i := 0 to Pages[CurrentTab].ControlCount-1 do
          if Pages[CurrentTab].Controls[i] is TEdit then
          begin
            e := TEdit(Pages[CurrentTab].Controls[i]);
            WriteString(e.Name+'Text', e.Text);
            WriteInteger(e.Name+'Color', e.Color);
          end;
        for i := 0 to Pages[ActivePageIndex].ControlCount-1 do
          if Pages[ActivePageIndex].Controls[i] is TEdit then
          begin
            e := TEdit(Pages[CurrentTab].Controls[i]);
            WriteString(e.Name+'Text', e.Text);
            WriteInteger(e.Name+'Color', e.Color);
          end;
        CurrentTab := ActivePageIndex;
      end;
      CloseKey;
    end;
  finally
    Free;
  end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
var
  i, j: Integer;
  e: TEdit;
begin
  with TRegistry.Create do
  try
    RootKey:= HKEY_CURRENT_USER;
    if OpenKey('MiProg\PageCtrl', True) then
    begin
      with PageControl1 do
      begin
        for i := 0 to PageCount - 1 do
          for j := 0 to Pages[i].ControlCount-1 do
            if Pages[i].Controls[j] is TEdit then
            begin
              e := TEdit(Pages[i].Controls[j]);
              WriteString(e.Name+'Text', e.Text);
              WriteInteger(e.Name+'Color', e.Color);
            end;
        end;
        CloseKey
     end;
  finally
    Free;
  end;
end;

Usando IniFiles:
Código Delphi [-]
...
implementation

uses IniFiles;

var
 CurrentTab: Integer = 0;

procedure TForm1.FormCreate(Sender: TObject);
var
  i,j: Integer;
  e : TEdit;
begin
  with TIniFile.Create(ExtractFilePath(Application.ExeName)+'PROG.INI') do
  try
    with PageControl1 do
    begin
      for i:= 0 to PageCount - 1 do
        for j:= 0 to Pages[i].ControlCount-1 do
          if Pages[i].Controls[j] is TEdit then
          begin
            e := TEdit(Pages[i].Controls[j]);
            e.Text := ReadString(e.Name,'Text','');
            e.Color:= ReadInteger(e.Name,'Color',clWindow);
          end;
      ActivePageIndex := 0;
    end;
  finally
    Free;
  end;
end;

procedure TForm1.PageControl1Change(Sender: TObject);
var
  i: Integer;
  e: TEdit;
begin
  with TIniFile.Create(ExtractFilePath(Application.ExeName)+'PROG.INI') do
  try
    with PageControl1 do
    begin
      for i:= 0 to Pages[CurrentTab].ControlCount-1 do
        if Pages[CurrentTab].Controls[i] is TEdit then
        begin
          e := TEdit(Pages[CurrentTab].Controls[i]);
          WriteString(e.Name,'Text', e.Text);
          WriteInteger(e.Name,'Color', e.Color);
        end;
      for i:= 0 to Pages[ActivePageIndex].ControlCount-1 do
        if Pages[ActivePageIndex].Controls[i] is TEdit then
        begin
           e := TEdit(Pages[CurrentTab].Controls[i]);
           e.Text := ReadString(e.Name,'Text','');
           e.Color:= ReadInteger(e.Name,'Color',clWindow);
        end;
      CurrentTab := ActivePageIndex;
    end;
  finally
    Free;
  end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
var
  i,j: Integer;
  e: TEdit;
begin
  with TIniFile.Create(ExtractFilePath(Application.ExeName)+'PROG.INI') do
  try
    with PageControl1 do
      for i:= 0 to PageCount - 1 do
        for j:= 0 to Pages[i].ControlCount-1 do
          if Pages[i].Controls[j] is TEdit then
          begin
            e := TEdit(Pages[i].Controls[j]);
            WriteString(e.Name,'Text', e.Text);
            WriteInteger(e.Name,'Color', e.Color);
          end;
  finally
    Free;
  end;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita