Clipper/FiveWin - cambiar orden en listbox

 
Vista:

cambiar orden en listbox

Publicado por probaco (153 intervenciones) el 26/02/2007 18:30:42
Hola colegas.

Soy programador de clipper desde hace muchos años, pero de Fw, muy poco.Tengo un listbox que dispone de 2 tipo de orden, codigo y descripcion, el cual puede ser modificado por el usaurio.
El problema radica, que cuando el usuario cambia el orden el listbox no se da por enterado y la busqueda da erronea.
Adjunto prg. (sepan disculpar la mala programacion, mucho no entiendo.) acepto modificaciones.
Desde ya muchas gracias!
Cesar
Argentina

#include "FIVEWIN.CH"
#include "Report.Ch"
STATIC oVentPrinc

FUNCTION Main()
LOCAL oBrush
LOCAL oBarraBotones
LOCAL oCursorMano
LOCAL oBmp
LOCAL oFont
MsgLogo( "Probaco.bmp", 2 )
SET RESOURCES TO "lib.dll"
DEFINE CURSOR oCursorMano RESOURCE "Hand"
SET 3DLOOK ON
DEFINE BRUSH oBrush STYLE BORLAND
DEFINE FONT oFont NAME "MS SANS SERIF" SIZE 0,-10
DEFINE ICON oico file "auto.ico"
DEFINE WINDOW oVentPrinc FROM 1, 1 TO 22, 75 ;
TITLE "Lista de precios de DAFYS S.A.";
brush obrush icon oico;
MENU PreparaMenu()
SET FONT OF oVentPrinc TO oFont
SET MESSAGE OF oVentPrinc ;
TO "DAFYS S.A.";
KEYBOARD;
CLOCK;
DATE

DEFINE BUTTONBAR oBarraBotones SIZE 33,33 3D TOP OF oVentPrinc CURSOR oCursorMano

DEFINE BUTTON oBtnClient FILE "Copy.Bmp" OF oBarraBotones ;
TOOLTIP "Lista de Precios";
ACTION ( oBtnClient:Toggle(),BrwClient(),oBtnClient:GoUp() );
MESSAGE "Editemos Base de Datos... Archivo de Precios"
DEFINE BUTTON FILE "Dbf.Bmp" OF oBarraBotones ;
TOOLTIP OemToAnsi( "Impresi¢n a 2 Columnas" );
ACTION Impresion2() GROUP;
MESSAGE "Reportes"
DEFINE BUTTON FILE "Dbfsmal.Bmp" OF oBarraBotones ;
TOOLTIP OemToAnsi( "Impresi¢n a 8 Columnas" );
ACTION Impresion6() GROUP;
MESSAGE "Reportes"

DEFINE BUTTON FILE "Calendar.Bmp" OF oBarraBotones ;
TOOLTIP "Calendario";
ACTION WinExec( "timedate.cpl" ) GROUP;
MESSAGE "Calendario de Windows"
DEFINE BUTTON FILE "SmalCalc.Bmp" OF oBarraBotones ;
TOOLTIP "Calculadora";
ACTION WinExec( "Calc" ) GROUP;
MESSAGE "Llama a la Calculadora de Windows" ;
ADJUST
DEFINE BUTTON FILE "Salida.Bmp" OF oBarraBotones ;
TOOLTIP "Salir";
ACTION Salida() GROUP;
MESSAGE OemToAnsi( "Terminar la ejecuci¢n de este programa" )
ACTIVATE WINDOW oVentPrinc MAXIMIZED
SET RESOURCES TO

FUNCTION PreparaMenu()
LOCAL oMenu
MENU oMenu
MENUITEM "&Archivo"
MENU // Especificamos Submen£ para la opci¢n "Archivo".
MENUITEM OemtoAnsi("&Art¡culos") ;
ACTION BrwClient(); // Llama a la funci¢n cuando se seleccione esta opci¢n.
MESSAGE "Editando Lista de PRecios"
SEPARATOR // Separador de opciones.
MENUITEM "&Salir..." ;
MESSAGE OemToAnsi( "Terminar la ejecuci¢n de este programa" );
ACTION Salida()
ENDMENU // Fin de la definici¢n de Submen£ para Archivo.
MENUITEM OemToAnsi("&Impresi¢n")
MENU
MENUITEM "Reportes"
MENU
MENUITEM "Reportes a 2 Columnas";
ACTION Impresion2();
MESSAGE "Emitir Reportes a 2 columnas"
MENUITEM "Reportes a 8 Columnas";
ACTION Impresion6();
MESSAGE "Emitir Reportes a 8 columnas"
ENDMENU
MENUITEM "Etiquetas";
ACTION Etiquetas();
MESSAGE OemToAnsi( "Impresi¢n de Etiquetas de Art¡culos" )
ENDMENU
MENUITEM "&Herramientas"
MENU // Submen£ para la opci¢n "Utilerias/Herramientas".
MENUITEM "&Calculadora" ;
ACTION WinExec( "Calc" ) ;
MESSAGE "Llama a la calculadora de Windows"
MENUITEM "C&alendario" ;
ACTION WinExec( "Calendar" ) ;
MESSAGE "Calendario de Windows"
ENDMENU // Fin de la definici¢n de Submen£ para "Utilerias/Herramientas".
MENUITEM "&?"
MENU
MENUITEM "&Ayuda" ;
ACTION WinHelp(); // Activamos la ventana del programa de Ayuda de Windows
MESSAGE "Llama a la Ayuda de Windows"
SEPARATOR
MENUITEM "Acerca &de Lista de Precios" ;
ACTION acerca();
MESSAGE "Acerca del Sistema"
ENDMENU
ENDMENU

RETURN( oMenu )

STATIC FUNCTION BrwClient()
LOCAL oCursorMano
LOCAL obot0,obot1,obot2,obot3,obot4,obot5,obot6,obot7,obot8
LOCAL oLbx
LOCAL oDlg
LOCAL oRadioButtons
LOCAL nOrden:=1
LOCAL oget
LOCAL oBuscar:=space(30)
LOCAL tecla
USE stock alias stock
ordCondSet(,,.T.,,,, RECNO(),,,, ) ; ordCreate("codigo",, "codigo", {|| codigo}, )
ordCondSet(,,.T.,,,, RECNO(),,,, ) ; ordCreate("descripc",, "descripcio", {|| descripcio}, )
stock->( Dbgotop() )
DEFINE DIALOG oDlg FROM 3, 2 TO 28, 79 TITLE "Lista de Art¡culos" FONT oVentPrinc:oFont

@00,01 SAY "Ordenar por:"
@ 3, 1 LISTBOX oLbx ;
FIELDS OemToAnsi(STOCK->Descripcio),;
str(STOCK->prec_vent1,10,2),;
OemToAnsi(STOCK->codigo);
FIELDSIZES 370, 100, 100;
HEADERS "DESCRIPCION", "PRECIO", "CODIGO";
SIZE 284, 110;
UPDATE;
OF oDlg

@00,09 RADIO oRadioButtons VAR nOrden ;
PROMPT "&Descripcion ", "&Codigo " ;
OF oDlg ON CHANGE Orden(nOrden,oLbx,Odlg)

@13,36 BUTTON "&Salir" OF oDlg ;
ACTION oDlg:End() SIZE 40, 12;

@11,15 say "Buscar: "

@13,15 get oGet var obuscar of odlg size 170,10 picture "@!30" ON CHANGE buscar(oBuscar,olbx,oGet)

@155,05 BUTTON oBot0 OF oDlg;
ACTION buscar(oBuscar,olbx,oGet);
size 22,22;
FILE "Lupa.bmp";
MESSAGE "Buscar en la base de datos"

@25,152 BUTTON oBoT8 OF oDlg;
ACTION Ley(odlg);
size 15,15;
FILE "hierarch.bmp"

@25,172 BUTTON oBoT1 OF oDlg;
ACTION top(olbx);
size 15,15;
FILE "Top.bmp"

@25,192 BUTTON oBoT2 OF oDlg;
ACTION pagant(olbx);
size 15,15;
FILE "Rewind.bmp"

@25,212 BUTTON oBoT3 OF oDlg;
ACTION ant(olbx);
size 15,15;
FILE "Prev.bmp"

@25,232 BUTTON oBoT4 OF oDlg;
ACTION prox(olbx);
size 15,15;
FILE "next.bmp"

@25,252 BUTTON oBoT5 OF oDlg;
ACTION pagpos(olbx);
size 15,15;
FILE "forward.bmp"

@25,272 BUTTON oBot7 OF oDlg;
ACTION bot(olbx);
size 15,15;
FILE "bottom.Bmp"

ACTIVATE DIALOG oDlg CENTER
use
RETURN( NIL )

Static Func buscar(oBuscar,olbx,oGet)
algo=recno()
obuscar:=alltrim(obuscar)
if stock->( dbseek(obuscar) )
oLbx:UpStable()
oLbx:Refresh()
else
nMsgBox( "No encuentro ese Articulo", OemToAnsi( "Atenci¢n" ) )
ENDIF
return(nil)

STATIC FUNCTION Orden(nOrden,oLbx)
stock->( ordSetFocus( nOrden ) )
stock->( DbGotop() )
oLbx:UpStable()
oLbx:Refresh()
RETURN

STATIC FUNCTION Salida()
IF MsgYesNo( OemToAnsi("¨ Deseas Salir ya ?"), "Salida del Sistema" )
oVentPrinc:End()
ENDIF
RETURN NIL

STATIC FUNCTION BitMaps(oReporte)
oReporte:SayBitmap(0, 1, "Logo.Bmp", 6, 2, 2 )
RETURN NIL

ANNOUNCE RDDSYS
INIT PROCEDURE RDDINIT
REQUEST DBFNTX
RDDSETDEFAULT("DBFNTX")
RETURN

Func top(olbx)
go top
oLbx:UpStable()
oLbx:Refresh()
return

Func PagAnt(olbx)
skip -11
oLbx:UpStable()
oLbx:Refresh()
return

Func Ant(olbx)
skip-1
oLbx:UpStable()
oLbx:Refresh()
return

Func prox(olbx)
skip
oLbx:UpStable()
oLbx:Refresh()
return

Func PagPos(olbx)
skip 11
oLbx:UpStable()
oLbx:Refresh()
return

Func bot(olbx)
go bottom
oLbx:UpStable()
oLbx:Refresh()
return
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder