Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Form2, facil porfavor tengo prisa gracias

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Form2, facil porfavor tengo prisa gracias Responder citando

Hola , aver si mi forma de explicar me ayuda a q me ayudeis:

1)tengo un boton en form1 cuando lo pulso debe aparecer un form2.
como lo hago?he puesto Form2->Visible=true; pero nada.
dice q no lo reconoce.

2)una vez q me aparece form2 tengo 8x8 celdas de edits , el usuario intrduce un número en cada una y al presionar un boton de guardar , se gurdan en una matriz 8x8(un arreglo), eso se hacerlo pero lo q no se es el manejo de errores, es decir si el usuario introdujera una letra o dejara una casilla en blanco ....etc me gustaria sacar un showmessage para q volviera a hacerlo.
Volver arriba
Mensaje    Asunto: Responder citando

esa matriz la tengo q declarar como global en el unit 1? o si la declaro como vble en el boton guardar , la puedo llamar desde unit 1???

en fin , la matriz la tengo q utilizar en el unit1 como hago??
Volver arriba
Mensaje    Asunto: Responder citando

1.- utiliza dentro del boton.. previa inclusion del archivo de cabecera del form que quieres abrir en el Unit1.h
Código:

Form2->Show();



2.- si vas a utilizar la el arreglo, declararlo en la parte publica, del Form2, y te refieres a el desde el Form1 de la siguiente maner

Código:

Arreglo = Form2->ArregloPublico;

_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Gracias salazar y respecto a la prueba de errores , es decir , como compruebo q realmente el usuario a escrito un numero en todas las casillas?
Volver arriba
Mensaje    Asunto: Responder citando

Recorres, la Matriz, y dentro de las funciones del TEdit. existe un Metodo, que permite identificar si esta vacio o no, creo que es IsEmpty()
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Gracias Salazar pero kiero comprobar q no esté vacio , q no sea una letra ...etc en fin no seria mas lógico comprobar q es número y ya está??
si sabes....gracias
Volver arriba
Mensaje    Asunto: Responder citando

Puedes Trabajar con Control de Errores

escribes en el evento OnKeyPress de uno de los edits para forzar a que solo acepte Nros enteros
Código:

{  TEdit * edt = (TEdit*)Sender;
   if( Key != 13)
   {
     try
     { StrToInt( edt->Text+Key+"0");
     }
      catch(...)
      { Key = 0;
      }
    }
}

o este otro solo para reales
Código:

{  TEdit * edt = (TEdit*)Sender;
   if( Key != 13)
   {
      try
      { StrToFloat( edt->Text+Key+"0");
      }
       catch(...)
       { Key = 0;
       }
   }
}


Este evento lo reasignas a todos tus edits.

Este codigo al trabajar con excepciones va hacer que cada vez que presiones una tecla que no sea número te muestre un mensaje de error en el builder, lo cual pude llegar a ser exasperante pero dicho mensaje no aparece si ejecutas tu exe digamos desde el explorador de windows
Ahora puedes deshabilitar momentaneamente este comportamiento en el builder, corre a Tools/Debugger Options y desactiva la casilla "Integrated Debugging" y se desactiva la captura de errores en tiempo de ejecución por parte del builder
Te conviene que todos tus edits tengan en su text "0" o "0.0".
Luego al procesar el valor del edit solo te limitarias a hacer lo siguiente:
Si es Entero
x = Edit1->Text.ToIntDef(0);
Si es Real
x = Edit1->Text.ToDouble(0);
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

resulta q los 8x8 edits q tengo en el form2 no se como escribir en ellos la matriz de numeros de inicio, como bien dijistes tenia q poner 0 a todos pero yo necesito ponerlos a unos numeros concretos inicializada he puesto asi:

__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{ int extern mat[8][8];

Edit1->Text=mat[0][0];
Edit2->Text=mat[0][1];
Edit3->Text=mat[0][2];
Edit4->Text=mat[0][3];
Edit5->Text=mat[0][4];
Edit6->Text=mat[0][5];
Edit7->Text=mat[0][6];
Edit8->Text=mat[0][7];
Edit9->Text=mat[1][0];
Edit10->Text=mat[1][1];
Edit11->Text=mat[1][2];
........etc

pero nada, la mat la tengo como global en form1.y he puesto #include "unit1.h".
Volver arriba
Mensaje    Asunto: Responder citando

8x8 Edits!!!! guau
No seria mejor usar un TStringGrid?
Asumiendo que lo usas lo llamaremos "sg"
Le configuras sus propiedades
ColCount y RowCount = 9
Options.goEditing = true
luego pones al momento de inicializar el formulario
Código:

for( int a=1;a<9; a++)
{  sg->Cells[0][a] = a;
    sg->Cells[a][0] = a;
}

sg->Cells[Columna][Fila]
A continuación:
Código:
for( int x=1; x<9; x++)
{  for( int y=1; y<9; y++)
       sg->Cells[x][y] = mat[y][x];//Asumiendo que mat[Fila][Columna];
}

luego para llenar el array con los valores, usarias algo como
Código:
for( int x=1; x<9; x++)
{  for( int y=1; y<9; y++)
     mat[y][x]= sg->Cells[x][y].ToIntDef(0);

}


Podrías tambien experimentar con las propiedades
FixedCols y FixesdRows
Para saber que celda ha sido seleccionada puedes preguntar a las propiedades:
Col y Row
Columna = sg->Col;
Fila = sg->Row;

Si te da problemas la creación de la matriz mejor crealá dentro del primer formulario.
Recuerda que para acceder al archivo .h o .cpp de un formulario solo presionas ctrl+F6
y para acceder a ella usarias ahora

Formulario->mat[y][x]
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.