Este es el código para cargar los combos:
procedure TFMain.GetSelectPlayersByModal(AModal: Integer); var QPlayers: TFDQuery; Players: TPlayer; begin AniIndP1.Visible := True; AniIndP2.Visible := True; AniIndP1.Enabled := True; AniIndP2.Enabled := True; GetAllPlayersRates; QPlayers := TFDQuery.Create(nil); QPlayers.Connection := Datos.dbDatos; QPlayers.SQL.Text := 'select * from jugadores_rating where modal_id = ' + IntToStr(AModal) + ' order by player_alias'; try QPlayers.Open; if not QPlayers.IsEmpty then begin QPlayers.First; while not QPlayers.Eof do begin Players := TPlayer.Create; Players.PId := QPlayers.FieldByName('player_id').AsInteger; Players.PRating := QPlayers.FieldByName('rating').AsInteger; //Los Combos edWinner.Items.AddObject(QPlayers.FieldByName('player_alias').AsString,Players); edLoser.Items.AddObject(QPlayers.FieldByName('player_alias').AsString,Players); QPlayers.Next; end; edWinner.Enabled := True; edLoser.Enabled := True; end else begin edWinner.Enabled := False; edLoser.Enabled := False; end; finally QPlayers.Free; AniIndP1.Visible := False; AniIndP2.Visible := False; AniIndP1.Enabled := False; AniIndP2.Enabled := False; end; end;
Aquí lo llamo:
procedure TFMain.edModalidadChange(Sender: TObject); begin getSelectPlayersByModal(TModalidad(edModalidad.Items.Objects[edModalidad.ItemIndex]).MId); end;
Aquí hago la limpieza:
procedure TFMain.cleanNewGameForm; begin edFecha.Text := ''; edRatingWinner.Text := ''; edRatingLoser.Text := ''; edProbWinner.Text := ''; edProbLoser.Text := ''; edDistancia.Text := ''; edWinsWinner.Text := ''; edWinsLoser.Text := ''; edNewRating1.Text := ''; edNewRating2.Text := ''; //Liberamos los objetos de los combos Rutinas.FreePlayersObjectsFromCombo(edWinner); Rutinas.FreePlayersObjectsFromCombo(edLoser); //Luego los colocamos en su estado original edModalidad.ItemIndex := -1; edWinner.Enabled := False; edLoser.Enabled := False; end;
Aquí la rutina de Limpieza:
procedure FreePlayersObjectsFromCombo(ACombo: TComboBox); var i: Integer; begin for i := 0 to ACombo.Items.Count -1 do begin if ACombo.Items.Objects[i] <> nil then begin ACombo.Items.Objects[i].Free; ACombo.Items.Objects[i] := nil; end; end; end;
Quería ponerles un Gif, pero me ha costado el asunto