Gridview Editable?


Objetivo: Gridview Editable?
hola la idea inicial es hacer algo como esto para empezar

gridviewii

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


data
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
Perfil MP  
Objetivo: 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
Objetivo: 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

Perfil MP  
Objetivo: 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.

presupuesto2

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...

última edición por jsbsan el Jueves, 26 Enero 2012, 19:49; editado 2 veces

Presupuesto-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: Presupuesto-0.0.1.tar.gz
Tamaño: 13.33 KB
Descargado: 59 veces
Presupuesto-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: Presupuesto-0.0.1.tar.gz
Tamaño: 13.33 KB
Descargado: 59 veces
Presupuesto-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: Presupuesto-0.0.1.tar.gz
Tamaño: 13.33 KB
Descargado: 59 veces

Objetivo: Re: Gridview Editable?
jsbsan escribió: [Ver mensaje]
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

Perfil MP  

Página 1 de 1


  
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

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.2371s (PHP: 36% SQL: 64%)
Consultas SQL: 28 - Debug off - GZIP Activado