Ver Mensaje Individual
  #3  
Antiguo 20-12-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Reputación: 24
seoane Va por buen camino
Vaya, me lié a teclear código y parece que Lepe se me adelanto

Bueno, yo no estoy muy familiarizado con el funcionamiento del Installshield, pero se me ocurre otra forma de hacerlo. La primera vez que se ejecuta el programa, pide que se escoja entre "usuario" y "avanzado". Esto lo dejamos grabado, y ya no lo preguntamos mas veces. Algo así:

La función "SoyAvanzado" devuelve TRUE si el usuario es avanzado, y si el usuario no se había decidido anteriormente entre una de las 2 modalidades, le da la opción de escoger. Colocala en un punto adecuado de tu programa, por ejemplo en el OnCreate del formulario principal.
Código Delphi [-]
uses Registry;

const
  Clave = '1234';

function SoyAvanzado: Boolean;
var
  Str: String;
begin
  Result:= FALSE;
  with TRegistry.Create do
  try
    RootKey:= HKEY_CURRENT_USER;
    if OpenKey('\Software\TuAplicacion',TRUE) then
    begin
      Str:= EmptyStr;
      if ValueExists('Clave') then
        Str:= ReadString('Clave');
      if Str = EmptyStr then
       case MessageBox(0,'¿Eres avanzado?','Usuario',
          MB_YESNOCANCEL or MB_ICONQUESTION or MB_TASKMODAL) of
         IDYES:
           begin
             Str:= InputBox('Usuario','Introduce la clave',EmptyStr);
             if AnsiSameText(Str,Clave) then
               WriteString('Clave',Str)
             else
               ShowMessage('La clave no es correcta, la aplicacion se iniciara como usuario');
           end;
         IDNO:
           begin
             Str:= 'Usuario';
             WriteString('Clave','Usuario');
           end;
         IDCANCEL:
           ShowMessage('La aplicacion se iniciara como usuario');
       end;
      if AnsiSameText(Str,Clave) then
        Result:= TRUE;
      CloseKey;
    end;
  finally
    Free;
  end;
end;

Por ejemplo:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  BotonAvanzado.Enabled:= SoyAvanzado;
end;

Última edición por seoane fecha: 20-12-2006 a las 12:54:31.
Responder Con Cita