trabajar con grid

05/07/2004 - 09:13 por joan_wannet | Informe spam
Hola a todos,
Tengo que desarrollar una pequeña aplicación con pockeaccess y esta es :
Tres campos que serán fecha, numero cliente y nombre cliente, y luego un
grid que recoga el codigo articulo, descripcion , cantidad y precio.
La primera parte, la de hacer el form con los tre campos la tengo medio
solventada, pero lo de insertar un grid para recoger ( 1 a varios ) varias
lineas de articulos no me salgo.
Alguien tiene un codigo parecido para hecharle un vistazo y me sirva para
entenderlo?
Saludos y gracias.
Joan

Preguntas similare

Leer las respuestas

#6 alfredo
06/07/2004 - 17:06 | Informe spam
On Tue, 06 Jul 2004 15:01:37 GMT, (Alfredo Novoa)
wrote:

quiere la pongo, son solo unas 200 líneas.



100 líneas, perdón

Saludos
Respuesta Responder a este mensaje
#7 joan_wannet
07/07/2004 - 08:24 | Informe spam
Pues yo estoy interesado, todo sirve y de todo se aprende.
Saludos y gracias / Joan Vila
"Alfredo Novoa" escribió en el mensaje
news:
On Tue, 06 Jul 2004 15:01:37 GMT, (Alfredo Novoa)
wrote:

>quiere la pongo, son solo unas 200 líneas.

100 líneas, perdón

Saludos
Respuesta Responder a este mensaje
#8 Fran
07/07/2004 - 11:36 | Informe spam
A mi tambien me interesaria, siempre viene bien tener mas herramientas para
trabajar :)




"Alfredo Novoa" escribió en el mensaje
news:
On Tue, 06 Jul 2004 15:01:37 GMT, (Alfredo Novoa)
wrote:

>quiere la pongo, son solo unas 200 líneas.

100 líneas, perdón

Saludos
Respuesta Responder a este mensaje
#9 alfredo
07/07/2004 - 11:57 | Informe spam
On Wed, 7 Jul 2004 08:24:19 +0200, "joan_wannet"
wrote:

Pues yo estoy interesado, todo sirve y de todo se aprende.



Pues ahí va.

Le he quitado el "namespace" que yo uso, así que le meteis el que os
de la gana.

Es una chorrada, lo único que hace es poner un TextBox encima de la
celda seleccionada.


using System;
using System.Drawing;
using System.Windows.Forms;

public class GridEditor
{
private DataGridCell editCell;
private bool editMode;
private bool updating = false;
private TextBox txtEdit;
private DataGrid grd;

public bool EditMode
{
get { return editMode; }
set
{
if (editMode != value)
{
editMode = value;

if (value)
{
grd.BackColor SystemColors.Window;
grd.GridLineColor Color.FromArgb(SystemColors.Control.ToArgb());

DrawEditBox();
}
else
{
UpdateGrid();

grd.BackColor Color.FromArgb(SystemColors.Control.ToArgb());
grd.GridLineColor Color.FromArgb(SystemColors.ControlDark.ToArgb());
}
}
}
}

public GridEditor(DataGrid grd)
{
this.grd = grd;

grd.BackColor Color.FromArgb(SystemColors.Control.ToArgb());
grd.GridLineColor Color.FromArgb(SystemColors.ControlDark.ToArgb());

txtEdit = new TextBox();
this.txtEdit.Font = grd.Font;
txtEdit.Visible = false;
grd.Parent.Controls.Add(txtEdit);
txtEdit.BringToFront();

grd.CurrentCellChanged += new
System.EventHandler(this.CurrentCellChanged);
}

private void CurrentCellChanged(object sender,
System.EventArgs e)
{
if (!updating && editMode)
{
DataGrid grd = (DataGrid)sender;

if (!grd.CurrentCell.Equals(editCell))
{
UpdateGrid();
DrawEditBox();
}
}
}

private void DrawEditBox()
{
editCell = grd.CurrentCell;
txtEdit.Text = grd[editCell.RowNumber,
editCell.ColumnNumber].ToString();
Rectangle cellPos grd.GetCellBounds(editCell.RowNumber, editCell.ColumnNumber);
txtEdit.Left = grd.Left + cellPos.Left - 1;
txtEdit.Top = cellPos.Top + grd.Top - 1;
txtEdit.Width = cellPos.Width + 2;
txtEdit.Height = cellPos.Height + 2;
txtEdit.Visible = true;
txtEdit.Focus();
}

private void UpdateGrid()
{
DataGridCell currentCell = grd.CurrentCell;
try
{
grd[editCell.RowNumber, editCell.ColumnNumber]
= txtEdit.Text;
}
catch (ArgumentException exception)
{
MessageBox.Show(exception.Message);
}

txtEdit.Visible = false;

updating = true;
grd.CurrentCell = currentCell;
updating = false;
}
}


Para usarla hay que hacer así:

private GridEditor gridEditor;

...

private void MiForm_Load(object sender, System.EventArgs e)
{
gridEditor = new GridEditor(miGrid);
}

gridEditor.EditMode = true; // para poner en modo edición

gridEditor.EditMode = false; // para poner en modo de solo lectura



Saludos
Alfredo
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida