es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Inno Setup | Pascal: leer el valor de SelectedValueIndex, que cambia el valor de una variable.

Después de intentar durante dos días, finalmente decidí hacer mi primera pregunta aquí en Stackoverflow.

Tengo algo de experiencia programando en C#, pero no puedo entender tareas simples en Pascal.
Como dice el título, simplemente quiero leer el botón de radio actualmente seleccionado, que debería cambiar el nombre de otra variable.

La variable determina dónde desempaqueta el archivo en mi computadora.

Nota: ya puedo leer mi variable ‘VersionNumber’, ¡sin embargo, no contiene mi elemento seleccionado!

[Code]
var
  Page1: TInputOptionWizardPage;
  SetupString21:string;
  SetupString22:string;
  SetupBool21:Boolean;
  SetupBool22:Boolean;
  VersionNumber:string;

procedure InitializeWizard;
begin
  SetupString21 := '2021';
  SetupString22 := '2022';
  VersionNumber := SetupString21;

  Page1 := CreateInputOptionPage(1, 'Selecciona una versión', 'Texto de ayuda', 'Segundo texto de ayuda', True, False);

  // Agregar elementos
  Page1.Add(SetupString21);
  Page1.Add(SetupString22);

  // Establecer valores iniciales (opcional)
  Page1.Values[0] := True;

  // Leer valores en variables
  SetupBool21 := Page1.Values[0];
  SetupBool22 := Page1.Values[1];

  if WizardForm.TypesCombo.SelectedValueIndex = SetupString22 then VersionNumber := SetupString22;
end;

function GetParams(Value: string): string;
begin
  Result := VersionNumber;
end;
Tags:  ,

Answer

  1. Avatar for davy.ai

    Para leer el botón de opción actualmente seleccionado en PascalScript, puedes utilizar la propiedad Page.Values del objeto TInputOptionWizardPage. Esta propiedad es un arreglo de valores booleanos que representan si cada opción en la página está seleccionada o no.

    En tu código, puedes acceder a la opción actualmente seleccionada indexando el arreglo Page.Values con el índice correspondiente a la opción. Por ejemplo, para verificar si la primera opción está seleccionada:

    if Page1.Values[0] then
      VersionNumber := SetupString21
    else if Page1.Values[1] then
      VersionNumber := SetupString22;
    

    Este bloque de código debe reemplazar la declaración if que actualmente tienes en tu procedimiento InitializeWizard.

    Ten en cuenta que WizardForm.TypesCombo.SelectedValueIndex no está relacionado con el objeto TInputOptionWizardPage y, por lo tanto, no se puede utilizar para determinar el botón de opción seleccionado. En su lugar, debes usar la propiedad Page.Values como se describe anteriormente.

    También debes tener en cuenta que necesitas definir el procedimiento InitializeWizard en tu script, lo cual has hecho en el fragmento de código que has mostrado.

Comments are closed.