Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* prac14.cpp
- Programa de Agenda Personal. Modulo de Bajas
- Este programa permitira capturar los datos sencillos de personas que se iran
- anexando a un archivo de texto o base de datos.
- Deberan usarse varios de los controles GUI vistos en los ejemplos, asi como
- la caracteristica MDI, propiedades de las ventanas, procedimientos de cada
- uno y adecuar cada control a la ventana correspondiente. Tambien usamos
- menus en la parte superior de nuestra forma.
- Se han dejado pequeños errores intencionales para que el alumno los encuentre
- y corrija.
- Por: LSC. Sergio Hugo Sanchez O.
- Fecha: 19/Mayo/2011
- Objetivo: Programacion de una aplicacion en Windows con C++ usando GUI.
- */
- #include <radc++.h>
- #include <string.h>
- #define miNull ""
- // Declaracion de variables
- int i, nReg, nTotReg = 0;
- int nCampos = 2;
- String cSeleccion = "";
- // Crear una ventana principal "padre" que contendra la aplicacion
- MDIForm frmPrincipal("Agenda Personal",0,0,640,400);
- /* *****************************************************
- Crear una subventana que contendra los controles con los campos necesarios
- para grabar. Estaremos usando controles de Etiqueta, Caja de Texto, Botones,
- FechaYHora, ComboBox, CheckBox y una barra de estado
- */
- Form frmAgenda = frmPrincipal.createChild("Altas",0,0,550,330);
- Label lblNombre("Nombre:",AUTO_ID,14,70,53,25,frmAgenda);
- TextBox txtNombre("",AUTO_ID,7,35,92,25,frmAgenda);
- Label lblApPaterno("Ap Paterno",AUTO_ID,112,70,65,25,frmAgenda);
- TextBox txtApPaterno("",AUTO_ID,105,35,110,25,frmAgenda);
- Label lblApMaterno("Ap Materno",AUTO_ID,231,70,55,25,frmAgenda);
- TextBox txtApMaterno("",AUTO_ID,224,35,109,25,frmAgenda);
- Label lblFechaNac("Fecha Nacimiento",AUTO_ID,350,70,100,25,frmAgenda);
- DateTime dtFecha("",AUTO_ID,343,35,172,23,frmAgenda);
- Label lblDireccion("Direccion",AUTO_ID,14,140,100,25,frmAgenda);
- TextBox txtDireccion("",AUTO_ID,7,105,292,25,frmAgenda);
- Label lblPostal("Cod Postal",AUTO_ID,350,133,100,25,frmAgenda);
- NumberBox txtCodPos("",AUTO_ID,343,105,93,25,frmAgenda);
- Label lblPais("Pais",AUTO_ID,14,210,100,25,frmAgenda);
- ComboBox cboPais("",AUTO_ID,7,175,100,500,frmAgenda);
- Label lblEstado("Estado",AUTO_ID,133,210,100,25,frmAgenda);
- TextBox txtEstado("",AUTO_ID,126,175,125,25,frmAgenda);
- CheckBox chkFamiliar("Es familiar",AUTO_ID,280,175,100,25,frmAgenda);
- Button cmdGrabar("Grabar",AUTO_ID,7,7,100,25,frmAgenda);
- Button cmdSalir("Salir",AUTO_ID,112,7,100,25,frmAgenda);
- StatusBar stBar("",AUTO_ID,frmAgenda,2,true,true,0);
- //Subventana de Mostrar registros para dar de baja
- Form frmBajas = frmPrincipal.createChild("Bajas",0,0,550,330);
- Button cmdMostrar("Contactos",AUTO_ID, 7,7,100,25,frmBajas);
- Button cmdBorrar("Eliminar",AUTO_ID,112,7,100,25,frmBajas);
- Button cmdSalir2("Salir",AUTO_ID,212,7,100,25,frmBajas);
- TableView grdPersonas("Contactos",AUTO_ID,10,35,500,100,frmBajas);
- //RichTextBox txtCaja("",AUTO_ID,10,130,500,50,frmBajas);
- /* *********************************************
- Crear el array Asociativo o Matriz que almacenara temporalmente la informacion
- */
- createAssocArray(String, bio_data);
- /* ************************************************
- La forma principal contendra un menu en la parte superior. Crear el
- menu y agregar las opciones
- */
- Menu menu(frmPrincipal);
- MenuItem __File,__Exit,__Help,__About, __Altas, __Bajas;
- //Funcion para limpiar los campos de la ventana de Altas
- int LimpiarCampos(void)
- {
- txtNombre.text = "";
- txtApPaterno.text = "";
- txtApMaterno.text = "";
- txtDireccion.text = "";
- txtCodPos.text = "";
- txtEstado.text = "";
- stBar.setText(0,"* NUEVO REGISTRO");
- return 0;
- }
- //Funcion para contar los registros del archivo DB
- int ContarReg(void)
- {
- BinaryData cFile; //Inicializamos variable Binaria
- cFile.loadFile("agendaDB.txt"); //Abrimos el archivo
- String cRegistros = cFile.c_str(); //Pasamos el contenido a variable cadena
- cFile.clear(); //Limpiamos variable binaria
- StringList cItems = cRegistros.explode(","); //Creamos una Array de Cadenas, separando segun comas
- nTotReg = (cItems.size()-1)/nCampos; //Contamos los registros diviendo entre el numero de campos
- return 0;
- }
- /* ***************************************************
- Crear el procedimiento de la subventana, ya que tenemos que cerrarla
- y hacer el proceso de grabacion de datos en un archivo de texto externo
- */
- FormProcedure form2Proc(FormProcArgs) {
- ON_CLOSE() {
- frmAgenda.hide();
- }
- ON_RESIZE() {
- stBar.adjust();
- }
- ON_COMMAND_BY( cmdGrabar ) {
- //Primero necesitamos pasar la info capturada por el usuario
- // a nuestra matriz
- bio_data["nombre"] = txtNombre.text;
- bio_data["paterno"] = txtApPaterno.text;
- //Ahora grabaremos en un archivo de Texto
- // Primero necesitamos recuperar el archivo grabado anteriormente
- // para agregarle los datos nuevos.
- BinaryData cFile;
- cFile.loadFile("agendaDB.txt");
- String cDatos = cFile.c_str();
- cFile.clear();
- //Ahora procedemos a hacer la grabacion del nuevo registro capturado
- if (frmPrincipal.save()) {
- BinaryData bin;
- String data = cDatos + "\n" + bio_data[0] + "," + bio_data[1];
- bin.add((UCHAR*)data.c_str(),data.length);
- bin.writeFile(frmPrincipal.fileName);
- bin.clear();
- }
- // Por ultimo mostramos en la barra de estado que el registro se grabo
- stBar.setText(0,"Registro grabado!");
- }
- ON_COMMAND_BY( cmdSalir ) {
- frmAgenda.hide();
- }
- return 0;
- }
- FormProcedure form3Proc(FormProcArgs) {
- ON_CLOSE() {
- frmBajas.hide();
- }
- ON_COMMAND_BY( cmdMostrar) {
- /* Para mostrar el listado de personas del cual vamos a
- eliminar, primero necesitamos abrir el archivo de datos
- pasar la informacion a nuestra matriz y luego llenar el
- control del grid (tableview)
- */
- BinaryData cFile;
- cFile.loadFile("agendaDB.txt");
- String cDatos = cFile.c_str();
- cFile.clear();
- ContarReg(); //Contar registros para saber cuantos son
- // Pasar el contenido del archivo al control Grid
- //Creamos una Array de Cadenas, separando segun comas
- StringList cItems = cDatos.explode(",");
- // Inicializamos 2 variables para contar las lineas y los items
- int j = 1;
- int nLinea = 0;
- //Hacemos un ciclo segun el total de registros, como comenzamos desde 0
- // por cuestion del TABLEVIEW, debemos restar -1 al total de registros
- for (i=0; i<=nTotReg-1; i++)
- {
- grdPersonas.addRow( str(nLinea) );
- grdPersonas.addCell( 1, nLinea, cItems[j]);
- j++;
- grdPersonas.addCell( 2, nLinea, cItems[j]);
- j++;
- nLinea++;
- }
- }
- /* ON_ROWSELECT(grdPersonas){
- frmBajas.msgBox("Cuando selecciono una fila");
- int v=0;
- v = grdPersonas.totalItems();
- frmBajas.msgBox("Items:" + str(v));
- }*/
- ON_COMMAND_BY( cmdBorrar) {
- frmBajas.infoBox("Aqui debemos borrar segun la seleccion del tableview" );
- }
- ON_COMMAND_BY( cmdSalir2 ) {
- frmBajas.hide();
- }
- return 0;
- }
- /* ***************************************************
- Crear el procedimiento de la ventana principal.
- Debera terminar la aplicacion, y hacer las acciones para los elementos del
- menu de la parte superior
- */
- FormProcedure form1Proc(FormProcArgs) {
- ON_CLOSE() Application.close();
- ON_COMMAND_BY(__Exit) Application.close();
- ON_COMMAND_BY(__About)
- frmPrincipal.infoBox("Practica 14\r\n\r\nby www.idsystemsmx.com");
- ON_COMMAND_BY(__Altas) {
- LimpiarCampos();
- frmAgenda.show();
- }
- ON_COMMAND_BY(__Bajas) {
- frmBajas.show();
- }
- return 0;
- }
- /* ***********************************************
- Programa principal. Debemos inicializar algunos elementos
- */
- rad_main()
- // Inicializar y declarar los procedimientos de las formas
- frmPrincipal.procedure = form1Proc;
- frmAgenda.procedure = form2Proc;
- frmBajas.procedure = form3Proc;
- //Menu Principal
- __File = menu.add("&Archivo");
- __Help = menu.add("A&yuda");
- //sub-menus con accion
- __Altas = __File.add("&Altas",AUTO_ID);
- __Bajas = __File.add("Bajas", AUTO_ID);
- __Exit = __File.add("&Salir",AUTO_ID);
- __About = __Help.add("A&cerca",AUTO_ID);
- // Inicializar nuestro array de informacion
- // bio_data["nombre"] = "";
- // bio_data["paterno"] = "";
- //Inicializar Grid para Bajas
- grdPersonas.addColumn("Reg");
- grdPersonas.addColumn("Nombre");
- grdPersonas.addColumn("Ap Paterno");
- // grdPersonas.addColumn("Ap Materno");
- // grdPersonas.addColumn("Direccion");
- // Aunque esta declarada nuestra subventana, al inicio no debemos
- // verla. Por lo que usamos la propiedad HIDE, para esconderla
- frmAgenda.hide();
- frmBajas.hide();
- rad_end()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement