http://sandstorm36.blogspot.com.ar/2012/07/drag-drop-and-retain-it-part-ii-grid.html
Autor: Jun Tangunan
Traducido por: Luis Maria Guayán
Arrastrar, soltar y conservar las posiciones - Parte II - Columnas de una cuadricula
Debido al ejemplo de "Arrastrar, soltar y conservar posiciones" que publiqué anteriormente, una nueva solicitud se hizo dentro del foro (Nota del Traductor: Foxite Forum) y esta vez se trata de reordenar las columnas de una cuadrícula sobre la marcha y guardar esa configuración.
Yo pensaba llamar esto "Trucos de cuadrícula # 6" porque se trata de trucos de cuadrícula, pero al final me decidí a hacer esta la parte 2 parte 2 de "Arrastrar, soltar y conservar las posiciones".
De todos modos, aquí está cómo hacerlo. Siempre se debe tener algo primero para guardar la configuración y luego para recuperar, una tabla es mi mejor opción. Esto es simple y solo para que sirva de guía. Puede ser necesario que usted tenga que guardar el nombre del formulario y el nombre de la cuadrícula para algo mas completo
Aquí está el código de ejemplo, si estás interesado:
LOCAL oForm oForm = NEWOBJECT("Form1") oForm.SHOW READ EVENTS RETURN DEFINE CLASS Form1 AS FORM HEIGHT = 390 WIDTH = 500 AUTOCENTER = .T. CAPTION = 'Reordenar las columnas y conservarlas' SHOWTIPS = .T. ADD OBJECT label1 AS LABEL WITH ; CAPTION = 'Arrastre y suelte para reordenar columnas. Luego cierre y ' + ; 'vuelva a abrir formulario para ver si la disposición está guardada', ; TOP = 10, LEFT = 10, WIDTH = 480, HEIGHT = 40, WORDWRAP = .T. ADD OBJECT grid1 AS GRID WITH ; COLUMNCOUNT = 3,; HEIGHT = 328, LEFT = 10, TOP = 50, WIDTH = 480,; GRIDLINES = 3, DELETEMARK = .F.,; GRIDLINECOLOR = RGB(192,192,192),; GRIDLINES = 0, FONTNAME = 'Tahoma', FONTSIZE = 8,; ANCHOR = 15, ALLOWCELLSELECTION = .F.,; TOOLTIPTEXT = 'Drag Column to Rearrange' PROCEDURE LOAD SET TALK OFF SET SAFETY OFF CLOSE DATABASES ALL SELECT company, contact, TITLE FROM (HOME(2)+"data\customer") WHERE RECNO() < 50 INTO CURSOR junk USE IN SELECT('customer') * Create/use a table to store grid column settings IF !FILE("gridcolumns.dbf") CREATE TABLE gridcolumns (ColName c(10), ColOrder I) ELSE USE gridcolumns IN 0 SHARED ENDIF ENDPROC PROCEDURE INIT IF RECCOUNT("gridcolumns") == 0 * First run? Save the current order of the columns LOCAL lnloop WITH THISFORM.grid1 FOR lnloop = 1 TO .COLUMNCOUNT lcColName = .COLUMNS(m.lnloop).NAME lnOrder = .COLUMNS(m.lnloop).COLUMNORDER INSERT INTO gridcolumns VALUES (m.lcColName, m.lnOrder) NEXT ENDWITH ENDIF THIS._getorder() ENDPROC PROCEDURE grid1.INIT WITH THIS .RECORDSOURCETYPE = 6 .RECORDSOURCE = 'junk' .Column1.Header1.CAPTION = 'Column1' .Column2.Header1.CAPTION = 'Column2' .Column3.Header1.CAPTION = 'Column3' .SETALL('Width',150,'Column') * Bind Move Events FOR lnloop = 1 TO .COLUMNCOUNT BINDEVENT(.COLUMNS(m.lnloop),'Moved',THISFORM,'_Moved') NEXT ENDWITH ENDPROC PROCEDURE _Moved * Save new column orders LOCAL lnloop WITH THISFORM.grid1 FOR lnloop = 1 TO .COLUMNCOUNT lcColName = ALLTRIM(.COLUMNS(m.lnloop).NAME) lnOrder = .COLUMNS(m.lnloop).COLUMNORDER REPLACE ColOrder WITH m.lnOrder FOR ALLTRIM(ColName) = m.lcColName IN gridcolumns NEXT ENDWITH ENDPROC PROCEDURE _getorder * Fetch Column Orderings SELECT gridcolumns LOCAL lnloop WITH THISFORM.grid1 FOR lnloop = 1 TO .COLUMNCOUNT lcColName = .COLUMNS(m.lnloop).NAME LOCATE FOR ColName = m.lcColName .COLUMNS(m.lnloop).COLUMNORDER = ColOrder NEXT .REFRESH ENDWITH ENDPROC PROCEDURE DESTROY CLOSE DATABASES ALL CLEAR EVENTS ENDPROC ENDDEFINE
No hay comentarios. :
Publicar un comentario
Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.