[C con Clase] Preguntas con respecto al diseño de ventanas

Steven Davidson steven en conclase.net
Sab Feb 17 05:17:23 CET 2007


Hola Ciro,

El pasado 2007-02-16 21:29:38, Ciro escribió:

C> Bueno, yo soy extremadamente nuevo al mundo de programación, y aunque he aprendido mucho de Con Clase, necesito ayuda en un par de temas. La aplicación que estoy tratando de construir es una calculadora, que ejecuta una fórmula luego de que el usuario ingresa datos en una caja de texto. Mis preguntas son:

Antes de continar, deberías decirnos el compilador y bibliotecas que usas. Sospecho que usas Borland Builder C++ junto con las VCL. Dicho esto, veamos las dudas.

C> - Después de terminar la ventana en modo diseño, pasé a ver el código, y me di cuenta de que en una línea, tengo que ingresar el código constructor (La línea dice "TODO: Add the constructor code here"). Mi pregunta es: ¿Qué es específicamente lo que tengo que ingresar en ese espacio?

El constructor es invocado automática e implícitamente. Debido a esto comportamiento, nos permite realizar varias tareas antes de usar el objeto instanciado. La típica tarea es la de dar valores iniciales a los datos miembros. A veces, necesitamos hacer otras tareas como cargar datos de un fichero, crear memoria dinámicamente, etc.. En general, hacemos preparativos para que el estado del objeto sea correcto para poder usarse en el programa.

Sugiero consultar los capítulos de nuestro curso comenzando por el capítulo 27: http://c.conclase.net/curso/index.php?cap=027

Si tienes tus propias variables miembros, entonces es deberías far algunos valores iniciales para ellas, para que no contengan "basura".

C> - Ya he declarado las variables que voy a usar, pero no tengo idea de como asignarle a dichas variables el valor que el usuario ingrese en una caja de texto n. Hasta ahora, lo que hice fue ingresar "Variable x = textBoxn->text", pero Intellisense me dice que falta información adicional

Siempre ten en cuenta el tipo de cada dato. Sospecho que 'textBoxn' es un objeto de la clase 'TEdit', aunque también podría ser una clase derivada de 'TTextField'. Bien, la propiedad 'Text' sirve tanto para obtener como para asignar un objeto de la clase 'AnsiString'. Como se trata de una calculadora, querrás convertir el texto a un número entero para poder hacer operaciones aritméticas. Para esto, usa la función miembro (método) 'ToInt()' de 'AnsiString' o si te interesa 'ToDouble()' para convertir a un valor de tipo 'double'. Por ejemplo,

double fNumero = textBoxn->Text.ToDouble();

C> - Quisiera saber, además, como imponer como condiciones que el usuario active o desactive una checkBox, o que se presione un determinado Botón

Sugiero usar el estado de los controles para comprobar si tales condiciones se cumplen o no. También puedes usar tus propias variables booleanas. Por ejemplo, si el usuario tiene que pulsar el botón antes de poder escribir en el cuadro de edición, entonces deberías desactivar el cuadro de edición. Esto lo podrías hacer en el constructor, al principio. Cuando el usuario pulse el botón, entonces también debería activar el cuadro de edición y desactivar el botón. Esto lo haríamos en el mensaje de pulsación del botón. Por ejemplo,

void __fastcall TForm1::Button1Click( TObject *Sender )
{
  Edicion1->Enabled = true;
  Boton1->Enabled   = false;
}

C> - Por último, me preguntaba como hacer para que para determinado ítem elegido de un comboBox, que aparezca un determinado valor en un textBox

Esto lo deberías hacer como respuesta al mensaje del evento 'OnClick'. Por ejemplo,

void __fastcall TForm1::ComboBox1Click( TObject *Sender )
{
  Edicion1->Text = ComboBox1->Items->Strings[ ComboBox1->ItemIndex ];
}


Espero que esto te ayude.

Steven


Más información sobre la lista de distribución Cconclase