Advertisement
idsystems

CPP2_Practica16_AgendaBajas

Aug 5th, 2015
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.99 KB | None | 0 0
  1. /* prac14.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. #define miNull ""
  22.  
  23.  
  24. // Declaracion de variables
  25. int i, nReg, nTotReg = 0;
  26. int nCampos = 2;
  27. String cSeleccion = "";
  28.  
  29. // Crear una ventana principal "padre" que contendra la aplicacion
  30. MDIForm frmPrincipal("Agenda Personal",0,0,640,400);
  31.  
  32. /* *****************************************************
  33. Crear una subventana que contendra los controles con los campos necesarios
  34.  para grabar. Estaremos usando controles de Etiqueta, Caja de Texto, Botones,
  35.  FechaYHora, ComboBox, CheckBox y una barra de estado
  36. */
  37. Form frmAgenda = frmPrincipal.createChild("Altas",0,0,550,330);
  38.  
  39. Label   lblNombre("Nombre:",AUTO_ID,14,70,53,25,frmAgenda);
  40. TextBox txtNombre("",AUTO_ID,7,35,92,25,frmAgenda);
  41. Label   lblApPaterno("Ap Paterno",AUTO_ID,112,70,65,25,frmAgenda);
  42. TextBox txtApPaterno("",AUTO_ID,105,35,110,25,frmAgenda);
  43. Label   lblApMaterno("Ap Materno",AUTO_ID,231,70,55,25,frmAgenda);
  44. TextBox txtApMaterno("",AUTO_ID,224,35,109,25,frmAgenda);
  45. Label   lblFechaNac("Fecha Nacimiento",AUTO_ID,350,70,100,25,frmAgenda);
  46. DateTime    dtFecha("",AUTO_ID,343,35,172,23,frmAgenda);
  47. Label   lblDireccion("Direccion",AUTO_ID,14,140,100,25,frmAgenda);
  48. TextBox txtDireccion("",AUTO_ID,7,105,292,25,frmAgenda);
  49. Label   lblPostal("Cod Postal",AUTO_ID,350,133,100,25,frmAgenda);
  50. NumberBox   txtCodPos("",AUTO_ID,343,105,93,25,frmAgenda);
  51. Label   lblPais("Pais",AUTO_ID,14,210,100,25,frmAgenda);
  52. ComboBox    cboPais("",AUTO_ID,7,175,100,500,frmAgenda);
  53. Label   lblEstado("Estado",AUTO_ID,133,210,100,25,frmAgenda);
  54. TextBox txtEstado("",AUTO_ID,126,175,125,25,frmAgenda);
  55. CheckBox    chkFamiliar("Es familiar",AUTO_ID,280,175,100,25,frmAgenda);
  56. Button  cmdGrabar("Grabar",AUTO_ID,7,7,100,25,frmAgenda);
  57. Button  cmdSalir("Salir",AUTO_ID,112,7,100,25,frmAgenda);
  58. StatusBar   stBar("",AUTO_ID,frmAgenda,2,true,true,0);
  59.  
  60. //Subventana de Mostrar registros para dar de baja
  61. Form frmBajas = frmPrincipal.createChild("Bajas",0,0,550,330);
  62. Button cmdMostrar("Contactos",AUTO_ID, 7,7,100,25,frmBajas);
  63. Button  cmdBorrar("Eliminar",AUTO_ID,112,7,100,25,frmBajas);
  64. Button  cmdSalir2("Salir",AUTO_ID,212,7,100,25,frmBajas);
  65. TableView grdPersonas("Contactos",AUTO_ID,10,35,500,100,frmBajas);
  66. //RichTextBox txtCaja("",AUTO_ID,10,130,500,50,frmBajas);
  67.  
  68. /* *********************************************
  69. Crear el array Asociativo o Matriz que almacenara temporalmente la informacion
  70. */
  71. createAssocArray(String, bio_data);
  72.  
  73. /* ************************************************
  74. La forma principal contendra un menu en la parte superior. Crear el
  75. menu y agregar las opciones
  76. */
  77. Menu menu(frmPrincipal);
  78. MenuItem __File,__Exit,__Help,__About, __Altas, __Bajas;
  79.  
  80. //Funcion para limpiar los campos de la ventana de Altas
  81. int LimpiarCampos(void)
  82. {
  83.     txtNombre.text = "";
  84.     txtApPaterno.text = "";
  85.     txtApMaterno.text = "";
  86.     txtDireccion.text = "";
  87.     txtCodPos.text = "";
  88.     txtEstado.text = "";
  89.     stBar.setText(0,"* NUEVO REGISTRO");
  90.     return 0;
  91. }
  92.  
  93. //Funcion para contar los registros del archivo DB
  94. int ContarReg(void)
  95. {
  96.    BinaryData cFile;                              //Inicializamos variable Binaria
  97.    cFile.loadFile("agendaDB.txt");                //Abrimos el archivo
  98.    String cRegistros = cFile.c_str();             //Pasamos el contenido a variable cadena
  99.    cFile.clear();                                 //Limpiamos variable binaria
  100.    StringList cItems = cRegistros.explode(",");   //Creamos una Array de Cadenas, separando segun comas
  101.    nTotReg = (cItems.size()-1)/nCampos;           //Contamos los registros diviendo entre el numero de campos
  102.     return 0;
  103. }
  104.  
  105. /* ***************************************************
  106. Crear el procedimiento de la subventana, ya que tenemos que cerrarla
  107. y hacer el proceso de grabacion de datos en un archivo de texto externo
  108. */
  109. FormProcedure form2Proc(FormProcArgs) {
  110.               ON_CLOSE() {
  111.                 frmAgenda.hide();
  112.               }
  113.               ON_RESIZE() {
  114.                 stBar.adjust();
  115.               }
  116.               ON_COMMAND_BY( cmdGrabar ) {
  117.                   //Primero necesitamos pasar la info capturada por el usuario
  118.                   // a nuestra matriz
  119.                   bio_data["nombre"] = txtNombre.text;
  120.                   bio_data["paterno"] = txtApPaterno.text;
  121.  
  122.                   //Ahora grabaremos en un archivo de Texto
  123.                   // Primero necesitamos recuperar el archivo grabado anteriormente
  124.                   // para agregarle los datos nuevos.
  125.                   BinaryData cFile;
  126.                   cFile.loadFile("agendaDB.txt");
  127.                   String cDatos = cFile.c_str();
  128.                   cFile.clear();
  129.                  
  130.                   //Ahora procedemos a hacer la grabacion del nuevo registro capturado
  131.                   if (frmPrincipal.save()) {
  132.                    
  133.                       BinaryData bin;
  134.                       String data = cDatos + "\n" + bio_data[0] + "," + bio_data[1];
  135.                       bin.add((UCHAR*)data.c_str(),data.length);
  136.                       bin.writeFile(frmPrincipal.fileName);
  137.                       bin.clear();
  138.                   }
  139.                   // Por ultimo mostramos en la barra de estado que el registro se grabo
  140.                   stBar.setText(0,"Registro grabado!");
  141.               }
  142.  
  143.               ON_COMMAND_BY( cmdSalir ) {
  144.                  frmAgenda.hide();
  145.               }
  146.               return 0;                  
  147. }
  148.  
  149. FormProcedure form3Proc(FormProcArgs) {
  150.               ON_CLOSE() {
  151.                 frmBajas.hide();
  152.               }
  153.               ON_COMMAND_BY( cmdMostrar) {
  154.                  /* Para mostrar el listado de personas del cual vamos a
  155.                  eliminar, primero necesitamos abrir el archivo de datos
  156.                  pasar la informacion a nuestra matriz y luego llenar el
  157.                  control del grid (tableview)
  158.                  */            
  159.                  BinaryData cFile;
  160.                  cFile.loadFile("agendaDB.txt");
  161.                  String cDatos = cFile.c_str();
  162.                  cFile.clear();
  163.                  ContarReg();                  //Contar registros para saber cuantos son
  164.                  // Pasar el contenido del archivo al control Grid
  165.                  //Creamos una Array de Cadenas, separando segun comas
  166.                  StringList cItems = cDatos.explode(",");  
  167.                 // Inicializamos 2 variables para contar las lineas y los items
  168.                  int j = 1;                                
  169.                  int nLinea = 0;
  170.                  //Hacemos un ciclo segun el total de registros, como comenzamos desde 0
  171.                  // por cuestion del TABLEVIEW, debemos restar -1 al total de registros
  172.                  for (i=0; i<=nTotReg-1; i++)
  173.                  {
  174.                      grdPersonas.addRow( str(nLinea) );
  175.                      grdPersonas.addCell( 1, nLinea, cItems[j]);
  176.                      j++;
  177.                      grdPersonas.addCell( 2, nLinea, cItems[j]);
  178.                      j++;
  179.                      nLinea++;
  180.                  }
  181.               }
  182. /*              ON_ROWSELECT(grdPersonas){
  183.                  frmBajas.msgBox("Cuando selecciono una fila");
  184.                  int v=0;
  185.                  v = grdPersonas.totalItems();
  186.                  frmBajas.msgBox("Items:" + str(v));
  187.               }*/
  188.  
  189.               ON_COMMAND_BY( cmdBorrar) {
  190.                    
  191.                     frmBajas.infoBox("Aqui debemos borrar segun la seleccion del tableview" );
  192.                 }
  193.  
  194.               ON_COMMAND_BY( cmdSalir2 ) {
  195.                  frmBajas.hide();
  196.               }
  197.  
  198.  
  199.               return 0;
  200. }
  201.  
  202. /* ***************************************************
  203. Crear el procedimiento de la ventana principal.
  204. Debera terminar la aplicacion, y hacer las acciones para los elementos del
  205. menu de la parte superior
  206. */
  207.  
  208. FormProcedure form1Proc(FormProcArgs) {
  209.     ON_CLOSE()  Application.close();
  210.  
  211.     ON_COMMAND_BY(__Exit) Application.close();
  212.     ON_COMMAND_BY(__About)
  213.            frmPrincipal.infoBox("Practica 14\r\n\r\nby www.idsystemsmx.com");
  214.     ON_COMMAND_BY(__Altas) {
  215.           LimpiarCampos();
  216.           frmAgenda.show();
  217.     }
  218.     ON_COMMAND_BY(__Bajas) {
  219.           frmBajas.show();
  220.     }
  221.  
  222.     return 0;
  223. }
  224.  
  225. /* ***********************************************
  226. Programa principal. Debemos inicializar algunos elementos
  227. */
  228. rad_main()
  229.         // Inicializar y declarar los procedimientos de las formas  
  230.         frmPrincipal.procedure = form1Proc;
  231.         frmAgenda.procedure = form2Proc;
  232.         frmBajas.procedure = form3Proc;
  233.        
  234.         //Menu Principal
  235.         __File = menu.add("&Archivo");
  236.         __Help = menu.add("A&yuda");
  237.  
  238.              
  239.         //sub-menus con accion
  240.         __Altas = __File.add("&Altas",AUTO_ID);
  241.         __Bajas = __File.add("Bajas", AUTO_ID);
  242.        
  243.         __Exit = __File.add("&Salir",AUTO_ID);   
  244.         __About = __Help.add("A&cerca",AUTO_ID);     
  245.        
  246.         // Inicializar nuestro array de informacion
  247. //      bio_data["nombre"] = "";
  248. //      bio_data["paterno"] = "";
  249.        
  250.         //Inicializar Grid para Bajas
  251.         grdPersonas.addColumn("Reg");
  252.         grdPersonas.addColumn("Nombre");
  253.         grdPersonas.addColumn("Ap Paterno");
  254. //      grdPersonas.addColumn("Ap Materno");
  255. //      grdPersonas.addColumn("Direccion");
  256.            
  257.        
  258.         // Aunque esta declarada nuestra subventana, al inicio no debemos
  259.         // verla. Por lo que usamos la propiedad HIDE, para esconderla
  260.         frmAgenda.hide();
  261.         frmBajas.hide();
  262.        
  263. rad_end()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement