Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > .NET
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-06-2020
REHome REHome is offline
Miembro
 
Registrado: jul 2003
Ubicación: España
Posts: 454
Poder: 21
REHome Va por buen camino
Guardar en memoria el *

Hola:

Aquí un programa hecho en consola, solo se usa las flechas del teclado y Enter.

Este programa se basa en radioButton, que en este caso funciona si selecciona una opción y pulsas Enter, se pone un asterisco. Hasta ahí bien.

Al pulsar Salir, luego Entrar, no se queda guardado el * en el último radioButton seleccionado.

¿Cómo se hace?

El código que tengo por ahora lo dejo aquí.

Código:
using System;

namespace radioButton_consola_02_cs
{
    class Program
    {
        #region Variables.
        private static readonly string[] TEXTO = new string[] 
        {
            "( ) Opción A        ",
            "( ) Opción B        ",
            "( ) Opción C        ",
            "    SALIR"
        };
        #endregion

        static void Main(string[] args)
        {
            // Tamaño de la ventana.
            Console.SetWindowSize(20, 5);

            // Fondo verde.
            Console.BackgroundColor = ConsoleColor.Blue;

            // Letras negras.
            Console.ForegroundColor = ConsoleColor.White;

            // Oculto el cursor.
            Console.CursorVisible = false;

            // Almacena la tecla pulsada en la variable.
            ConsoleKey teclaInicial;

            do
            {
                // Limpiar pantalla.
                Console.Clear();

                // Posición del cursor del título del MENÚ PRINCIPAL.
                Console.SetCursorPosition(0, 0);

                // Título.
                Console.Write("   MENÚ PRINCIPAL   ");

                // Pocisión de la hora.
                Console.SetCursorPosition(4, 2);

                // Formato numérico dd/MM/yyyy.
                Console.Write(DateTime.Now.ToString("ddd dd MMM"));

                // Almacena en la variable una tecla pulsada.
                teclaInicial = Console.ReadKey(true).Key;

                // ¿Haz pulsado la tecla Enter?
                if (teclaInicial == ConsoleKey.Enter)
                {
                    // Sí. Se ejecuta esta función.
                    MenuPrincipal();
                }
            } while (teclaInicial != ConsoleKey.Escape);

            #region Menú Principal.
            void MenuPrincipal()
            {
                bool salir = false; 

                // En itemSelecionado:
                // -1 = Sin seleccionar con * ninguna opción.
                // 0 = Seleccionar con * la Opción A.
                // 1 = Seleccionar con * la Opción B.
                // 2 = Seleccionar con * la opción C.
                int itemSeleccionado = 0; 
                int itemSeñalado = 0;

                // Capturar tecla para luego validar.
                ConsoleKey tecla;

                do
                {
                    //******************************************************************
                    // Dibujo el menú principal.

                    // Rellenar fondo verde.
                    //Console.BackgroundColor = ConsoleColor.Green;

                    // Letras negras.
                    //Console.ForegroundColor = ConsoleColor.Black;

                    // Limpiar pantalla.
                    Console.Clear();

                    for (int k = 0; k < TEXTO.Length; k++)
                    {
                        Console.SetCursorPosition(0, k);
                        Console.Write(itemSeñalado == k ? "> " : "  ");
                        Console.Write(TEXTO[k]);
                        Console.SetCursorPosition(3, k);
                        Console.Write(itemSeleccionado == k ? "*" : " ");
                    }

                    // Fin de pintar el menú principal.
                    //******************************************************************

                    // Leer tecla ingresada por el usuario.
                    tecla = Console.ReadKey(true).Key;

                    switch (tecla)
                    {
                        case ConsoleKey.Enter:
                            itemSeleccionado = itemSeñalado;
                            salir = (itemSeleccionado == TEXTO.Length - 1);
                            break;

                        case ConsoleKey.DownArrow:
                            if (++itemSeñalado >= TEXTO.Length)
                            {
                                itemSeñalado = 0;
                            }
                            break;

                        case ConsoleKey.UpArrow:
                            if (--itemSeñalado < 0)
                            {
                                itemSeñalado = TEXTO.Length - 1;
                            }
                            break;
                    }
                    // Uso la tecla escape como salida.
                } while (!salir);
            }
            #endregion
        }
    }
}
Saludos.
__________________
http://electronica-pic.blogspot.com....n-arduino.html Manuales de electrónica general, PIC y Arduino.
Responder Con Cita
  #2  
Antiguo 18-06-2020
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
No veo ningún campo que sirva para guardar qué opción está seleccionada (si es a eso a lo que te refieres con "*").
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #3  
Antiguo 07-07-2020
REHome REHome is offline
Miembro
 
Registrado: jul 2003
Ubicación: España
Posts: 454
Poder: 21
REHome Va por buen camino
Buenas:

Ya está hecho. Dejo el código por si alguien lo necesita o como curiosidad a los visitantes.

Código:
using System;
using System.IO;

namespace radioButton_consola_03_cs
{
    class Program
    {
        #region Variables.
        private static readonly string[] TEXTO = new string[]
        {
            "( ) Opción A        ",
            "( ) Opción B        ",
            "( ) Opción C        ",
            "( ) Opción D        ",
            "( ) Opción E        ",
            "( ) Opción F        ",
            "( ) Opción G        ",
            "    SALIR"
        };

        private static int itemSeñalado;

        private static int itemSeleccionado;
        #endregion

        static void Main(string[] args)
        {
            // Título de la ventana.
            Console.Title = "RadioButton";

            // Tamaño de la ventana.
            Console.SetWindowSize(20, 5);

            // Fondo azul.
            Console.BackgroundColor = ConsoleColor.Blue;

            // Letras blanco.
            Console.ForegroundColor = ConsoleColor.White;

            // Oculto el cursor.
            Console.CursorVisible = false;

            // Almacena la tecla pulsada en la variable.
            ConsoleKey teclaInicial;

            do
            {
                // Limpiar pantalla.
                Console.Clear();

                // Posición del cursor del título del MENÚ PRINCIPAL.
                Console.SetCursorPosition(0, 0);

                // Título.
                Console.Write("   MENÚ PRINCIPAL   ");

                // Pocisión de la hora.
                Console.SetCursorPosition(4, 2);

                // Formato numérico dd/MM/yyyy.
                Console.Write(DateTime.Now.ToString("ddd dd MMM"));

                // Almacena en la variable una tecla pulsada.
                teclaInicial = Console.ReadKey(true).Key;

                // ¿Haz pulsado la tecla Enter?
                if (teclaInicial == ConsoleKey.Enter)
                {
                    // Sí. Se ejecuta esta función.
                    MenuPrincipal();
                }
            } while (teclaInicial != ConsoleKey.Escape);
        }

        #region Menú Principal.
        private static void MenuPrincipal()
        {
            bool salir = false;

            // En itemSelecionado:
            // -1 = Sin seleccionar con * ninguna opción.
            // 0 = Seleccionar con * la Opción A.
            // 1 = Seleccionar con * la Opción B.
            // 2 = Seleccionar con * la opción C.
            // 3 = Seleccionar con * la opción D.
            // 4 = Seleccionar con * la opción E.
            // 5 = Seleccionar con * la opción F.
            // 6 = Seleccionar con * la opción G.

            // Capturar tecla para luego validar.
            ConsoleKey tecla;

            // Cada vez que se vuelva al menú, está señalizado con el *.
            itemSeñalado = 0;
            int pagina;

            // Crear archivo y guarda el * seleccioinado en él.
            if (File.Exists("Archivo.txt"))
            {
                string data = File.ReadAllText("Archivo.txt");
                itemSeleccionado = Convert.ToInt32(data);
                //itemSeñalado = itemSeleccionado;
            }

            do
            {
                //******************************************************************
                // Dibujo el menú principal.

                // Limpiar pantalla.
                Console.Clear();

                pagina = 0;
                if (itemSeñalado >= 4)
                {
                    pagina = 4;
                }

                // Recorre la lista de las opciones.
                for (int k = 0; k < 4; k++)
                {
                    Console.SetCursorPosition(0, k);
                    Console.Write(itemSeñalado == k + pagina ? "> " : "  ");
                    Console.Write(TEXTO[k + pagina]);
                    Console.SetCursorPosition(3, k);
                    Console.Write(itemSeleccionado == k + pagina ? "*" : " ");
                }

                // Fin de pintar el menú principal.
                //******************************************************************

                // Leer tecla ingresada por el usuario.
                tecla = Console.ReadKey(true).Key;

                switch (tecla)
                {
                    // Al pulsar Enter, marcas un radioButton con *.
                    case ConsoleKey.Enter:
                        if (itemSeñalado < 7)
                        {
                            itemSeleccionado = itemSeñalado;
                        }
                        salir = (itemSeñalado == TEXTO.Length - 1);

                        // Si sales del programa, escribes en el archivo.
                        //if (salir == true)

                        // Si pulsa Enter, escribes en el archivo.
                        if (tecla == ConsoleKey.Enter)
                        {
                            File.WriteAllText("Archivo.txt", itemSeleccionado.ToString());
                        }

                        break;

                    // Pulsar flecha abajo del teclado.
                    case ConsoleKey.DownArrow:
                        if (++itemSeñalado >= TEXTO.Length)
                        {
                            itemSeñalado = 0;
                            Console.Clear();
                        }
                        else if (itemSeñalado == 4)
                        {
                            Console.Clear();
                        }
                        break;

                    // Pulsar flecha arriba del teclado.
                    case ConsoleKey.UpArrow:
                        if (--itemSeñalado < 0)
                        {
                            itemSeñalado = TEXTO.Length - 1;
                            Console.Clear();
                        }
                        else if (itemSeñalado == 3)
                        {
                            Console.Clear();
                        }
                        break;
                }
                // Uso la tecla escape como salida.
            } while (!salir);
        }
        #endregion
    }
}
Saludos.
__________________
http://electronica-pic.blogspot.com....n-arduino.html Manuales de electrónica general, PIC y Arduino.
Responder Con Cita
  #4  
Antiguo 08-07-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Guardar y Leer fotos directamente a una base de datos sin antes guardar como archivo rmeckbell Desarrollo en Delphi para Android 6 26-06-2017 18:24:20
[RESUELTO] Guardar estructura de memoria (clases) a disco Neftali [Germán.Estévez] OOP 27 09-03-2013 20:09:12
DBGrid: Guardar y No guardar + Validar juliannemiro Varios 2 06-01-2012 06:49:19
Guardar cambios y no guardar ayuda!! THACKER Varios 1 21-07-2008 17:49:52


La franja horaria es GMT +2. Ahora son las 14:47:58.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi