Hola nuevamente thelibmx,
Estuve haciendo unas diligencias y ya volví.
El error te que arroja se debe a que tu procedimiento LlenadoCombo tiene una variable del tipo TComboBox, precisamente la variable comboxselectoranio. Dicha variable en ningún momento está asociada a algún control y/o está instanciada (para tener acceso a dicha variable debes primero crearla). Por lo que entiendo, en el procedimiento Button3 cuando invocas al combo lo haces a un combo ya instanciado, pues existe en memoria y está asociado a un form.
Cuando declaraste la variable dentro del procedimiento, el compilador interpreta correctamente que se trata de un combo pero como nunca fue creado, provoca dicho error.
La solución sería borrar dicha variable y tener el procedimiento en alguna parte (posiblemente en la parte private) de la unidad asociada de la form para mantener la referencia al combo.
La otra posibilidad es que alteres a LlenadoCombo para que reciba por parámetro el combo. Es decir:
Código Delphi
[-]procedure LlenadoCombo(Combo: TComboBox);
Vas bien.
Aprovecho para recomendarte que si deseas conseguir una mayor modularidad y beneficiar la reutilización que evites mezclar la lógica, con la parte de acceso a datos y hacia con la parte de la interfaz. No es sencillo conseguir eso. Pero es preferible tener separado en una parte las funciones y procedimientos que hacen a cuestiones exclusivas a interfaz en un lado, por otro lado las funciones que tienen que ver con el acceso a los datos y por el otro la lógica.
En ocasiones es sencillo particionar el código... en otras es inevitable.
Esto se consigue, como la mayoría de las cosas de la vida, con la práctica y un buen diseño y planteo del problema.
Como ayuda puedes hacer lo siguiente:
Ve al sistema desde 3 puntos de vista:
1. Lo que debe hacer la interfaz. Confeccciona una lista de funcionalidades que hacen al empleo de la interfaz.
2. Haz la misma lista, pero esta vez sólo para lo relacionado con el aspecto a base de datos.
3. Ahora por último, lo más complicado: La lógica. Es aqui el problema debes conseguir armar un juego de funcionalidades que permitan dirigir el programa hacia ambos puntos: la interfaz y hacia el acceso a datos. Con ambas listas en mano busca aquellos puntos (funcionalidades) que se unen y/o que forman una "dependencia I/D" (I de interfaz y D de Datos). A cada dependencia le asocias un nombre, un
evento lógico que tenga sentido. Declaralo en forma de procedimientos o funciones y trata de mantener cada "dependencia" tan separado de las otras. Es posible que hayas relaciones entre ellas.
Bueno espero que se me entienda. Esto es un TIP. Hay varias maneras de conseguir modular un sistema... esta es la más simple que se me ocurre.
Saludos,