FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Dudas y problemas con xBrowse y otras cosas mas
Posts: 1088
Joined: Fri Oct 07, 2005 03:33 PM
Dudas y problemas con xBrowse y otras cosas mas
Posted: Fri Sep 04, 2009 01:12 AM
Hola,

para mostrar mi problema, he modificado el ejemplo xbrabln.prg

Code (fw): Select all Collapse
#include "fivewin.ch"
#include "xbrowse.ch"

function main()

   local aData := {}
   local oWnd, oBrw, oBar

   define window oWnd

   define buttonbar oBar size 100,32 of oWnd 2007
   define button of oBar prompt 'AddRow' action AddRow( oBrw )
   define button of oBar prompt 'DeleteRow' action DelRow( oBrw )

   @ 0,0 xbrowse oBrw of oWnd ;
      header 'one','two','three' ;
      columns 1, 2, 3 ;
      colsizes 50,70,50 ;
      pictures '999','mmm dd, yyyy', '!!!!!!' ;
      array aData lines cell fastedit

   AEval( oBrw:aCols, { |o| o:nEditType := EDIT_GET } )

   oBrw:bPastEof  := { || AddRow( oBrw )  }
   oBrw:bKeyDown := {| nKey | If( nKey == VK_DELETE, DelRow( oBrw ), ) }
   oBrw:aCols[3]:bOnPostEdit   := {|o,v,nkey|  valid( o, v, nkey, oBrw ) }
   
   oBrw:CreateFromCode()
   oWnd:oClient := oBrw
   activate window oWnd

return nil

static function valid( o,v,nkey,oBrw)
   IF AT( ALLTRIM(v), "######" ) != 0
      o:value := ALLTRIM(v)
   ELSE
      IF oBrw:nArrayAt = LEN( oBrw:aArrayData )
         DelRow( oBrw )
      ENDIF
   ENDIF
RETURN NIL

static function AddRow( oBrw )

   static n := 0

   AAdd( oBrw:aArrayData, { n, date()+n, "###" } )
   n++
   oBrw:GoBottom()
   oBrw:Refresh()
   oBrw:SetFocus()
   oBrw:SetPos( , 3 ) 
   oBrw:SelectedCol():edit()

return nil

static function DelRow( oBrw )

   if oBrw:nLen > 0
      ADel( oBrw:aArrayData, oBrw:nArrayAt )
      ASize( oBrw:aArrayData, oBrw:nLen - 1 )
      oBrw:Refresh()
   endif
   oBrw:SetFocus()

return nil


1.- Describo las operaciones que hago para tener el comportamiento raro
1 .- Añadir 4 elemento con el boton "AddRow" de manera seguida
2 .- sin hacer nada digitar por ejmplo "123" en el cuarto elemento preparado para la edicion
3 .- regresar con el cursor (oprimir continuamente) hacia arriba
4 .- EL cursor no se posiciona en la primera fila del xBrowse, se queda en la segunda, pero si con el mouse se puede posicionar el cursor en la primera fila

2.- Siendo que tenemos definido como FASTEDIT, como hago para que inicie la edicion con el caracter '#' ya que para pulsarlo necesito hacerlo conjuntamente con shift (mi teclado es en ingles) creo que en los teclados en español se lo realiza con Alt

3.- Deseo tener un xBrowse definido por recurso sin borde 3D, es decir quisiera que fuera como el borde de un GET (linea simple azul) aplicando temas XP
le he quitado la propiedad WS_BORDER en le recurso, pero queda ya tambien sin bordes (peor)

Ahora una pregunta de OOP

como puedo referenciar a un metodo de un objeto cuando utilizo una instancia de otro objeto dentro el por ejemplo

Code (fw): Select all Collapse
  
        REDEFINE DBCOMBO ::oDbf:separador ID 14 OF ::oDlg ;
               LIST {"punto","guión","espacio"} ITEMS {".","-"," "};
          ON CHANGE ::crea_formato()


El DBCOMBO esta definido dentro un metodo de otra clase, el metodo crea_formato() es un metodo tambien de la clase, pero en la ejecucion, intenta ejecutar crea_formato() como si fuera metodo de DBCOMBO, como debo especificar crea_formato() para que haga referencia a la clase contenedora.

ESTO SOLUCIONADO ASI!

Code (fw): Select all Collapse
         OBJ := SELF
         REDEFINE DBCOMBO ::oDbf:separador ID 14 OF ::oDlg ;
                                LIST {"punto","guión","espacio"} ITEMS {".","-"," "};
                     ON CHANGE OBJ:crea_formato()




Espero sea clara mi exposición, estoy utilizando FWH9.06

saludos

Marcelo

Continue the discussion