Advertisement
idsystems

CPP_RAD_Practica16

Jun 21st, 2012
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.01 KB | None | 0 0
  1. /* prac16.cpp
  2. Programa de Agenda Personal. Modulo de Bajas
  3. Este programa permitira capturar los datos sencillos de personas que se iran
  4. anexando a un archivo de texto o base de datos.
  5.  
  6. Deberan usarse varios de los controles GUI vistos en los ejemplos, asi como
  7. la caracteristica MDI, propiedades de las ventanas, procedimientos de cada
  8. uno y adecuar cada control a la ventana correspondiente. Tambien usamos
  9. menus en la parte superior de nuestra forma.
  10.  
  11. Se han dejado pequeños errores intencionales para que el alumno los encuentre
  12. y corrija.
  13.  
  14. Por: LSC. Sergio Hugo Sanchez O.
  15. Fecha: 19/Mayo/2011
  16.  
  17. Objetivo: Programacion de una aplicacion en Windows con C++ usando GUI.
  18. */
  19. #include <radc++.h>
  20. #include <string.h>
  21.  
  22. // Declaracion de variables
  23.  
  24. // Crear una ventana principal "padre" que contendra la aplicacion
  25. MDIForm frmPrincipal("Agenda Personal",0,0,640,400);
  26.  
  27. /* *****************************************************
  28. Crear una subventana que contendra los controles con los campos necesarios
  29.  para grabar. Estaremos usando controles de Etiqueta, Caja de Texto, Botones,
  30.  FechaYHora, ComboBox, CheckBox y una barra de estado
  31. */
  32. Form frmAgenda = frmPrincipal.createChild("Altas",0,0,550,330);
  33.  
  34. Label   lblNombre("Nombre:",AUTO_ID,14,70,53,25,frmAgenda);
  35. TextBox txtNombre("",AUTO_ID,7,35,92,25,frmAgenda);
  36. Label   lblApPaterno("Ap Paterno",AUTO_ID,112,70,65,25,frmAgenda);
  37. TextBox txtApPaterno("",AUTO_ID,105,35,110,25,frmAgenda);
  38. Label   lblApMaterno("Ap Materno",AUTO_ID,231,70,55,25,frmAgenda);
  39. TextBox txtApMaterno("",AUTO_ID,224,35,109,25,frmAgenda);
  40. Label   lblFechaNac("Fecha Nacimiento",AUTO_ID,350,70,100,25,frmAgenda);
  41. DateTime    dtFecha("",AUTO_ID,343,35,172,23,frmAgenda);
  42. Label   lblDireccion("Direccion",AUTO_ID,14,140,100,25,frmAgenda);
  43. TextBox txtDireccion("",AUTO_ID,7,105,292,25,frmAgenda);
  44. Label   lblPostal("Cod Postal",AUTO_ID,350,133,100,25,frmAgenda);
  45. NumberBox   txtCodPos("",AUTO_ID,343,105,93,25,frmAgenda);
  46. Label   lblPais("Pais",AUTO_ID,14,210,100,25,frmAgenda);
  47. ComboBox    cboPais("",AUTO_ID,7,175,100,500,frmAgenda);
  48. Label   lblEstado("Estado",AUTO_ID,133,210,100,25,frmAgenda);
  49. TextBox txtEstado("",AUTO_ID,126,175,125,25,frmAgenda);
  50. CheckBox    chkFamiliar("Es familiar",AUTO_ID,280,175,100,25,frmAgenda);
  51. Button  cmdGrabar("Grabar",AUTO_ID,7,7,100,25,frmAgenda);
  52. Button  cmdSalir("Salir",AUTO_ID,112,7,100,25,frmAgenda);
  53. StatusBar   stBar("",AUTO_ID,frmAgenda,2,true,true,0);
  54.  
  55. //Subventana de Mostrar registros para dar de baja
  56. Form frmBajas = frmPrincipal.createChild("Bajas",0,0,550,330);
  57. Button cmdMostrar("Contactos",AUTO_ID, 7,7,100,25,frmBajas);
  58. Button  cmdBorrar("Eliminar",AUTO_ID,112,7,100,25,frmBajas);
  59. Button  cmdSalir2("Salir",AUTO_ID,212,7,100,25,frmBajas);
  60. TableView grdPersonas("Contactos",AUTO_ID,10,35,500,100,frmBajas);
  61. RichTextBox txtCaja("",AUTO_ID,10,130,500,50,frmBajas);
  62.  
  63. /* *********************************************
  64. Crear el array Asociativo o Matriz que almacenara temporalmente la informacion
  65. */
  66. createAssocArray(String, bio_data);
  67.  
  68. /* ************************************************
  69. La forma principal contendra un menu en la parte superior. Crear el
  70. menu y agregar las opciones
  71. */
  72. Menu menu(frmPrincipal);
  73. MenuItem __File,__Exit,__Help,__About, __Altas, __Bajas;
  74.  
  75. //Funcion para limpiar los campos de la ventana de Altas
  76. int LimpiarCampos(void)
  77. {
  78.     txtNombre.text = "";
  79.     txtApPaterno.text = "";
  80.     txtApMaterno.text = "";
  81.     txtDireccion.text = "";
  82.     txtCodPos.text = "";
  83.     txtEstado.text = "";
  84.     stBar.setText(0,"* NUEVO REGISTRO");
  85.     return 0;
  86. }
  87.  
  88. /* ***************************************************
  89. Crear el procedimiento de la subventana, ya que tenemos que cerrarla
  90. y hacer el proceso de grabacion de datos en un archivo de texto externo
  91. */
  92. FormProcedure form2Proc(FormProcArgs) {
  93.               ON_CLOSE() {
  94.                 frmAgenda.hide();
  95.               }
  96.               ON_RESIZE() {
  97.                 stBar.adjust();
  98.               }
  99.               ON_COMMAND_BY( cmdGrabar ) {
  100.                   //Primero necesitamos pasar la info capturada por el usuario
  101.                   // a nuestra matriz
  102.                   bio_data["nombre"] = txtNombre.text;
  103.                   bio_data["paterno"] = txtApPaterno.text;
  104.  
  105.                   //Ahora grabaremos en un archivo de Texto
  106.                   BinaryData cFile;
  107.                   cFile.loadFile("agendaDB.txt");
  108.                   String cDatos = cFile.c_str();
  109.                   cFile.clear();
  110.                  
  111.                  
  112.                   if (frmPrincipal.save()) {
  113.                    
  114.                       BinaryData bin;
  115.                       String data = cDatos + "\n" + bio_data[0] + "," + bio_data[1];
  116.                       bin.add((UCHAR*)data.c_str(),data.length);
  117.                       bin.writeFile(frmPrincipal.fileName);
  118.                       bin.clear();
  119.                   }
  120.                   stBar.setText(0,"Registro grabado!");
  121.                   //frmAgenda.msgBox("Aqui se grabara");
  122.               }
  123.               ON_COMMAND_BY( cmdSalir ) {
  124.                  frmAgenda.hide();
  125.               }
  126.               return 0;                  
  127. }
  128.  
  129. FormProcedure form3Proc(FormProcArgs) {
  130.               ON_CLOSE() {
  131.                 frmBajas.hide();
  132.               }
  133.               ON_COMMAND_BY( cmdMostrar) {
  134.                  /* Para mostrar el listado de personas del cual vamos a
  135.                  eliminar, primero necesitamos abrir el archivo de datos
  136.                  pasar la informacion a nuestra matriz y luego llenar el
  137.                  control del grid (tableview)
  138.                  */            
  139.                  BinaryData cFile;
  140.                  cFile.loadFile("agendaDB.txt");
  141.                  String cDatos = cFile.c_str();
  142.                  cFile.clear();
  143.                  // Pasar el contenido del archivo al control Grid
  144.                  String cLetra;
  145.                  cLetra = ",";
  146.                  bio_data["nombre"] = strtok(cDatos, cLetra);
  147.                  bio_data["paterno"] = strtok(cDatos, cLetra);
  148.  
  149. //                 txtCaja.text = cDatos +  "\n" + cDatos.substr(0,10) + "\n" + bio_data["nombre"];
  150.                 //txtCaja.text = bio_data["nombre"];
  151.                 grdPersonas.addRow(bio_data["nombre"]);
  152.                 grdPersonas.addRow(bio_data["paterno"]);
  153.  
  154.               }
  155.               return 0;
  156. }
  157.  
  158. /* ***************************************************
  159. Crear el procedimiento de la ventana principal.
  160. Debera terminar la aplicacion, y hacer las acciones para los elementos del
  161. menu de la parte superior
  162. */
  163.  
  164. FormProcedure form1Proc(FormProcArgs) {
  165.     ON_CLOSE()  Application.close();
  166.  
  167.     ON_COMMAND_BY(__Exit) Application.close();
  168.     ON_COMMAND_BY(__About)
  169.            frmPrincipal.infoBox("Practica 14\r\n\r\nby www.idsystemsmx.com");
  170.     ON_COMMAND_BY(__Altas) {
  171.           LimpiarCampos();
  172.           frmAgenda.show();
  173.     }
  174.     ON_COMMAND_BY(__Bajas) {
  175.           frmBajas.show();
  176.     }
  177.  
  178.     return 0;
  179. }
  180.  
  181. /* ***********************************************
  182. Programa principal. Debemos inicializar algunos elementos
  183. */
  184. rad_main()
  185.         // Inicializar y declarar los procedimientos de las formas  
  186.         frmPrincipal.procedure = form1Proc;
  187.         frmAgenda.procedure = form2Proc;
  188.         frmBajas.procedure = form3Proc;
  189.        
  190.         //Menu Principal
  191.         __File = menu.add("&Archivo");
  192.         __Help = menu.add("A&yuda");
  193.  
  194.              
  195.         //sub-menus con accion
  196.         __Altas = __File.add("&Altas",AUTO_ID);
  197.         __Bajas = __File.add("Bajas", AUTO_ID);
  198.        
  199.         __Exit = __File.add("&Salir",AUTO_ID);   
  200.         __About = __Help.add("A&cerca",AUTO_ID);     
  201.        
  202.         // Inicializar nuestro array de informacion
  203. //      bio_data["nombre"] = "";
  204. //      bio_data["paterno"] = "";
  205.        
  206.         //Inicializar Grid para Bajas
  207.         grdPersonas.addColumn("Nombre");
  208.         grdPersonas.addColumn("Ap Paterno");
  209.         grdPersonas.addColumn("Ap Materno");
  210.         grdPersonas.addColumn("Direccion");
  211.                
  212.        
  213.         // Aunque esta declarada nuestra subventana, al inicio no debemos
  214.         // verla. Por lo que usamos la propiedad HIDE, para esconderla
  215.         frmAgenda.hide();
  216.         frmBajas.hide();
  217.        
  218. rad_end()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement