
Estimado te comparto, mi código.
Img 1


Saludos
Martin Inga

Agradezco sus comentarios y sugerencias
Saludos,
Integral
--
Blog de la Comunidad Visual FoxPro en Español
http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a
publicesvfoxp...@googlegroups.com.
Para ver este debate, visita
https://groups.google.com/d/msgid/publicesvfoxpro/98ddc7c0-e4e3-477b-81ca-8b5e3bfcc0c1n%40googlegroups.com.
Entiendo perfectamente el problema. En Visual FoxPro, el ComboBox puede ser un poco caprichoso cuando mezclas el llenado manual mediante AddListItem con la propiedad ControlSource, especialmente si el tipo de datos no coincide exactamente o si el índice se mueve durante el llenado.
El problema principal en tu código es que estás ejecutando .ListIndex = 1 dentro del ciclo FOR. Esto hace que en cada iteración el combo intente posicionarse, lo cual interfiere con la asignación del ControlSource. Además, al usar AddListItem, el orden de las columnas y el índice interno pueden confundirse si no se manejan con cuidado.
Aquí tienes una versión optimizada y corregida de tu código. He limpiado los caracteres invisibles y ajustado la lógica para que sea más robusta:
BoundTo = .T.: Este es el "secreto" más común en VFP. Si tu Codigo es numérico pero el ControlSource espera un carácter (o viceversa), el combo se pierde. BoundTo le dice a VFP que el valor del ControlSource debe coincidir con el valor contenido en la BoundColumn, no con el número de índice de la lista.
ListIndex fuera del FOR: Moví la asignación del índice al final. Si lo dejas adentro, el combo intenta refrescarse mientras aún estás cargando datos, lo que puede causar que no muestre el valor seleccionado correctamente.
Coherencia en AddListItem: Asegúrate de que Temp2Bank[m.i, 1] sea tratado como texto con TRANSFORM() si es necesario, ya que los métodos de lista prefieren strings para la visualización.
LockScreen: Para una carga más limpia, especialmente si la tabla Cur_Bancos crece, esto evita que el usuario vea cómo se "mueve" el control mientras se llena.
Una recomendación adicional para tu sistema de talleres: Dado que estás manejando tablas de configuración (tarifas, bancos, etc.), podrías considerar usar el RowSourceType = 3 (SQL Statement) o 6 (Fields). Esto hace que el ComboBox se actualice automáticamente sin necesidad de hacer el FOR...ENDFOR, lo cual es más rápido y menos propenso a errores de caracteres invisibles.
¿Te gustaría que te muestre cómo configurar este mismo ComboBox usando RowSourceType = 3 para simplificar el código?