07 julio 2008
Desde hace mas de un año
19 enero 2007
Concierto privado
18 enero 2007
Quemaduras por el Sol
Quizas el leer esto despues me cause risa, pero lo unico que puedo decir es que ya no lo vuelvo a hacer y aconsejo no hagan lo que yo, jajaja, hasta luego y no sean muy duros y me llenen de mensajes de burla.
11 enero 2007
A la Alza
Ahora segun nuestros secretarios dicen que el precio elevado se debe al alto costo del Maíz y que ademas nuestro campo mexicano no satisface la demanda de grano y que se debe recurrir a la importación, pero que pasa, si ya el campo mexicano ha sido olvidado, ahora quieren darle otro golpe mas, no creen que seria mas conveniente quitar a los intermediarios que compran barato al productor y almacenan el grano para venderlo caro.
En fin yo no soy economista ni tampoco pretendo serlo, pero lo que si quiero es que nuestro gobierno busque soluciones de largo plazo y no siga dando aspirinas.
10 enero 2007
Especificadores de formato
d -> Formato decimal
f -> Coma fija
n -> Número
p -> Porcentaje
r -> Format para evitar perdida de precisión
Los resultados de los especificadores pueden diferir ya que dependen de las caracteristicas culturales consideradas en ese momento actuales por C#.
Ejemplo: Se muestra el resultado que proporciona el especificador 'c' cuando se trabaja con las caracteristicas culturales de Estados Unidos.
using System;
using System.Globalization;
class FormateoEU
{
public static void Main()
{
CultureInfo N = new CultureInfo("en-US");
string cadena = 12345.6.ToString("c",N); //Mostraria $12,345.60
Console.WriteLine(cadena);
}
}
01 enero 2007
Comienza el 2007
20 diciembre 2006
Vista Preeliminar con C#
Con este pequeño codigo es mas que suficiente
using System.Xml; //Con esto trataremos los objetos para XML
using System.Xml.Xsl;
Ahora el codigo de la función
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("s.xsl"); //Archivo con el que le daremos forma a nuestro archivo XML
//Aqui le aplicamos la transformación y lo guardamos como archivo HTML
xslt.Transform("Miarchivo.xml", "informe.html");
//Con un control webBrowser (disponible en el framework .NET 2.x ) insertado en nuestro form
//Cargamos el archivo HTML creado
web.Navigate(new Uri(Environment.CurrentDirectory + "file://informe.html/"));
//Ahora solo llamamos al metodo PrintPreviewDialog y listo
web.ShowPrintPreviewDialog();
Figura(1) Este es el control a insertar
Figgura(2) Asi es como saldria nuestra ventana con vista preeliminar
14 diciembre 2006
¿Y la educacion?
13 diciembre 2006
C# y xml
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication1
{
public partial class frmppal : Form
{
DataSet archivoXML;
DataGrid Grid;
public frmppal()
{
InitializeComponent();
}
private void frmppal_Load(object sender, EventArgs e)
{
Grid = new DataGrid();
Grid.Name = "Grid";
Grid.Size = new Size(200, 150);
Grid.Location = new Point(0, 50);
Grid.Dock = DockStyle.Fill;
pgrid.Controls.Add(Grid);
//crear un objeto para estilos en el Datagrid
DataGridTableStyle estilo = new DataGridTableStyle();
estilo.MappingName = "CONTACTO";
estilo.BackColor = Color.LightGray;
estilo.AlternatingBackColor = Color.LightSteelBlue;
estilo.ForeColor = Color.Black;
estilo.LinkColor = Color.Black;
//Crear objetos del tipo DataGridTextBoxColumn
//para cada columna de la tabla del Datagrid
DataGridTextBoxColumn columna = new DataGridTextBoxColumn();
//Configurar cada columna
//Esta es la primera columna
columna = new DataGridTextBoxColumn();
//columna.TextBox.MaxLength = 50;
columna.Alignment = HorizontalAlignment.Left;
columna.HeaderText = "Nombre del contacto";
//columna del Dataset enlazada con esta columna del Datagrid
columna.MappingName = "NOMBRE";
columna.Width = 280;
//texto que se muestra cuando la columna tiene valor null
columna.NullText = "";
//añadir la columna a los estilos del Datagrid
estilo.GridColumnStyles.Add(columna);
//Direccion
columna = new DataGridTextBoxColumn();
//columna.TextBox.MaxLength = 50;
columna.Alignment = HorizontalAlignment.Left;
columna.HeaderText = "Direccion";
//columna del Dataset enlazada con esta columna del Datagrid
columna.MappingName = "DIRECCION";
columna.Width = 190;
//texto que se muestra cuando la columna tiene valor null
columna.NullText = "";
//añadir la columna a los estilos del Datagrid
estilo.GridColumnStyles.Add(columna);
//CARGO
columna = new DataGridTextBoxColumn();
//columna.TextBox.MaxLength = 50;
columna.Alignment = HorizontalAlignment.Left;
columna.HeaderText = "Cargo";
//columna del Dataset enlazada con esta columna del Datagrid
columna.MappingName = "CARGO";
columna.Width = 190;
//texto que se muestra cuando la columna tiene valor null
columna.NullText = "";
//añadir la columna a los estilos del Datagrid
estilo.GridColumnStyles.Add(columna);
//GRUPO
columna = new DataGridTextBoxColumn();
//columna.TextBox.MaxLength = 50;
columna.Alignment = HorizontalAlignment.Left;
columna.HeaderText = "Grupo";
//columna del Dataset enlazada con esta columna del Datagrid
columna.MappingName = "GRUPO";
columna.Width = 190;
//texto que se muestra cuando la columna tiene valor null
columna.NullText = "";
//añadir la columna a los estilos del Datagrid
estilo.GridColumnStyles.Add(columna);
//LETRA
columna = new DataGridTextBoxColumn();
//columna.TextBox.MaxLength = 50;
columna.Alignment = HorizontalAlignment.Left;
columna.HeaderText = "Letra";
//columna del Dataset enlazada con esta columna del Datagrid
columna.MappingName = "LETRA";
columna.Width = 50;
//texto que se muestra cuando la columna tiene valor null
columna.NullText = "";
//añadir la columna a los estilos del Datagrid
estilo.GridColumnStyles.Add(columna);
//FAX
columna = new DataGridTextBoxColumn();
//columna.TextBox.MaxLength = 50;
columna.Alignment = HorizontalAlignment.Left;
columna.HeaderText = "Fax";
//columna del Dataset enlazada con esta columna del Datagrid
columna.MappingName = "FAX";
columna.Width = 90;
//texto que se muestra cuando la columna tiene valor null
columna.NullText = "";
//añadir la columna a los estilos del Datagrid
estilo.GridColumnStyles.Add(columna);
//EMAIL
columna = new DataGridTextBoxColumn();
//columna.TextBox.MaxLength = 50;
columna.Alignment = HorizontalAlignment.Left;
columna.HeaderText = "Correo Electronico";
//columna del Dataset enlazada con esta columna del Datagrid
columna.MappingName = "EMAIL";
columna.Width = 190;
//texto que se muestra cuando la columna tiene valor null
columna.NullText = "";
//añadir la columna a los estilos del Datagrid
estilo.GridColumnStyles.Add(columna);
//crear un objeto para estilos en el Datagrid
DataGridTableStyle estiloTelefono = new DataGridTableStyle();
estiloTelefono.MappingName = "TELEFONO";
estiloTelefono.BackColor = Color.Beige;
estiloTelefono.AlternatingBackColor = Color.AliceBlue;
//NUMERO
columna = new DataGridTextBoxColumn();
//columna.TextBox.MaxLength = 50;
columna.Alignment = HorizontalAlignment.Left;
columna.HeaderText = "Numero Telefonico";
//columna del Dataset enlazada con esta columna del Datagrid
columna.MappingName = "NUMERO";
columna.Width = 300;
//texto que se muestra cuando la columna tiene valor null
columna.NullText = "";
//añadir la columna a los estilos del Datagrid
estiloTelefono.GridColumnStyles.Add(columna);
//TIPO
columna = new DataGridTextBoxColumn();
//columna.TextBox.MaxLength = 50;
columna.Alignment = HorizontalAlignment.Left;
columna.HeaderText = "Tipo de Telefono";
//columna del Dataset enlazada con esta columna del Datagrid
columna.MappingName = "TIPO";
columna.Width = 180;
//texto que se muestra cuando la columna tiene valor null
columna.NullText = "";
//añadir la columna a los estilos del Datagrid
estiloTelefono.GridColumnStyles.Add(columna);
//ANOTACION
columna = new DataGridTextBoxColumn();
//columna.TextBox.MaxLength = 50;
columna.Alignment = HorizontalAlignment.Left;
columna.HeaderText = "Acerca del Telefono";
//columna del Dataset enlazada con esta columna del Datagrid
columna.MappingName = "DESCRIBE";
columna.Width = 220;
//texto que se muestra cuando la columna tiene valor null
columna.NullText = "";
//añadir la columna a los estilos del Datagrid
estiloTelefono.GridColumnStyles.Add(columna);
Grid.TableStyles.Add(estilo);
Grid.TableStyles.Add(estiloTelefono);
}
private void salirToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void abrirToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog fo = new OpenFileDialog();
fo.InitialDirectory = Environment.CurrentDirectory + "\\";
fo.Filter = "xml Archivos (*.xml)*.xml";
fo.RestoreDirectory = true;
if (fo.ShowDialog() == DialogResult.OK)
{
if (fo.OpenFile() != null)
{
archivoXML = new DataSet();
archivoXML.ReadXml(fo.FileName);
Grid.CaptionText = fo.FileName;
Grid.SetDataBinding(archivoXML, "CONTACTO");
//Grid.Update();
}
}
}
private void guardarToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
//escribir el DataSet al archivo XML
archivoXML.WriteXml(Grid.CaptionText);
archivoXML.Clear();
archivoXML.ReadXml(Grid.CaptionText);
MessageBox.Show("Datos Guardados", "Aviso al usuario", MessageBoxButtons.OK);
}
catch(Exception pollo)
{
MessageBox.Show("Error","Aviso al usuario", MessageBoxButtons.OK);
}
}
private void acercaDeDirectorioToolStripMenuItem_Click(object sender, EventArgs e)
{
frmacerce frmacerca = new frmacerce();
frmacerca.ShowDialog();
}
}
}
Cualquier comentario es bienvenido, si desean todos los archivos del proyecto, dejen su comentario y se los hare llegar.
30 noviembre 2006
Se acabo Noviembre
Codigo en PHP, guardado como >>>> EjemploPhp.php
< ? php
echo "\n\nEl blog de Gsur...!\n\n";
?>
Compilar el script de la siguiente forma
mono mPHP.exe EjemploPhp.php

si todo sale bien, tenemos el archivo >>>> EjemploPhp.exe
ahora ejecutamos y tenemos en pantalla: El blog de Gsur...!

Y listo, rapido creo yo, en la siguiente entrada mostrare un ejemplo de mPHP pero con Gtk, para descargar visitar http://php4mono.sourceforge.net espero sus comentarios.
06 noviembre 2006
Proyecto en mente
18 octubre 2006
Estas lluvias
16 octubre 2006
Terminado! Sumatic


12 octubre 2006
Cerca del fin Sumatic
Pantalla sumatic
Hasta el proximo post....
10 octubre 2006
Correcciones y pantalla modificada
// ------------------------------------------ //
// Proyecto: Juego de sumas
// Desarrollador: gsur
// Licencia: GPL
// Blog: http:gsur.blogspot.com
// Email: rafamp78(dot)gmail.com
// ------------------------------------------
// mcs -pkg:gtk-sharp-2.0 -pkg:glade-sharp-2.0 -resource:vsumatic.glade Sumatic-0.1.cs
// mono Sumatic-0.1.exe
using System;
using Gtk;
using Gdk;
using GtkSharp;
using Glade;
class Sumatic
{
[Glade.Widget] Gtk.Window window;
[Glade.Widget] Gtk.HBox boxBotones;
[Glade.Widget] Gtk.Table tabla;
[Glade.Widget] Gtk.Button btNuevo;
[Glade.Widget] Gtk.Button btN1;
[Glade.Widget] Gtk.Button btN2;
[Glade.Widget] Gtk.Button btN3;
[Glade.Widget] Gtk.Button btN4;
[Glade.Widget] Gtk.Button btN5;
[Glade.Widget] Gtk.Button btN6;
[Glade.Widget] Gtk.Button btN7;
[Glade.Widget] Gtk.Button btN8;
[Glade.Widget] Gtk.Button btN9;
[Glade.Widget] Gtk.Button btN10;
[Glade.Widget] Gtk.Label lblN1;
[Glade.Widget] Gtk.Label lblN2;
[Glade.Widget] Gtk.Label lblN3;
[Glade.Widget] Gtk.Label lblN4;
[Glade.Widget] Gtk.Label lblN5;
[Glade.Widget] Gtk.Label lblN6;
[Glade.Widget] Gtk.Label lblN7;
[Glade.Widget] Gtk.Label lblN8;
[Glade.Widget] Gtk.Label lblN9;
[Glade.Widget] Gtk.Label lblN10;
int Nfila1, Nfila2, Nresultado;
static void Main()
{
Application.Init();
new Sumatic();
Application.Run();
}
public Sumatic()
{
Glade.XML gxml = new Glade.XML("vsumatic.glade", "window", null);
gxml.Autoconnect(this);
window.ShowAll();
btNuevo.Clicked += Nuevo_Juego;
TargetEntry [] te = new TargetEntry [] { new TargetEntry ("STRING", 0, 1), };
foreach(Gtk.Widget b in boxBotones)
{
Gtk.Drag.SourceSet (b, Gdk.ModifierType.Button1Mask, te, Gdk.DragAction.Copy);
b.DragDataGet += OnBtNDragGet;
}
foreach(Gtk.Widget lbl in tabla)
{
Gtk.Drag.DestSet (lbl, DestDefaults.All, te, DragAction.Copy);
lbl.DragDataReceived += OnlblNDropDragDataRecieved;
}
iniciar();
}
public void on_window_delete_event(object obj, DeleteEventArgs args)
{
Application.Quit();
}
public void on_btsalir_clicked(object obj, EventArgs args)
{
Application.Quit();
}
private void Nuevo_Juego(object obj, EventArgs args)
{
Random r = new Random();
Nfila1 = r.Next(100,999);
Nfila2 = r.Next(100,999);
Nresultado = Nfila1 + Nfila2;
string numeros = Nresultado.ToString();
if(numeros.Length < 4)
numeros += "?";
numeros += Nfila1.ToString() + Nfila2.ToString();
int i=0;
foreach(Gtk.Button b in boxBotones)
{
b.Label = numeros[i].ToString();
i+=1;
}
}
private void OnBtNDragGet(object o, DragDataGetArgs args)
{
Gtk.Button boton = (Gtk.Button) o;
Atom [] targets = args.Context.Targets;
args.SelectionData.Set(targets [0], 8, System.Text.Encoding.UTF8.GetBytes(boton.Label));
}
private void OnlblNDropDragDataRecieved(object o, DragDataReceivedArgs args)
{
Gtk.Widget source = Gtk.Drag.GetSourceWidget(args.Context);
Gtk.Button boton = (Gtk.Button) source;
Gtk.Label Contenedor = (Gtk.Label) o;
string strB = boton.Data["disponible"].ToString();
string strL = Contenedor.Data["vacio"].ToString();
if((strB.Equals("si") == true) && (strL.Equals("si") == true))
{
string data = System.Text.Encoding.UTF8.GetString ( args.SelectionData.Data );
Contenedor.Markup = "< background="\" foreground="\" size="\"> " + data + " < / span >";
boton.Data["disponible"] = "no";
Contenedor.Data["vacio"]="no";
boton.Label = "-";
//boton.Hide();
}
}
private void iniciar()
{
foreach(Gtk.Widget b in boxBotones)
{
b.Data["disponible"] = "si";
}
foreach(Gtk.Widget lbl in tabla)
{
lbl.Data["vacio"] = "si";
}
}
}

Ya solo falta la parte logica del juego, claro que si alguien quisiera aportar alguna mejora con gusto sera recibida, pero ahora hasta aqui dejo esto, ya es tarde y quiero ver mi programa en la tele.
Primera pantalla

09 octubre 2006
Juego Interesante
El juego en cuestion trata sobre una serie de numeros que se han de acomodar en un tablero de tal forma que se realiza una suma, pero para que dar mas detalles, mejor cuando este listo vendra la pantalla y la explicación a detalle, y si se preguntan de que servira esto para el aprendizaje de Mono, pues lo que aqui se manejara sera el arrastre o Drag and Drop de objetos cosa que no hemos abordado en ninguna entrada anterior y claro no desmerecera el codigo de generación de numeros para el juego.
05 octubre 2006
Mejora en dbimage
Referencias previas:
Pantalla de dbimage
Codigo de dbimage
30 septiembre 2006
Mas memoria para mi pc
Resulta que ultimamente venia pensando en comprarle mas memoria a mi pc, no era por que estuviera lenta o que sintiera que ya la necesitaba, pero me dije pues por que no ponerle algo extra que al final de cuentas se llega a necesitar, asi que me dirijo a la tienda (que segun es la mas surtida) y pregunto por una memoria DDR pc3200 (400 Mhz) de 512 Mb y el empleado en tono como burlon me dice "Esas ya no las vendemos" y ya fue todo, que es lo que pasa con este tipo, en realidad su salario es tan poco, que solo se limita a contestar a un cliente de esa manera, ahora ya entenderan la parte molesta de esta anecdota, si ya se mi pc esta rucona, y con esa idea me largue de la mendiga tienda, pero y ahora entonces mi pc la debo tirar, debo buscar un incauto y vendersela para actualizarme o por ultimo regalarla.
Pero bueno despues de calmarme opte por dirigirme al lugar donde compre mi pc, ya ahi le digo al dueño (por que en este caso no es empleado, es el mero dueño) tienes una memoria DDR pc3200 (400 Mhz) de 512 Mb, y el de manera muy amable me dice claro y saca la memoria y me la entrega, asi mero se debe de tratar al cliente, hasta ni me queje por el costo de la memoria.
La conclusion de todo esto me lleva a una cosa, si yo estoy a gusto con mi pc y solo quiero hacerle unos ajustes por que me han de obligar a decidirme por regalar o vender mi pc, no señores distribuidores estan en un error y creo que deben capacitar muy bien a sus empleados para que no corran a los clientes, en fin por el moment0 mi pc ya tiene sus 512 mb adicionales y yo a gusto hasta que no tenga que buscar algo nuevamente para ella.
28 septiembre 2006
Se acaba septiembre
A veces se me viene a la mente las palabras del señor Miguel de Icaza respecto a programar en Visual Basic en el ambiente de Mono (jajaja), en fin Octubre llega y ahora a recargar pilas para comenzar de nuevo por el buen camino.