martes, 19 de septiembre de 2017

ComboBox texto y valor - C # (ID, Clave o como quieras llamarlo)

Vi que hay muchas preguntas al respecto, y también muchas respuestas. Pero vi que todas son muy complicadas. Así que aquí esta mi aporte de algo sencillo y comprensible, de cómo guardar un Texto o Cadena y un Valor asociado en un ComboBox.

El siguiente muestra cómo agregar texto (lo que se ve en el Combobox) y un valor asociado (que no se ve, pero el momento de escoger recupera este valor) este valor puede ser el ID de algo, normalmente utilizado en Base de Datos.



Para agregar texto y valor, usaremos un objeto Dictionary para almacenar el texto y valor.
Después de agregar los elementos al diccionario, el siguiente paso es configurar este objeto de diccionario como un DataSource en el ComboBox.
Coloca esto en el evento load del formulario.

Dictionary DatosCombo =  new Dictionary();
DatosCombo.Add(10, "Lunes");
DatosCombo.Add(20, "Martes");
DatosCombo.Add(30, "Miércoles");
DatosCombo.Add(40, "Jueves");
DatosCombo.Add(50, "Viernes");
DatosCombo.Add(60, "Sábado");
DatosCombo.Add(70, "Domingo");

comboBox1.DataSource = new BindingSource(DatosCombo, null);
comboBox1.DisplayMember = "Value";
comboBox1.ValueMember = "Key";

Como verás no es difícil entender, con esto llenamos el Combo Box.

Ahora, a recuperar la clave o valor de lo que está seleccionado. Para esto crea un Boton y coloca esto dentro el botón.

int key = ((KeyValuePair)comboBox1.SelectedItem).Key;
string value = ((KeyValuePair)comboBox1.SelectedItem).Value;
MessageBox.Show(key + "   " + value);

Bueno, espero te haya servido.
Hasta pronto....


miércoles, 6 de enero de 2016

Convertir Coordenadas Geograficas

Me dio por convertir unas coordenadas que me dieron en grados decimales, pero los necesitaba en grados sexagesimales (grados u hora, minutos, segundos), busque en google y existían muchas paginas que hacen la conversión, pero necesitaba algo más a la mano y cree este archivo excel que convierte de grados decimales a grados sexagesimales e inversa.

Si le sirve a alguien que lo aproveche.


Puedes bajarlo de aquí.
https://drive.google.com/file/d/0B6ymHkTGE2LKc2NwdlFOV3pQVk0/view?usp=sharing

sábado, 6 de junio de 2015

Cómo Entender Sin Tanto Esfuerzo los Incoterms

Muchas personas que planean iniciar negocios internacionales se encuentran con los famosos Incoterms, si este es tu caso, no te angusties, aquí te explicamos los inconterms de forma sencilla.

Datos básicos de Inconterms

INCOTERMS son las siglas para International Commercial Terms, que en español significa términos internacionales de comercio; los cuáles son normas acerca de las condiciones de entrega de las mercancías, se utilizan para dividir las responsabilidades entre el vendedor y el comprador.
Los incoterms son reglas que se han vuelto parte esencial del lenguaje del comercio internacional y generalmente son incorporadas en los contratos de ventas alrededor del mundo y provee de reglas y guías a importadores, exportadores, abogados, transportistas, aseguradoras y estudiantes de comercio internacional.
Son 11 las reglas establecidas en los incoterms que se encuentran en vigencia:

Incoterms para los medios de transporte

  • EXW Ex Works: Esta regla se refiere a la responsabilidad del vendedor que termina cuando ha dispuesto la mercancía en su establecimiento, sin prepararla para la exportación, es el importador el que debe encargarse de todos los gastos y riesgos que lleva importar la mercancía a su país.
  • FCA Free Carrier: Se refiere a que el vendedor cumple con la entrega de la mercancía en el momento en que la entrega al transportista, contratado por el comprador en el punto acordado. Ambas partes deben tener completamente claro el lugar de entrega y el nombre del transportista, para que no haya ningún riesgo de equivocación.
  • CPT Carriage Paid To: Esta norma hace referencia al pago que debe realizar el vendedor del transporte de la mercancía al sitio convenido con el comprador, incluyendo gastos y permisos de importación.
  • CIP Carriage and Insurance Paid to: El vendedor debe hacerse cargo de los pagos de transporte que anteriormente mencionamos y además deberá pagar un seguro contra pérdida o daño de la mercancía, sólo por una cobertura de seguromenor, si el vendedor deseará una mayor cobertura, debe correr con los gastos.
  • DAT Delivered At Terminal: Está relacionada con el transporte de mercancía, y se refiere a la entrega de la mercancía en el muelle del puerto de destino, después de la descarga.
  • DAP: Delivered At Place: Es para determinar que las mercancías serán entregadas en algún punto del país de destino.
  • DDP: Delivered Duty Paid: El vendedor realiza la entrega de la mercancía, ya hechos los trámites de exportación e importación, pero sin efectuar la descarga de los medios de transporte en el destino acordado del importador.

Reglas para transporte marítimo y fluvial

  • FAS Free Alongside Ship: Esta regla marca que el vendedor sólo es responsable de la mercancía hasta que esta está lista para el embarque convenido, colocada a un lado del buque, si sucede algún problema durante la carga, es responsabilidad ya del comprador.
  • FOB Free On Board: La responsabilidad de entrega del vendedor se termina hasta que los productos sobrepasan la borda del buque, sin el pago del flete. El vendedor está obligado a pasar la mercancía en aduana de exportación.
  • CFR Cost and Freight: El vendedor es responsable de todos los gastos de importación y flete del transporte hasta el puerto de destino convenido.
  • CIF Cost, insurance and Freight: Se refiere a los costos de envío, transporte y seguro que cada una de las partes debe correr, como anteriormente mencionamos en las reglas anteriores.
Esperamos que esta información que te hemos compartido sea de utilidad, pero si estás buscando información sobre los incoterms porque deseas iniciar un negocio de importación, te invitamos a que revises nuestra sección de cursos donde encontrarásCursos para importar.

fuente: http://www.comercioyaduanas.com.mx/incoterms/incoterms2010/461-como-entender-los-inconterms

jueves, 24 de julio de 2014

Instalar NET Framework 3.5 en Windows 8.1 Update 1 OffLine o sin Conexión

Antes que nada, esto esta probado en un sistema de 32 bits (x86), no se si funcionara en uno de 64 bits, si a alguien le funciono le pido que lo comente.

Solo necesitamos el DVD de instalacion de Windows

Este método funciona en Windows 8.1 (todas las versiones) - windows 8 (todas las versiones)


Montar la imagen ISO o insertar el DVD de Windows 8. El origen de esta característica puede encontrarse en la carpeta E:\sources\sxs. (En este caso, F: letra del quemador o lector de dvd donde se encuentra el dvd de instalación)

Abra CMD.EXE con privilegios administrativos (presiona la tecla de windows, escribe directamente cmd, aparecera un cuadradito negrito "Símbolo del sistema", clic derecho, selecciona ejecutar como administrador)

Ejecuta el siguiente comando
Dism.exe /online /enable-feature /featurename:NetFX3 /All /Source:E:\sources\sxs /LimitAccess
, y presiona ENTRAR.


Ups..... ERROR... solo llego al 65.8%

Contaba con que no pasara esto, pero nada esta libre de errores.

Según dicen por ahí de tanto buscar info, que esta operación debe realizarse cuando Windows todavía NO esta activado (haberlo dicho antes...., y ahora como desinstalo el activador?).


Existe otra forma que si me funciono.

Insertamos el disco de Windows o montamos la imagen ISO.
Seguidamente creamos una carpeta en el disco C: con el nombre de “net35″.
Ahora ejecutamos el CMD (como administrador) y escribimos
xcopy F:\sources\sxs\*.* c:\net35 /s (F es la unidad del DVD de instalación de Windows)
Lo que hará será copiar toda la información a la carpeta ya creada.
Finalmente ponemos este comando:
Dism.exe /online /enable-feature /featurename:NetFX3 /All /Source:c:\net35 /LimitAccess

Ya esta.... 100%

Suerte.

jueves, 6 de febrero de 2014

GIF animado en WPF (animación continua)

Hace tiempo que quería colocar una especie de espera mientras se carguen los datos del servidor, se me ocurrió varias cosas, pero con el fin de optimizar la velocidad y no consumir recursos al final decidí colocar una especie de manto negro semitransparente que inhabilitara los demás controles con un simple gif animado que dijera "Cargando....".

Parecía fácil, pero no fue tanto así, por ahí googleando encontré 2 soluciones referenciar Windows Forms con un PictureBox, que no es lo mio mezclar WinForms con Ventanas WPF, y lo otro utilizar un control WPF llamado MediaElement que parecia lo mas coherente:

<MediaElement LoadedBehavior="Play" Source="file://C:/anim.gif" />

Problema: Solo reproduce 1 vez el gif animado y luego se detiene.

Seguí navegando por ahí y encontré código adicional, que permite un loop infinito en MediaElement, pero solo sirve para vídeos o sonido y no aplica a gif animados.

De tanto buscar y no encontrar, no podía creer que ha nadie le haía pasado esto antes, al final estaba decidido a crear un control nativo wpf que permita resolver este problema, pero encontré la solución ya que algún lunatico había inventado la rueda antes que yo (gracias por ahorrarme gastar mi teclado).

Descarga de esta pagina http://wpfanimatedgif.codeplex.com/releases una demo de como funciona, incluye una dll (el momento de escribir esta la versión estable es la 1.4.4) que sirve para agregar a tus proyectos.

Agrega una referencia en tu proyecto a esta DLL y modifica es esta manera tu xaml, mejor te dejo una captura.


y vuala, ya tienes un GIF animado continuo.



miércoles, 8 de enero de 2014

Variables Globales o Publicas en C#

Si vienes de Visual Basic, te habrás dado cuenta que en C# no existe módulos donde generalmente se creaban las variables globales.

Para tener variables globales en C#, crea una clase dentro de tu proyecto y nombrala "Globales", dentro de la clase escribe "public static string variableGlobal1;", listo.... ya tienes tu variable global.

Mas o menos deberia quedarte así:

namespace Demo
{
    static class Globales
    {
        public static string variableGlobal1;
    }
}


Para hacer referencia a la variable de cualquier lugar:

Asignando valor:

Globales.variableGlobal1 = "Valor Demo";

Obtener valor de la variable

String cadena = Globales.variableGlobal1;

Un byte mas de sabiduría en tu cabeza.

Saludos....