TwBrowse - SaveColSize - SaveColOrder - header

Post Reply
User avatar
fp
Posts: 76
Joined: Fri Dec 30, 2005 10:25 am
Location: Germany

TwBrowse - SaveColSize - SaveColOrder - header

Post by fp »

How can I save the size and the order of TwBrowse-columns (changed from the user) and restore it by the next call?

How to show a column-header with two or three lines - and centered?

Thanks
Frank-Peter
User avatar
James Bott
Posts: 4654
Joined: Fri Nov 18, 2005 4:52 pm
Location: San Diego, California, USA
Contact:

Post by James Bott »

I have had this on my To Do list for a long time. However, I am not sure it is possible with TWBrowse. The preprocessor converts the list of fields to a codeblock which is then passed to the new() method as bLine. There is no storage of the field list in the class and there is no way to parse the list back out of the codeblock that I know of. I could be wrong.

I think the class would have to be modified to use an array instead of a codeblock.

The workaround is probably to use a different browse, like TCBrowse which doesn't use a codeblock.

James
User avatar
reinaldocrespo
Posts: 918
Joined: Thu Nov 17, 2005 5:49 pm
Location: Fort Lauderdale, FL

Post by reinaldocrespo »

fp;

Probably not the answer you're looking for; xbrowse already has it implemented:

METHOD SaveState() CLASS TXBrowse

Saves order, size, and other properties. And it works. You can even save/restore states per user.


Best,


Reinaldo.
DanielPuente
Posts: 108
Joined: Sun Oct 09, 2005 6:12 pm
Location: Mar del Plata - Argentina
Contact:

Post by DanielPuente »

Frank:

The columns, sizes and alignments can be arrays of codeblocks, so if you define your browses this way:

Code: Select all

	 LOCAL  VEC_FIELD:={{ || IF((cAlias)->ESTADO=='C','Cerrado','Abierto') } ,;
											{ || (cAlias)->PUNTOVTA  } ,;
    LOCAL VEC_ENC  :=  { oemtoansi("Estado"),;
			  							 "Punto"+CRLF+"Venta" ,;
LOCAL   aSizes:={80,50, ... }

 			 REDEFINE LISTBOX oBrwMov fields  ID 999  OF oDlg ;
			 ALIAS (cALIAS) ;
  		 COLOR CLR_BLACK, CLR_WHITE UPDATE ;
			 ON DBLCLICK EditaTurno( @fCantI,@fCantE,oBrwMov, oBrwMov:nColAct, EVAL(VEC_FIELD[oBrwMov:nColAct]), .T.,cAlias )

oBrwMov:SetCols( VEC_FIELD, VEC_ENC, aSizes )

You can read those values from an ini file or dbf perfectly.

And for example if the user changes the size of a column before closing the dialog you can ask the browse for the column sizes values, and save the new values of the array to a dbf or ini file (oBrwMov:aColsizes).

To use a multiline header you only need to use CRLF, like "Punto"+CRLF+"Venta" ,; that is a multiline header. And to jusfify you can use:

Code: Select all

				oBrwMov:aHJustify    := {2, 2, 0, 1 }
				oBrwMov:aJustify     := {2, 2, 0, 1 }
0=Left, 1=right, 2=centered

Regards,
Daniel Puente
Mar del Plata, Argentina
danielpuente@speedy.com.ar
puenteda@hotmail.com
User avatar
fp
Posts: 76
Joined: Fri Dec 30, 2005 10:25 am
Location: Germany

Post by fp »

Hello Daniel

thank you very much.

That is a super complete answer to my questions and the help, I need for my project.

Regards from Germany
Frank-Peter
Post Reply