1 00:00:00,880 --> 00:00:10,279 Bueno, por último, vamos a ver los menús, cómo se crean menús y cómo se abren cuadros de diálogo. 2 00:00:12,919 --> 00:00:16,899 Bueno, me voy aquí a mis ejemplos y he creado aquí un pequeño ejemplo que se llama editor. 3 00:00:18,120 --> 00:00:22,239 Este ejemplo, primero lo voy a ejecutar para que veáis lo que hace. 4 00:00:25,690 --> 00:00:27,649 Bueno, es un pequeño blo de notas. 5 00:00:27,649 --> 00:00:30,149 Aquí pongo hola mundo. 6 00:00:30,949 --> 00:00:32,250 Bueno, aquí yo puedo escribir texto. 7 00:00:32,250 --> 00:00:33,630 veis que tiene como 8 00:00:33,630 --> 00:00:36,170 los distintos menús 9 00:00:36,170 --> 00:00:37,810 para guardar 10 00:00:37,810 --> 00:00:40,630 y si yo cojo y digo que lo guardo 11 00:00:40,630 --> 00:00:41,289 el archivo 12 00:00:41,289 --> 00:00:45,090 digo que es hola.txt 13 00:00:45,090 --> 00:00:46,869 vais a ver que el archivo 14 00:00:46,869 --> 00:00:48,670 pues lo ha guardado 15 00:00:48,670 --> 00:00:49,729 aquí tengo mi hola.txt 16 00:00:49,729 --> 00:00:52,329 y que ha cambiado aquí 17 00:00:52,329 --> 00:00:52,689 el texto 18 00:00:52,689 --> 00:00:55,130 y 19 00:00:55,130 --> 00:00:57,130 también puedo abrir el archivo 20 00:00:57,130 --> 00:00:58,450 digo aquí open 21 00:00:58,450 --> 00:00:59,729 elijo un archivo 22 00:00:59,729 --> 00:01:01,369 este por ejemplo 23 00:01:01,369 --> 00:01:03,289 abrir, ¿veis? 24 00:01:03,390 --> 00:01:04,590 y veis que me lo ha abierto 25 00:01:04,590 --> 00:01:07,459 ¿de acuerdo? 26 00:01:09,260 --> 00:01:11,000 bueno, esto es simplemente un menú 27 00:01:11,000 --> 00:01:13,239 y esto es un paint.exe, no tiene más 28 00:01:13,239 --> 00:01:15,180 ¿cómo hago esto? 29 00:01:15,420 --> 00:01:17,299 vale, pues vamos a verlo 30 00:01:17,299 --> 00:01:20,060 me abro mi designer 31 00:01:20,060 --> 00:01:25,409 me abro mi designer 32 00:01:25,409 --> 00:01:27,569 y vamos a ver cómo se crean los menús 33 00:01:27,569 --> 00:01:28,750 me creo en mi main window 34 00:01:28,750 --> 00:01:29,969 y para crear menús 35 00:01:29,969 --> 00:01:33,030 para crear menús no es muy complejo, ¿veis ahí eso que pone? 36 00:01:33,349 --> 00:01:34,969 escriba aquí que lo hemos estado ignorando 37 00:01:34,969 --> 00:01:36,310 está la barra de menú 38 00:01:36,310 --> 00:01:45,489 entonces si hago doble clic pongo el nombre del menú menú archivo y aquí ya me sabe el 39 00:01:45,489 --> 00:01:54,909 menú de archivo pues aquí podría por ejemplo nuevo de acuerdo si os fijáis me va creando ya aquí 40 00:01:57,310 --> 00:02:02,670 el nombre que tiene cada una de estas acciones archivo nuevo pues acción nuevo intenta con lo 41 00:02:02,670 --> 00:02:04,829 que pongo aquí, ponerle el nombre, si no acierta 42 00:02:04,829 --> 00:02:06,609 con el nombre, yo puedo pulsar aquí 43 00:02:06,609 --> 00:02:08,650 y cambiar y ponerlo yo aquí lo que quiera 44 00:02:08,650 --> 00:02:10,169 ¿vale? pero aquí como he acertado 45 00:02:10,169 --> 00:02:12,610 pues no hay problema, puedo poner aquí otro que sea abrir 46 00:02:12,610 --> 00:02:16,409 abrir 47 00:02:16,409 --> 00:02:17,909 guardar, ¿no? 48 00:02:20,919 --> 00:02:22,319 y con esto voy creando el menú 49 00:02:22,319 --> 00:02:24,039 aquí podría ser menú, editar 50 00:02:24,039 --> 00:02:26,240 editar 51 00:02:26,240 --> 00:02:30,000 aquí puede ser copiar, ¿no? 52 00:02:32,819 --> 00:02:33,219 pegar 53 00:02:33,219 --> 00:02:38,319 bueno, ahí pueden estar los 54 00:02:38,319 --> 00:02:45,080 distintos elementos. Puedo añadir submenús, ¿vale? Estos para añadir submenús. Yo que 55 00:02:45,080 --> 00:02:51,580 sé. Aquí puede ser opciones, ¿no? Y aquí dentro de opciones le podría meter aquí 56 00:02:51,580 --> 00:03:07,379 otro submenú que fuera lo que sea. Formato y cosas así, ¿vale? Si me voy a la vista 57 00:03:07,379 --> 00:03:17,120 previa, pues veis que están aquí mis menús. Aquí creados. Puedo poner acciones rápidas. 58 00:03:17,120 --> 00:03:28,849 Por aquí hay un sitio. A ver, ¿dónde está? Que no te veo. Shortcut, aquí. El shortcut. 59 00:03:29,650 --> 00:03:38,009 Aquí me dice que presione un ataje de teclado. Pusimos, por ejemplo, CTRL-C y ya, cuando 60 00:03:38,009 --> 00:03:39,009 lo previsualizo 61 00:03:39,009 --> 00:03:42,009 vais a ver que 62 00:03:42,009 --> 00:03:43,930 veis copiar control c 63 00:03:43,930 --> 00:03:46,189 o sea yo puedo seleccionar 64 00:03:46,189 --> 00:03:47,370 el ataje del teclado aquí 65 00:03:47,370 --> 00:03:49,330 en abrir puedo hacer control o 66 00:03:49,330 --> 00:03:51,409 selecciono abrir, busco aquí 67 00:03:51,409 --> 00:03:55,449 busco aquí 68 00:03:55,449 --> 00:03:57,550 el shortcut, a ver donde está 69 00:03:57,550 --> 00:03:58,150 shortcut 70 00:03:58,150 --> 00:04:00,330 shortcut 71 00:04:00,330 --> 00:04:03,629 y puedo ponerlo aquí lo que quiera, puedo ponerle 72 00:04:03,629 --> 00:04:05,750 presionar el ataje del teclado 73 00:04:05,750 --> 00:04:07,169 control o 74 00:04:07,169 --> 00:04:08,710 ya lo tengo 75 00:04:08,710 --> 00:04:11,469 vale, cuando hago la pista 76 00:04:11,469 --> 00:04:12,849 de formulario 77 00:04:12,849 --> 00:04:15,289 me dice, bueno, en abrir cuando pulse 78 00:04:15,289 --> 00:04:16,889 control se me va 79 00:04:16,889 --> 00:04:19,149 a ejecutar lo que yo 80 00:04:19,149 --> 00:04:21,430 conecte aquí a este evento, al evento de abrir 81 00:04:21,430 --> 00:04:27,189 bueno, lo que he hecho aquí en el ejemplo 82 00:04:27,189 --> 00:04:29,230 simplemente es que le he puesto aquí un pen test 83 00:04:29,230 --> 00:04:31,329 ada, test área, este 84 00:04:31,329 --> 00:04:33,290 el test edit 85 00:04:33,290 --> 00:04:34,769 le he puesto aquí 86 00:04:34,769 --> 00:04:36,410 una distribución vertical 87 00:04:36,410 --> 00:04:38,529 y ya está, no he hecho más 88 00:04:38,529 --> 00:04:41,110 bueno, esto lo he colocado un poquito más mejor 89 00:04:41,110 --> 00:04:42,310 pero no he hecho más 90 00:04:42,310 --> 00:04:46,829 vale, si vemos el código fuente 91 00:04:46,829 --> 00:04:47,589 de lo que yo he escrito 92 00:04:47,589 --> 00:04:50,910 aquí está mi main window, pero este lo voy a cerrar 93 00:04:50,910 --> 00:04:52,970 para no confundirnos 94 00:04:52,970 --> 00:04:55,209 con la cosilla que he hecho por aquí 95 00:04:55,209 --> 00:04:56,269 todo esto lo cierro 96 00:04:56,269 --> 00:04:58,949 bueno, pues voy a abrir este 97 00:04:58,949 --> 00:05:00,949 no, este no, sí este 98 00:05:00,949 --> 00:05:03,029 esto lo borro 99 00:05:03,029 --> 00:05:06,279 esto lo abro 100 00:05:06,819 --> 00:05:08,699 vale, este ya es bien hecho 101 00:05:08,699 --> 00:05:10,300 fijaos, al área de texto le llamo 102 00:05:10,300 --> 00:05:12,660 printesarea y aquí en la menús 103 00:05:12,660 --> 00:05:14,660 pues están todos los menús que me ha dado 104 00:05:14,660 --> 00:05:15,500 por ponerlos en inglés 105 00:05:15,500 --> 00:05:18,259 si vamos al código fuente 106 00:05:18,259 --> 00:05:22,500 aquí ya empieza a haber novedades 107 00:05:22,500 --> 00:05:24,220 bueno 108 00:05:24,220 --> 00:05:26,560 os acordáis la base, ¿no? 109 00:05:26,759 --> 00:05:28,879 que decíamos que este código lo vamos a usar 110 00:05:28,879 --> 00:05:30,779 de base, el que poníamos al principio 111 00:05:30,779 --> 00:05:31,540 para el botón, ¿no? 112 00:05:31,939 --> 00:05:34,439 bueno, pues pongo aquí mi base, copio y pego 113 00:05:34,439 --> 00:05:36,660 aquí cargo las bibliotecas 114 00:05:37,339 --> 00:05:38,620 creo mi clase 115 00:05:38,620 --> 00:05:40,980 y la hago derivar de main 116 00:05:40,980 --> 00:05:42,399 mi constructor 117 00:05:42,399 --> 00:05:44,660 llamo al constructor de la clase 118 00:05:44,660 --> 00:05:46,779 padre, bueno aquí he definido una propiedad 119 00:05:46,779 --> 00:05:47,720 que es el nombre del archivo 120 00:05:47,720 --> 00:05:49,660 de momento lo pongo a none 121 00:05:49,660 --> 00:05:51,740 y cargo la interfaz 122 00:05:51,740 --> 00:05:54,300 y conecto los eventos, fijaros que 123 00:05:54,300 --> 00:05:56,259 los eventos del botón 124 00:05:56,259 --> 00:05:57,959 los conectaba con clicket 125 00:05:57,959 --> 00:06:00,160 de acuerdo, con clicket 126 00:06:00,160 --> 00:06:01,439 ahí lo tenéis, con clicket 127 00:06:01,439 --> 00:06:04,139 bueno, pues los eventos del menos son 128 00:06:04,139 --> 00:06:05,040 tiger 129 00:06:05,040 --> 00:06:07,420 son disparadores 130 00:06:07,420 --> 00:06:08,759 o sea, son disparados 131 00:06:08,759 --> 00:06:10,420 pues cojo los distintos 132 00:06:10,420 --> 00:06:13,199 eventos del menú 133 00:06:13,199 --> 00:06:15,560 o sea, todos estos 134 00:06:15,560 --> 00:06:17,600 el actionOpen 135 00:06:17,600 --> 00:06:18,939 este aquí, por ejemplo 136 00:06:18,939 --> 00:06:21,680 o sea, el window.actionOpen 137 00:06:21,680 --> 00:06:23,819 y digo 138 00:06:23,819 --> 00:06:25,720 que cuando se dispare, lo voy a conectar 139 00:06:25,720 --> 00:06:26,040 con 140 00:06:26,040 --> 00:06:29,339 este slot, ¿de acuerdo? 141 00:06:29,399 --> 00:06:30,240 aquí tengo los slots 142 00:06:30,240 --> 00:06:32,939 estos slots son muy simples 143 00:06:32,939 --> 00:06:34,639 ya tengo 144 00:06:34,639 --> 00:06:36,899 los relots que manejan el menú 145 00:06:36,899 --> 00:06:39,579 estos relots son muy simples 146 00:06:39,579 --> 00:06:41,939 estos dos son muy interesantes 147 00:06:41,939 --> 00:06:43,740 el de abrir 148 00:06:43,740 --> 00:06:45,759 y guardar, vamos a ver como funciona 149 00:06:45,759 --> 00:06:47,639 abrir 150 00:06:47,639 --> 00:06:48,800 esto es nuevo 151 00:06:48,800 --> 00:06:51,980 aquí, esto es nuevo 152 00:06:51,980 --> 00:06:53,720 bueno, file dialog 153 00:06:53,720 --> 00:06:55,839 sirve para abrir 154 00:06:55,839 --> 00:06:57,899 los cuadros de diálogo de guardar 155 00:06:57,899 --> 00:07:00,180 y abrir archivos, o sea yo cuando he ejecutado 156 00:07:00,180 --> 00:07:00,560 esto 157 00:07:00,560 --> 00:07:09,009 cuando he ejecutado esto 158 00:07:09,009 --> 00:07:11,269 he dicho file open 159 00:07:11,269 --> 00:07:13,329 esto 160 00:07:13,329 --> 00:07:16,329 se me ha abierto este cuadro de diálogo 161 00:07:16,329 --> 00:07:18,050 pues el cuadro de diálogo 162 00:07:18,050 --> 00:07:19,689 se usa con 163 00:07:19,689 --> 00:07:21,990 esto, con el file dialog 164 00:07:21,990 --> 00:07:23,589 file dialog 165 00:07:23,589 --> 00:07:25,889 este cachito de código 166 00:07:25,889 --> 00:07:27,490 sirve para abrir archivos 167 00:07:27,490 --> 00:07:29,709 este cachito 168 00:07:29,709 --> 00:07:32,810 de código, sirve para abrir archivos 169 00:07:32,810 --> 00:07:34,910 nos vamos a la chuleta 170 00:07:34,910 --> 00:07:37,069 y vamos a decir que 171 00:07:37,069 --> 00:07:40,209 cool file 172 00:07:40,209 --> 00:07:41,589 dialog 173 00:07:41,589 --> 00:07:44,769 abrir 174 00:07:44,769 --> 00:07:46,829 archivos 175 00:07:46,829 --> 00:07:48,269 con 176 00:07:48,269 --> 00:07:49,769 esto 177 00:07:49,769 --> 00:07:53,839 abrir archivos con esto 178 00:07:53,839 --> 00:07:59,730 vale 179 00:07:59,730 --> 00:08:02,750 y guardar 180 00:08:02,750 --> 00:08:03,550 archivos con 181 00:08:03,550 --> 00:08:11,170 se haría con 182 00:08:11,170 --> 00:08:13,350 este otro cachito de código de aquí 183 00:08:13,350 --> 00:08:14,949 ahí 184 00:08:14,949 --> 00:08:19,180 con este otro cachito de código 185 00:08:19,180 --> 00:08:20,459 que tengo aquí 186 00:08:20,459 --> 00:08:29,470 ahí lo tengo, ¿vale? 187 00:08:30,470 --> 00:08:32,330 bueno, esto 188 00:08:32,330 --> 00:08:37,879 estoy invocando 189 00:08:37,879 --> 00:08:40,019 al método de abrir un archivo 190 00:08:40,019 --> 00:08:41,519 esto que pongo aquí 191 00:08:41,519 --> 00:08:43,779 de setWindow, le estoy diciendo que la ventana 192 00:08:43,779 --> 00:08:45,240 principal se bloquee, si aquí 193 00:08:45,240 --> 00:08:46,679 pusiera nada 194 00:08:46,679 --> 00:08:49,919 no se bloquearía 195 00:08:49,919 --> 00:08:52,120 la ventana principal y eso no me interesa 196 00:08:52,120 --> 00:08:54,139 aquí pongo el nombre de la ventana 197 00:08:54,139 --> 00:08:56,100 o sea, aquí veis que pone open file 198 00:08:56,100 --> 00:08:58,120 yo cuando ejecuto 199 00:08:58,120 --> 00:08:58,539 esto 200 00:08:58,539 --> 00:09:01,799 y digo abrir 201 00:09:01,799 --> 00:09:04,259 file open 202 00:09:04,259 --> 00:09:05,440 aquí pone 203 00:09:05,440 --> 00:09:07,419 aquí lo veis que arriba pone open file 204 00:09:07,419 --> 00:09:09,539 este open file que pone aquí es 205 00:09:09,539 --> 00:09:12,159 este texto que yo he puesto 206 00:09:12,159 --> 00:09:13,820 aquí, de acuerdo 207 00:09:13,820 --> 00:09:15,879 este texto que he puesto aquí es open file 208 00:09:15,879 --> 00:09:17,980 bueno, esta es la carpeta donde quiero abrir 209 00:09:17,980 --> 00:09:19,899 digo la carpeta actual y aquí estoy diciendo 210 00:09:19,899 --> 00:09:21,179 que quiero todos los archivos 211 00:09:21,179 --> 00:09:23,779 si busquese la documentación 212 00:09:23,779 --> 00:09:25,360 te explico aquí la forma de poner aquí 213 00:09:25,360 --> 00:09:27,519 que por ejemplo, quieres abrir los 214 00:09:27,519 --> 00:09:29,899 .txt, pues pondrías .txt 215 00:09:30,639 --> 00:09:32,080 y solo abriría 216 00:09:32,080 --> 00:09:32,940 los .txt 217 00:09:32,940 --> 00:09:35,519 solo mostraría los .txt 218 00:09:35,519 --> 00:09:38,019 si pones un asterisco ahí, pues abre todos los archivos 219 00:09:38,019 --> 00:09:39,379 bueno 220 00:09:39,379 --> 00:09:41,200 me devuelve dos valores 221 00:09:41,200 --> 00:09:43,539 el nombre del archivo y el tipo 222 00:09:43,539 --> 00:09:46,059 mejor aquí 223 00:09:46,059 --> 00:09:47,940 me devuelve dos valores, el nombre del archivo 224 00:09:47,940 --> 00:09:48,500 y el tipo 225 00:09:48,500 --> 00:09:51,179 el nombre del archivo si está vacío 226 00:09:51,179 --> 00:09:53,539 es que el usuario ha pulsado 227 00:09:53,539 --> 00:09:55,059 cancelar, o sea, si yo 228 00:09:55,059 --> 00:09:55,960 llego aquí 229 00:09:55,960 --> 00:09:58,480 digo abrir 230 00:09:58,480 --> 00:10:01,360 y pulso cancelar, pues no devuelve 231 00:10:01,360 --> 00:10:03,399 el nombre del archivo, que es lo que me está indicando 232 00:10:03,399 --> 00:10:05,340 aquí, o sea, si el nombre del archivo 233 00:10:05,340 --> 00:10:07,019 es comillas comillas, pues 234 00:10:07,019 --> 00:10:09,139 pues nada, y esto es el tipo del archivo 235 00:10:09,139 --> 00:10:10,860 si es tipo texto, tipo de lo que sea 236 00:10:10,860 --> 00:10:13,100 realmente tipo texto no lo vamos a usar 237 00:10:13,100 --> 00:10:14,320 nos interesa el nombre del archivo 238 00:10:14,320 --> 00:10:17,220 bueno, y ahora ya con el nombre del archivo 239 00:10:17,220 --> 00:10:18,259 ya hago lo que tengo que hacer 240 00:10:18,259 --> 00:10:33,919 Si es abrir, perdón, si es abrir, pues fijaros, aquí en abrir lo que estoy diciendo es, mira, ¿esto ha sido correcto? Venga, pues me abres el archivo, me lo lees y ahora en el plaintext edit le pongo el texto querido del archivo, ya está. 241 00:10:33,919 --> 00:10:41,730 Ah, bueno, digo que el nombre del archivo que estoy quitando es este. 242 00:10:41,809 --> 00:10:43,809 El nombre del archivo lo guardo para cuando pulso guardar. 243 00:10:44,230 --> 00:10:46,330 Cuando pulso guardar, directamente salvo. 244 00:10:47,149 --> 00:10:48,549 Es que cuando pulso guardar... 245 00:10:50,350 --> 00:10:53,149 Fijaos que aquí tengo como dos opciones. 246 00:10:53,830 --> 00:10:54,750 Guardar y guardar como. 247 00:10:55,210 --> 00:11:00,009 Con este abro el cuadro de diálogo y cuando tengo el nombre del archivo, 248 00:11:00,129 --> 00:11:05,049 cuando pulso a salvar, pues guardo con ese nombre que he cogido del cuadro de diálogo. 249 00:11:05,549 --> 00:11:06,970 Y esto ya no tiene más misterio. 250 00:11:07,450 --> 00:11:11,669 Ya tenemos, voy a mostrar aquí el código ya completo para que lo veáis, 251 00:11:12,210 --> 00:11:15,669 ya tenemos todo el mecanismo de guardar y salvar. 252 00:11:16,409 --> 00:11:20,149 Bueno, le he puesto aquí también el método para seleccionar el tipo de letra. 253 00:11:20,870 --> 00:11:23,730 Eso no lo voy a pedir, pero bueno, aquí lo tenéis puesto por curiosidad. 254 00:11:23,730 --> 00:11:28,750 Y también tengo por curiosidad lo de copiar, pegar y demás. 255 00:11:28,750 --> 00:11:31,690 los métodos de copiar, pegar 256 00:11:31,690 --> 00:11:33,850 y deshacer 257 00:11:33,850 --> 00:11:35,950 son tan usados 258 00:11:35,950 --> 00:11:36,889 que es que directamente 259 00:11:36,889 --> 00:11:39,649 dentro del Printex Edit ya están 260 00:11:39,649 --> 00:11:41,769 implementados, o sea, no hace falta que lo implementes tú 261 00:11:41,769 --> 00:11:43,230 es que ya lo tienen sus tripas 262 00:11:43,230 --> 00:11:44,850 con que pongas estas líneas 263 00:11:44,850 --> 00:11:47,490 estas líneas de aquí 264 00:11:47,490 --> 00:11:49,769 pues ya te hace lo de copiar, pegar 265 00:11:49,769 --> 00:11:51,929 y seleccionar el solito 266 00:11:51,929 --> 00:11:53,610 ¿vale? pues aquí 267 00:11:53,610 --> 00:11:55,669 mi pequeña introducción a los 268 00:11:55,669 --> 00:11:57,730 menos, os recomiendo que hagáis pues un pequeño 269 00:11:57,730 --> 00:11:59,990 ejemplo de menús, algo sencillo 270 00:11:59,990 --> 00:12:02,070 una pequeña mentalidad 271 00:12:02,070 --> 00:12:03,710 que muestro en los menús 272 00:12:03,710 --> 00:12:04,750 y haga alguna cosita 273 00:12:04,750 --> 00:12:06,450 tonta para practicar