|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Temas - Jeysscarr
Páginas: [1]
1
« en: Domingo 30 de Mayo de 2010, 05:20 »
VTC Microsoft ASP.NET 3.5 | 316 MB. Excelentisimo!! RecomendadoDe Microsoft ASP.NET es una tecnología libre, que proporciona a los programadores con las herramientas para crear aplicaciones web dinámicas. ASP.NET puede utilizarse para crear soluciones que van desde pequeño sitios Web personal a las aplicaciones web de nivel empresarial y servicios web. En este curso, Microsoft Certified Trainer Mark Long le enseña los conceptos básicos de ASP.NET 3.5 y muestran cómo utilizar libre Visual Web Developer de Microsoft para crear tus propias aplicaciones web de ASP.NET 3.5. http://www.megaupload.com/?d=72724ZXBhttp://www.megaupload.com/?d=EUBPPX05http://www.megaupload.com/?d=HVEGLE0O
2
« en: Viernes 28 de Mayo de 2010, 19:52 »
Alguien sabe de algun codigo o control gratuito en el que en la propiedad Text del label admita codigo Html. Ejemplo: LabelHtml.Text="Mi nombre es <b>Jeysson</b>, mi edad: <i>21 años</i>";
Resultado: Mi nombre es Jeysson, mi edad: 21 años
3
« en: Sábado 15 de Mayo de 2010, 19:25 »
Hola a todos, muy buenas tardes Actualmente he creado un prototipo de barra de información basada en la forma de la barra de descripción que se usa en Windows 7, ese panel que muestra la informaciíon de los archivos o carpetas que seleccionamos. La he creado con la finalidad de mostrar datos caracteristicos de elementos que el usuario seleccione en mis aplicaciones y datos estadisticos para varios elementos... he agregado la funcionalidad de adaptarse al tamaño de los elementos informativos que se le agreguen, es decir, si en modo de ejecución se le pasan parametros para nuevos valores, este cambia la posición de los controles para ahorrar espacio o mostrar la información completa. Hasta el momento he logrado mi objetivo, y me gusta mucho como se ve en funcionamiento ya que para mostrar las propiedades de un objeto no necesito crear controles especificos para cada uno. En Fin.. lo que quisiera es que opinaran acerca de que debería agregar para que cuando el usuario Agrande o haga mas pequeño el control, los Labels que ya estan agregados se adapten al nuevo tamaño como en windows 7, en donde uno agranda la barra y los elementos que estaban en una columna se pasan para la primera para no dejar espacios vacios, etc. A continuación mi código de la clase y un ejemplo de como lo uso 1. Clase LABEL_ (Extendida de Label) using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; namespace ControlBarraDescripcion { public class Label_:Label { int col=0; public int Columna { get { return col; } set { col = value; } } bool ed = false; public bool esDescripcion { get { return ed; } set { ed = value; } } string desc = null; public string Descripcion { get { return desc; } set { desc = value; } } public bool CorrespondeDescripcion(string descrip) { if (Descripcion == null) { return false; } else { if (Descripcion == descrip) { return true; } else { return false; } } } } }
2. Control Barra Información using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Windows.Forms; namespace ControlBarraDescripcion { public partial class BarraInformacion : UserControl { public class InfoColumna { public int Index = 0; public Label_ LabelDescripcionMasAncho = null; public Label_ LabelValorMasAncho = null; public InfoColumna(Label_ Ldesc, Label_ LValor) { LabelDescripcionMasAncho = Ldesc; LabelValorMasAncho = LValor; } } public List <InfoColumna > ListaColumnas = new List <InfoColumna >(); public BarraInformacion() { InitializeComponent(); } public int posY = 0; public int posX = 0; public int cols = 0; public int mayorAncho = 0; public Label_ LabelDescripcionMasAncho = null; public Label_ ultimoLabel = null; public int cont = 0; public bool NuevaColumnaVacia = false; public Color ColorDescripcion=Color.DimGray; public Color ColorValor = Color.Black; ImageList iml=null; public ImageList Imagenes { get { return iml; } set { iml = value; } } public void Iniciar(Color ColorDescripcion, Color ColorValor, string titulo, int imageindex) { panel1.Controls.Clear(); this.ColorDescripcion = ColorDescripcion; this.ColorValor = ColorValor; posX = 0; posY = 0; cols = 0; mayorAncho = 0; ListaColumnas.Clear(); LbTITULO.Text = titulo; Pct.Image = null; ultimoLabel = null; NuevaColumnaVacia = false; LabelDescripcionMasAncho = null; cont = 0; if (Imagenes != null) { if (imageindex != -1) { Pct.Image = Imagenes.Images[imageindex]; } else Pct.Image = null; } } public void AgregarDescripcion(string descripcion, string valor,bool CrearNuevosControles) { if (CrearNuevosControles) { if (ultimoLabel == null) { //es el primero Label_ Ldescripcion = new Label_ (); panel1.Controls.Add(Ldescripcion); Ldescripcion.Tag = cont; cont++; Ldescripcion.AutoSize = true; //Ldescripcion.BorderStyle = BorderStyle.FixedSingle; Ldescripcion.Text = descripcion + ":"; Ldescripcion.esDescripcion = true; Ldescripcion .Location = new Point (posX, posY ); Ldescripcion.Visible = true; Ldescripcion.Columna = cols; Ldescripcion.ForeColor = ColorDescripcion; posY = Ldescripcion.Bounds.Bottom + 4; ultimoLabel = Ldescripcion; //Label_ del valor Label_ Lvalor = new Label_ (); panel1.Controls.Add(Lvalor); Lvalor.Tag = cont; Lvalor.Descripcion = descripcion; cont++; Lvalor.AutoSize = true; //Lvalor.BorderStyle = BorderStyle.FixedSingle; Lvalor.Text = valor; Lvalor .Location = new Point (Ldescripcion .Right, Ldescripcion .Bounds.Y); Lvalor.Visible = true; Lvalor.Columna = cols; Lvalor.ForeColor = ColorValor; ListaColumnas .Add(new InfoColumna (Ldescripcion, Lvalor )); } else { Label_ Ldescripcion = new Label_ (); panel1.Controls.Add(Ldescripcion); Ldescripcion.Tag = cont; cont++; Ldescripcion.AutoSize = true; //Ldescripcion.BorderStyle = BorderStyle.FixedSingle; Ldescripcion.Text = descripcion + ":"; Ldescripcion.esDescripcion = true; Ldescripcion .Location = new Point (posX, posY ); Ldescripcion.Visible = true; Ldescripcion.Columna = cols; Ldescripcion.ForeColor = ColorDescripcion; posY = Ldescripcion.Bounds.Bottom + 4; ultimoLabel = Ldescripcion; //Label_ del valor Label_ Lvalor = new Label_ (); panel1.Controls.Add(Lvalor); Lvalor.Tag = cont; Lvalor.Descripcion = descripcion; cont++; Lvalor.AutoSize = true; //Lvalor.BorderStyle = BorderStyle.FixedSingle; Lvalor.Text = valor; Lvalor .Location = new Point (Ldescripcion .Right, Ldescripcion .Bounds.Y); Lvalor.Visible = true; Lvalor.Columna = cols; Lvalor.ForeColor = ColorValor; if (NuevaColumnaVacia == true) { ListaColumnas .Add(new InfoColumna (Ldescripcion, Lvalor )); NuevaColumnaVacia = false; } if (Lvalor.Width > ListaColumnas[cols].LabelValorMasAncho.Width) { ListaColumnas[cols].LabelValorMasAncho = Lvalor; } //determinar si el ancho de este Label_ es mayor que el de los demás if (Ldescripcion.Size.Width > ListaColumnas[cols].LabelDescripcionMasAncho.Width) { ListaColumnas[cols].LabelDescripcionMasAncho = Ldescripcion; //alinear los Labels de arriba a la derecha de este control foreach (Label_ lb in panel1.Controls) { if (lb.esDescripcion == true && (int)lb.Columna == cols) { lb.Left = ListaColumnas[cols].LabelDescripcionMasAncho.Right - lb.Width; } else if (lb.esDescripcion == false && (int)lb.Columna == cols) { lb.Left = ListaColumnas[cols].LabelDescripcionMasAncho.Right; } } } else { Ldescripcion.Left = ListaColumnas[cols].LabelDescripcionMasAncho.Right - Ldescripcion.Width; Lvalor.Left = Ldescripcion.Right + 2; } if (panel1.Height - ultimoLabel.Bottom < 16) { //crear una nueva columna posX = ListaColumnas[cols].LabelValorMasAncho.Right + 2; posY = 0; NuevaColumnaVacia = true; cols++; } } } else { foreach (Label_ Lb in panel1.Controls) { if (Lb.CorrespondeDescripcion(descripcion)) { Lb.Text = valor; break; } } } } public void ReordenarItems() { if (cont > 0) { List <Label_ > Lista = new List <Label_ >(); foreach(Label_ Lb in panel1.Controls) { Lista.Add(Lb); } int mayorAnchoD = 0, mayorAnchoV = 0; Label_ lbVal = null; Label_ lbDesc = null; int xDesc = 0, xVal=0; for (int i = 0; i <= cols; i++) { mayorAnchoD = 0; mayorAnchoV = 0; var consulta = from item in Lista where item.Columna == i && item.esDescripcion ==true select item; foreach (Label_ it in consulta) { if (it.Width > mayorAnchoD) { mayorAnchoD = it.Width; lbDesc = it; } } var consulta2 = from item in Lista where item.Columna == i && item.esDescripcion == false select item; foreach (Label_ it in consulta2) { if (it.Width > mayorAnchoV) { mayorAnchoV = it.Width; lbVal = it; } } foreach (Label_ it in consulta) { it .Location = new Point (xDesc + (mayorAnchoD - it .Width), it .Location.Y); } foreach (Label_ it in consulta2) { it .Location = new Point (lbDesc .Right + 2, it .Location.Y); } xDesc = lbVal.Right + 2; } } } } }
3. El Designer del control anterior namespace ControlBarraDescripcion { partial class BarraInformacion { /// <summary> /// Variable del diseñador requerida. /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// Limpiar los recursos que se estén utilizando. /// </summary> /// <param name="disposing">true si los recursos administrados se deben eliminar; false en caso contrario, false.</param> protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Código generado por el Diseñador de componentes /// <summary> /// Método necesario para admitir el Diseñador. No se puede modificar /// el contenido del método con el editor de código. /// </summary> private void InitializeComponent() { this.Pct = new System.Windows.Forms.PictureBox(); this.LbTITULO = new System.Windows.Forms.Label(); this.panel1 = new System.Windows.Forms.Panel(); ((System.ComponentModel.ISupportInitialize)(this.Pct)).BeginInit(); this.SuspendLayout(); // // Pct // this.Pct.Location = new System.Drawing.Point(3, 25); this.Pct.Name = "Pct"; this.Pct.Size = new System.Drawing.Size(97, 110); this.Pct.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; this.Pct.TabIndex = 0; this.Pct.TabStop = false; // // LbTITULO // this.LbTITULO.AutoSize = true; this.LbTITULO.Font = new System.Drawing.Font("Tahoma", 8 .25F, System.Drawing.FontStyle.Bold); this.LbTITULO.Location = new System.Drawing.Point(3, 6); this.LbTITULO.Name = "LbTITULO"; this.LbTITULO.Size = new System.Drawing.Size(113, 13); this.LbTITULO.TabIndex = 1; this.LbTITULO.Text = "Prueba con control"; // // panel1 // this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.panel1.Location = new System.Drawing.Point(106, 25); this.panel1.Name = "panel1"; this.panel1.Size = new System.Drawing.Size(518, 110); this.panel1.TabIndex = 2; // // BarraInformacion // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F ); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.Controls.Add(this.panel1); this.Controls.Add(this.LbTITULO); this.Controls.Add(this.Pct); this.Font = new System.Drawing.Font("Tahoma", 8 .25F ); this.Name = "BarraInformacion"; this.Size = new System.Drawing.Size(627, 138); ((System.ComponentModel.ISupportInitialize)(this.Pct)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); } #endregion private System.Windows.Forms.PictureBox Pct; private System.Windows.Forms.Panel panel1; public System.Windows.Forms.Label LbTITULO; } }
4. Ejemplo de su Utilización private void Trv_SelectedIndexChanged(object sender, EventArgs e) { if (Trv.SelectedItems.Count == 1) { if (VariosSeleccionados) { CrearNuevasDescripciones = true; VariosSeleccionados = false; } else { CrearNuevasDescripciones = false; } ListviewItemEstudiante item = (ListviewItemEstudiante)Trv.SelectedItems[0]; //determinar la mayor edad Single mayor = 0; for (int i = 1; i <= (Trv.Columns.Count - 2); i++) { Single valor = 0; if (Trv.SelectedItems[0].SubItems[i].Text != "") { valor = Single.Parse(Trv.SelectedItems[0].SubItems[i].Text); if (valor > mayor) { mayor = valor; } } } if (CrearNuevasDescripciones) { barraInformacion1.Iniciar(Color.DimGray, Color.Black, "Actualmente usted ha seleccionado al estudiante: " + item.NombreCompleto.ToUpper(), -1); } barraInformacion1.LbTITULO.Text = "Actualmente usted ha seleccionado al estudiante: " + item.NombreCompleto.ToUpper(); barraInformacion1.AgregarDescripcion("ID", item.IDEstudiante.ToString("00000"), CrearNuevasDescripciones); barraInformacion1.AgregarDescripcion("Promedio", Trv.SelectedItems[0].SubItems[Trv.Columns.Count - 1].Text, CrearNuevasDescripciones); barraInformacion1.AgregarDescripcion("Tipo de documento", item.TipoDocumento, CrearNuevasDescripciones); barraInformacion1.AgregarDescripcion("Documento de Identidad", item.Documento, CrearNuevasDescripciones); barraInformacion1.AgregarDescripcion("Fecha de Nacimiento", item.FechaNacimiento.ToLongDateString(), CrearNuevasDescripciones); barraInformacion1.AgregarDescripcion("Ciudad Natal", item.CiudadNacimiento, CrearNuevasDescripciones); barraInformacion1.AgregarDescripcion("edad", item.Edad + " años", CrearNuevasDescripciones); barraInformacion1.AgregarDescripcion("Mayor Calificación", mayor.ToString() + " pts", CrearNuevasDescripciones); barraInformacion1.AgregarDescripcion("Sexo", item.Sexo, CrearNuevasDescripciones); barraInformacion1.AgregarDescripcion("Estado", item.Estado, CrearNuevasDescripciones); if (!CrearNuevasDescripciones) { barraInformacion1.ReordenarItems(); } } else if (Trv.SelectedItems.Count > 1) { if (!VariosSeleccionados) { barraInformacion1.Iniciar(Color.DimGray, Color.Black, "Elementos Selccionados", -1); VariosSeleccionados = true; CrearNuevasDescripciones = true; } else { CrearNuevasDescripciones = false; } int mayorEdad = 0, menorEdad = 0, acumEdad = 0; Single promedio = 0, mayorPromedio = 0; ListviewItemEstudiante itMayor = null; ListviewItemEstudiante itMenor = null; ListviewItemEstudiante itMayorPromedio = null; int EstaEnLaPrimeraPosicion = 1; foreach (ListviewItemEstudiante item in Trv.SelectedItems) { if (EstaEnLaPrimeraPosicion == 1) { menorEdad = item.Edad; itMenor = item; itMayorPromedio = item; EstaEnLaPrimeraPosicion = 0; } if (item.promedio > mayorPromedio) { mayorPromedio = item.promedio; itMayorPromedio = item; } if (item.Edad > mayorEdad) { mayorEdad = item.Edad; itMayor = item; } if (item.Edad < menorEdad) { menorEdad = item.Edad; itMenor = item; } acumEdad += item.Edad; } promedio = acumEdad / Trv.SelectedItems.Count; barraInformacion1.AgregarDescripcion("Seleccion", Trv.SelectedItems.Count.ToString(), CrearNuevasDescripciones); barraInformacion1.AgregarDescripcion("Mayor edad", itMayor.NombreCompleto + ", " + mayorEdad + " años", CrearNuevasDescripciones); barraInformacion1.AgregarDescripcion("Menor edad", itMenor.NombreCompleto + ", " + menorEdad + " años", CrearNuevasDescripciones); barraInformacion1.AgregarDescripcion("Promedio de edad", promedio.ToString() + " años", CrearNuevasDescripciones); barraInformacion1.AgregarDescripcion("Mejor promedio", itMayorPromedio.NombreCompleto + ", con " + mayorPromedio.ToString("0.00") + " pts", CrearNuevasDescripciones); if (!CrearNuevasDescripciones) { barraInformacion1.ReordenarItems(); } } }
y unas imágenes de como se ve en modo de ejecución
4
« en: Miércoles 5 de Mayo de 2010, 16:53 »
Hola a todos, estoy trabajando mis aplicaciones actualmente con el conector para mysql MySQLDriverCS, ayer comence a investigar qué conector es mejor, debido a que mis aplicaciones tienen mucha mucha mucha informacion que manejar.. he encontrado este articulo: ( http://translate.google.com.co/translate?hl=es&langpair=en|es&u=http://www.geekstogo.com/forum/C-MySQL-server-flood-t218954.html%26pid%3D1386668) en el que dan al parecer malas referencias sobre MySQLDriverCS.. La verdad tiene muchas cosas interesantes, Ejemplo (PERMITE OPERAR CON VARIOS DATAREADERS SIMULTANEOS EN UNA MISMA CONEXION) No me dejo llevar por un comentario, Igual me gustaria escuchar opiniones y comentarios acerca de esto de parte de ustedes Gracias
5
« en: Viernes 30 de Abril de 2010, 17:58 »
Hola, básicamente tengo un listview en vista detalle, cuando este cambia de tamaño adecuo los anchos de las columnas para que no quede espacio libre, en una parte de este procedimiento deseo saber como puedo determinar si se está mostrando una barra de dezplazamiento a la derecha. yo lo averiguo multiplicando el numero de elementos que contiene el list por el alto de los mismos y preguntando si el resultado es mayor que el alto del control int altoItem = this.SmallImageList.ImageSize.Height; int totalItems = this.Items.Count; if ((altoItem * totalItems) > this.Height) { }
Pero por curiosidad me gustaria saber si habrá alguna propiedad o metodo que sea como CONTROL.ISSCROLLBAR=TRUE;
6
« en: Viernes 23 de Abril de 2010, 01:24 »
Hola, los saludo desde colombia, siempre he programado para aplicaciones de cliente, en este caso he tenido que actualizar datos que se encuentran en una base de datos de MySQL en un equipo que hace las veces de servidor.Actualmente necesito el codigo para prevenir que dos usuarios conectados a la base de datos no puedan actualizar un mismo registro al mismo tiempo, No quisiera usar un dataset pero no se si al usar un datareader en este entorno me genere problemas, esperaria sus consejos Originalmente por red solo se actualizarian o insertarian datos de estudiantes de un colegio Dejo las imagenes del asistente, se ve que campos debe cargar de la base de datos, la verdad la carga de las calificaciones es un poco compleja en cuanto a su visualizacion en el asistente debido a que se deben poder generar conversiones a distintos tipos de calificacion.
7
« en: Miércoles 21 de Abril de 2010, 17:27 »
Pesa solo un mega... XD
8
« en: Lunes 19 de Abril de 2010, 23:14 »
Hola... este es un pequeño método en el cual mando un picturebox que usare como boton para agrandarlo o reducirlo en tamaño mientras paso el mouse por encima del mismo con el fin de generar una especie de animación, he dejado un par de imagenes de los "botones" cuando muevo el mouse por encima de ellos... Necesito que me colaboren con ideas para mejorar la "animación", como ponerle movimientos mas suaves.. o crear un control personalizado que permita agragar botones y al final comportarse como la barrita de stardock,.. Este es el codigo... public static void CambiarTamañoControl(ref PictureBox c, int cambio, bool aumento) { int i = 0; if (aumento) { for (i = 1; i <= cambio; i++) { if (i % 2 == 0) { c .Location = new Point (c .Location.X - 1, c .Location.Y - 1); } c.Width += 1; c.Height += 1; } } else { for (i = 1; i <= cambio; i++) { if (i % 2 == 0) { c .Location = new Point (c .Location.X + 1, c .Location.Y + 1); } c.Width -= 1; c.Height -= 1; } }
Para cuando pasa el mouse de entrada... mando a agrandar el picture en 40 pixeles.... manteniendo el punto central del control private void p1_MouseEnter(object sender, EventArgs e) { CambiarTamañoControl(ref p1, 40, true); }
lo mismo para cuando salgo.. pero obvio aqui el tamaño se reduce, debido al parametro "bool aumento" que en esta ocasion ha sido "false" private void p1_MouseLeave(object sender, EventArgs e) { CambiarTamañoControl(ref p1, 40, false); }
9
« en: Lunes 12 de Abril de 2010, 19:02 »
hola, les dejo un complemento para visualizar los formularios de sus proyectos con distintos diseños de sistemas operativos... Mac, Xp, Aero.. y con la posibilidad de subir mas temas, solo deben instalarlo, seguir las instrucciones de activacion y luego lo tendran disponible en una ficha de controles en el diseñador de Windows Forms... asi ustedes podrán agregar el complemento al formulario principal y luego determinar el tipo de skin.. este les serivra para todos los formularios secundarios y además para los controles...
Particularmente me gusta el de MacOSX Leopard..
Les dejo el archivo de texto con el enlace
10
« en: Lunes 12 de Abril de 2010, 18:53 »
Hola alguien sabe en donde se puede encontrar un complemento textbox pero con las esquinas redondeadas.. como en mac... Gracias!!
11
« en: Viernes 9 de Abril de 2010, 21:52 »
Hola... pues es algo realmente sencillo pero creo que es útil para quien usa el listview tal cual como microsoft lo trajo al mundo me cree una clase que hereda del listview pero he agregado dos caracteristicas: 1. Tiene la posibilidad de determinar el indice de la columna "principal" del listview..es decir, la columna que se adaptará al tamaño del list al este cambiar de tamaño sin afectar el tamaño de las demás. (Por defecto es -1 es decir ninguna columna) 2. Colorea las filas con dos tonos predeterminados o con los que el usuario determine (en este caso.. White y Gainsboro), el primero para las filas impares y el segundo obviamente para los multiplos de 2 tal como en los gridview, esto es aparte del fondo.... se hace a traves del método "Colorear", usted carga los datos en su listview y al final.. pone.. Listview.Colorear(); Dejo un adjunto como ejemplo de como se ve cuando uno lo configura... sin más aqui está el código: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; using System.Drawing; namespace ControlesJey { class MiListView:ListView { public MiListView() { this.View = View.Details; this.GridLines = true; this.FullRowSelect = true; this.HideSelection = false; } int colp=-1; public int IndiceColumnaPrimaria { get{return colp;} set{colp=value;} } Color c1=Color.White; public Color ColorFilasImpares { get { return c1; } set { c1 = value; } } Color c2=Color.Gainsboro; public Color ColorFilasPares { get { return c2; } set { c2 = value; } } protected override void OnResize(EventArgs e) { base.OnResize(e); if ((this.Columns.Count > 0)&&(colp!=-1)) { int anchoCol=0; for (int i = 0; i <= this.Columns.Count - 1; i++) { if (i != colp) { anchoCol += this.Columns[i].Width; } } anchoCol = (this.Width - anchoCol) - 22; this.Columns[colp].Width = anchoCol; } } public void Colorear() { int cont = 1; foreach (ListViewItem it in this.Items) { if (cont % 2 == 0) { it.BackColor = c2; } else { it.BackColor = c1; } cont++; } } } }
12
« en: Miércoles 7 de Abril de 2010, 18:38 »
Hola.. bueno, la idea principal consiste en que estoy diseñando varios programas que manejan bases de datos complejas y he ido encontrando formas de simplificar ciertas consultas muy grandes y de usar controles de una manera muy sencilla con datos en MySQL, SQL Server.. Postgree.. de todo...
me surgió la idea de hacer vidoturoiales de estas cosas que estoy manejando pero ciertamente quisiera compartirlas con personas que esten interesadas de dar y recibir conocimientos... he creado una paginita en facebook en donde cargare tutos en video muy sencillos.. y si veo que a alguien le agrada la idea y se inscribe.. pues podriamos llenar un rincon de la red con conocimientos muy muy valiosos.. Gracias...
mi paginita se llama ejemplos C# al lado de donde dice h t t p : / / w w w . f a c e b o o k . c o m ponen /pages/Ejemplos-C/111568165535010?v=wall#!/pages/Ejemplos-C/111568165535010?ref=mf
Ojala y pues se hagan inscriban para crear cosas muy buenas
Páginas: [1]
|
|
|