|
Página 1 de 1
|
Autor |
Mensaje |
codificador
Analista Programador
Registrado: Junio 2010
Mensajes: 420
Edad: 114 Ubicación:
|
Gridview Editable?
hola la idea inicial es hacer algo como esto para empezar
algo no directamete util solo para ver como se hace
la idea es que las rows se agregen automaticamnete segun se necesite y
sea un par de columnas editables el resto se actualize automaticamete
similar al gridview de .net
de momento las investigaciones probado con el grid normal y el de qt
y solo se como llenar la grilla mediante codigo
pero las celdas son readonly
?
edit
en gambas 2
última edición por codificador el Miercoles, 25 Enero 2012, 06:38; editado 2 veces
|
#1 Miercoles, 25 Enero 2012, 06:34 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Gridview Editable?
Prueba con TableView, es un control igual que el Gridview, pero editable.
Simplemente tendras que añadirle, que cuando el usuario pulse "Enter" o "Return" en la ultima fila y ultima columnas, le añada una fila mas al tableview. (usa el evento keypress) y se posicione el cursor en esa nueva fila, en la columna primera.
Este es parte del codigo que te puede orientar:
PUBLIC ultimafila AS Integer
PUBLIC SUB _new()
GridView1.Rows.count = 1
GridView1.Columns.count = 2
GridView1.mode = 1
ultimafila = GridView1.Rows.count
END
PUBLIC SUB Form_Open()
END
PUBLIC SUB GridView1_Click()
IF GridView1.row = ultimafila - 1 THEN
gridview1.Rows.count += 1
ultimafila = gridview1.Rows.count
GridView1.Moveto(ultimafila - 1, 0)
ENDIF
END
nota:
De echo buscando en el codigo fuente del gambas (gambas2-2.23.1/comp/src/gb.form/TableView.class), encontre como añadia las funciones de edicion al gridviews:
' gambas class file
INHERITS GridView
EXPORT
EVENT Save(Row AS Integer, Column AS Integer, Value AS String)
EVENT Insert
EVENT Click
PRIVATE $hTextBox AS TextBox
PRIVATE $hComboBox AS ComboBox
PRIVATE $hEditor AS Object
PRIVATE $bTextBox AS Boolean
PRIVATE $iCol AS Integer
PRIVATE $iRow AS Integer
PRIVATE $hWatcher AS Watcher
PUBLIC SUB _new()
DIM hObs AS Observer
hObs = NEW Observer(ME) AS "GridView"
$hWatcher = NEW Watcher(ME) AS "GridView"
$hComboBox = NEW ComboBox(ME.Window) AS "Editor"
$hComboBox.Ignore = TRUE
$hComboBox.Hide
$hTextBox = NEW TextBox(ME.Window) AS "Editor"
$hTextBox.Ignore = TRUE
$hTextBox.Border = FALSE
$hTextBox.Hide
END
PRIVATE SUB SaveEditor()
DIM sText AS String
IF NOT $hEditor THEN RETURN
sText = $hEditor.Text
IF sText = ME[$iRow, $iCol].Text THEN RETURN
RAISE Save($iRow, $iCol, sText)
ME[$iRow, $iCol].Refresh
END
PUBLIC SUB Save()
HideEditor
END
PUBLIC SUB Cancel()
HideEditor(TRUE)
END
PRIVATE SUB HideEditor(OPTIONAL bNoSave AS Boolean)
IF $hEditor THEN
IF NOT bNoSave THEN SaveEditor
$hEditor.Hide
$hEditor = NULL
ENDIF
END
PRIVATE SUB MoveEditor()
DIM X, Y AS Integer
IF NOT $hEditor THEN RETURN
X = ME.ScreenX - ME.Window.ScreenX
Y = ME.ScreenY - ME.Window.ScreenY - ME.Window.ClientY
'DEBUG $iRow;; $iCol
WITH ME[$iRow, $iCol]
X += .X
Y += .Y
$hEditor.Move(X, Y, .Width, .Height)
END WITH
'DEBUG
$hEditor.Font = ME.Font
$hEditor.Show
'DEBUG
END
PUBLIC SUB GridView_MouseDown()
HideEditor
END
PUBLIC SUB GridView_RowResize(Row AS Integer)
HideEditor
END
PUBLIC SUB GridView_ColumnResize(Column AS Integer)
HideEditor
END
PUBLIC SUB GridView_Scroll()
HideEditor
END
PUBLIC SUB GridView_Resize()
HideEditor
END
PUBLIC SUB GridView_Hide()
HideEditor
END
PUBLIC SUB GridView_Change()
HideEditor
END
PUBLIC SUB Edit(OPTIONAL List AS String[], OPTIONAL ReadOnly AS Boolean)
'DEBUG
HideEditor
$iCol = ME.Column
$iRow = ME.Row
IF $iCol < 0 OR $iRow <0> 0
DEC ME.Row
RAISE Click
IF $hEditor THEN
STOP EVENT
BREAK
ENDIF
WEND
CASE Key.Down
WHILE ME.Row <ME> 0 THEN RETURN
DO
IF ME.Column > 0 THEN
DEC ME.Column
RAISE Click
ELSE IF ME.Row > 0 THEN
ME.MoveTo(ME.Row - 1, ME.Columns.Count - 1)
RAISE Click
ELSE
BREAK
ENDIF
IF $hEditor THEN
TRY $hEditor.Pos = $hEditor.Length
STOP EVENT
BREAK
ENDIF
LOOP
CASE Key.Right
IF $bTextBox AND IF $hEditor.Pos < $hEditor.Length THEN RETURN
DO
IF ME.Column < (ME.Columns.Count - 1) THEN
INC ME.Column
RAISE Click
ELSE IF ME.Row < (ME.Rows.Count - 1) THEN
ME.MoveTo(ME.Row + 1, 0)
RAISE Click
ELSE
BREAK
ENDIF
IF $hEditor THEN
TRY $hEditor.Pos = 0
STOP EVENT
BREAK
ENDIF
LOOP
CASE Key.Enter, Key.Return
IF $bTextBox THEN
DO
IF ME.Column < (ME.Columns.Count - 1) THEN
INC ME.Column
RAISE Click
ELSE IF ME.Row < (ME.Rows.Count - 1) THEN
ME.MoveTo(ME.Row + 1, 0)
RAISE Click
ELSE
RAISE Insert
STOP EVENT
BREAK
ENDIF
IF $hEditor THEN
TRY $hEditor.Pos = 0
STOP EVENT
BREAK
ENDIF
LOOP
ENDIF
END SELECT
END
última edición por jsbsan el Miercoles, 25 Enero 2012, 17:29; editado 1 vez
|
#2 Miercoles, 25 Enero 2012, 17:29 |
|
|
codificador
Analista Programador
Registrado: Junio 2010
Mensajes: 420
Edad: 114 Ubicación:
|
Re: Gridview Editable?
hola si el código se parece a lo que estaba haciendo
sin embargo sigo sin poder editar
al ejecutar el programa las celdas son de solo lectura
esto es lo que tengo
ahora
en el formulario un tableview y un gridview
para ir probando solamente
' gambas class file
PUBLIC ultimafila AS Integer
PUBLIC SUB _new()
''Relleno de la grilla explicitamente
GridView1.Rows.count = 1
GridView1.Columns.count = 2
GridView1.mode = 1
ultimafila = GridView1.Rows.count
TableView1.Columns.Count = 2
TableView1.Rows.Count = 3
TableView1.Mode = 1
TableView1.Mode = 12
' gridview1.hi
END
''Relleno de la grilla explicitamente
'TableView1..count = 1
'TableView1.Columns.count = 2
'TableView1.mode = 1
'ultimafila = TableView1.Rows.count
'END
PUBLIC SUB Form_Open()
END
PUBLIC SUB GridView1_KeyPress()
' gridview1.
END
PUBLIC SUB GridView1_Click()
IF GridView1.row = ultimafila - 1 THEN
gridview1.Rows.count += 1
ultimafila = gridview1.Rows.count
GridView1.Moveto(ultimafila - 1, 0)
ENDIF
END
sobre la clase del código fuente de gambas no entendí que hacer
ni como usarla
|
#3 Miercoles, 25 Enero 2012, 18:50 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Gridview Editable?
Mira, he encontrado este ejemplo que te puede servir, creo que es lo que quieres hacer....Cuando llegas a la ultima celda, te añade automaticamente una linea y te vas a la primera columna de esa fila.
Lo subi hace tiempo en mi antiguo blog:
NNuevo ejemplo de tableviews presupuestos descompuesto de una unidad
Nota:
El codigo de la clase que subi antes, se supone que es de como esta programado el tableview, pero no he podido ponerlo en funcionamiento...
Descripción: |
|
Descargar |
Nombre del archivo: |
Presupuesto-0.0.1.tar.gz |
Tamaño: |
13.33 KB |
Descargado: |
56 veces |
Descripción: |
|
Descargar |
Nombre del archivo: |
Presupuesto-0.0.1.tar.gz |
Tamaño: |
13.33 KB |
Descargado: |
56 veces |
Descripción: |
|
Descargar |
Nombre del archivo: |
Presupuesto-0.0.1.tar.gz |
Tamaño: |
13.33 KB |
Descargado: |
56 veces |
última edición por jsbsan el Jueves, 26 Enero 2012, 19:49; editado 2 veces
|
#4 Jueves, 26 Enero 2012, 19:48 |
|
|
codificador
Analista Programador
Registrado: Junio 2010
Mensajes: 420
Edad: 114 Ubicación:
|
Re: Gridview Editable?
Mira, he encontrado este ejemplo que te puede servir, creo que es lo que quieres hacer....
Nota:
El codigo de la clase que subi antes, se supone que es de como esta programado el tableview, pero no he podido ponerlo en funcionamiento...
hola
si es oque quería hacer
gracias
tengo que estudiar tu código
|
#5 Jueves, 26 Enero 2012, 20:21 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 1
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 0 invitados Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|