| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Peeel Invitado
|
Publicado: Mie 21 Jul, 2004 10:21 am Asunto: Form2, facil porfavor tengo prisa gracias |
|
|
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 |
|
 |
Peeel Invitado
|
Publicado: Mie 21 Jul, 2004 10:25 am Asunto: |
|
|
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 |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Mie 21 Jul, 2004 10:30 am Asunto: |
|
|
1.- utiliza dentro del boton.. previa inclusion del archivo de cabecera del form que quieres abrir en el Unit1.h
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;
|
_________________
 |
|
| Volver arriba |
|
 |
Peeel Invitado
|
Publicado: Mie 21 Jul, 2004 10:36 am Asunto: |
|
|
| 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 |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Mie 21 Jul, 2004 10:43 am Asunto: |
|
|
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() _________________
 |
|
| Volver arriba |
|
 |
Peeel Invitado
|
Publicado: Mie 21 Jul, 2004 10:58 am Asunto: |
|
|
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 |
|
 |
cecito Capt

Registrado: 25 Nov 2003Mensajes: 164Ubicación: Arequipa - Perú
|
Publicado: Mie 21 Jul, 2004 2:05 pm Asunto: |
|
|
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 |
|
 |
Peeel Invitado
|
Publicado: Mie 21 Jul, 2004 5:31 pm Asunto: |
|
|
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 |
|
 |
cecito Capt

Registrado: 25 Nov 2003Mensajes: 164Ubicación: Arequipa - Perú
|
Publicado: Mie 21 Jul, 2004 6:35 pm Asunto: |
|
|
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 |
|
 |
|