¡Ostras!, se me acaba de venir un error a la cabeza, lo primero es que faltaría sumarle 1 al itemIndex de la última línea de la función Mostrar y ni por esas está bien, eso sería asumiendo que existen todos los años desde el 2000, pero no es así.
Tal y como está ahora, lo mejor es sutituir por ComboBox1.Text.
Código Delphi
[-]
function TForm1.Mostrar(const Ruta: String): String;
var
i, j: Integer;
Nom: String;
begin
ComboBox1.Clear;
for i := 1 to 100 do
begin
Nom := kCarpera + IntTostr(i);
if FileExists(Ruta + Nom) then
j := ComboBox1.Items.Add(Nom);
end;
ComboBox1.ItemIndex := j;
ShowModal;
Result := Ruta + ComboBox1.Text;
end;
El error es por empezar con una solución y acabar con otra... quería mostrar en el combobox "campaña 20XX" y me lié.
Para hacerlo de esta segunda forma, mejor sería hacer un array simultáneo al combobox y un procedimiento AddCampana:
Variables globales al formulario
Código Delphi
[-]
var
ArrOfString: Array of string;
Procedimiento AddCampana
Código Delphi
[-]
procedure TForm1.AddCampana(const Eje: Integer);
var
j: Integer;
Dat, Cam: String;
begin
Dat := kCarpeta + IntTostr(Eje);
Cam := 'Campaña 20' + IntTostr(Eje);
j := ComboBox1.Items.Add(Cam);
SetLeng(ArrOfString, ComboBox1.Items.Count);
ArrOfString[j] := Dat;
end;
Nuevamente la función Mostrar
Código Delphi
[-]
function TForm1.Mostrar(const Ruta: String): String;
var
i: Integer;
begin
ComboBox1.Clear;
for i := 1 to 100 do
if FileExists(Ruta + Nom) then
AddCampana(i);
ComboBox1.ItemIndex := j;
ShowModal;
Result := Ruta + ArrOfString[ComboBox1.ItemIndex];
end;
Saludos.