Dudas y problemas con xBrowse y otras cosas mas

Dudas y problemas con xBrowse y otras cosas mas

Postby Marcelo Via Giglio » Fri Sep 04, 2009 1:12 am

Hola,

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

Code: Select all  Expand view
#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: Select all  Expand view
 
        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: Select all  Expand view

         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
Marcelo Via Giglio
 
Posts: 1064
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 72 guests