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

Ciro DrunkPriest_88 en hotmail.com
Sab Feb 17 06:28:13 CET 2007


Antes que nada, muchisimas gracias, Steven por responder tan rápido. Por cierto, y ya que me olvidé de mencionarlo, estoy usando Visual c++ 2005 Express edition

El pasado 2007-02-17 04:17:23, Steven Davidson escribió:
 SD> 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.
SD> Sugiero consultar los capítulos de nuestro curso comenzando por el capítulo 27: http://c.conclase.net/curso/index.php?cap=027

Si entendí bien, el constructor le da valores iniciales a las variables, sin retornar ningún valor. Ahora bien, ¿es posible iniciar una aplicación sin código constructor, o las variables deben contener algún valor inicial distinto de la "basura"?

SD> 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,
SD> double fNumero = textBoxn->Text.ToDouble();

Muchas gracias, ésta información me es muy útil. Simplemente una pregunta: Al escribir la "->" para "textBoxn->Text", en la parte inferior, el servicio Intellisense declara que no hay información adicional. ¿Significa algo, o simplemente debo ignorar ese mensaje?

SD> 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,
SD> void __fastcall TForm1::Button1Click( TObject *Sender )
SD> {
SD>   Edicion1->Enabled = true;
SD>   Boton1->Enabled   = false;
SD> }

Lo que yo intentaba hacer es cambiar el valor de una variable cuando un checkBox se active, y hacer que el resultado de la cuenta aparezca en un textBox al presionar un botón.  

SD> Esto lo deberías hacer como respuesta al mensaje del evento 'OnClick'. Por ejemplo,
SD> void __fastcall TForm1::ComboBox1Click( TObject *Sender )
SD> {
SD>   Edicion1->Text = ComboBox1->Items->Strings[ ComboBox1->ItemIndex ];
SD> }
SD> Espero que esto te ayude.
SD> Steven

Esto no me quedó del todo claro. Supongamos que el comboBox contiene los items a,b,c y d. Yo quiero que para el item a, en el textBoxn aparezca 1, para b que aparezca 2, etc. No estoy seguro de como hacerlo.

De nuevo, muchas gracias por su atención





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