Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Wyświetlanie danych - CLIPPER

25 Aug 2008 13:12 1279 1
  • Level 16  
    Wyświetlanie danych - CLIPPER


    --------------------------------------------------------------------------------

    Witam!!!

    Wyświetlanie danych - CLIPPER
    Program wyświetla tabele,
    dane są pobierane z tablicy zmiennch.

    Mam pytanie po co jest ten fragment kodu :

    oBrowse:GoTopBlock = { || n := 1 }
    oBrowse:GoBottomBlock = { || n := Len( aTest0 ) }
    oBrowse:SkipBlock = { | nSkip, nPos | nPos := n,;
    n := If( nSkip > 0, Min( Len( aTest0 ), n + nSkip ),;
    Max( 1, n + nSkip )), n - nPos }



    oto cały kod:

    Code:


    // Harbour sample CLIPPER

    #include "inkey.ch"

    function Main()

       local oBrowse := TBrowseNew( 3, 3, 20, 65 )


       local aTest0  := { 1.12, 2.33, 3.56, 4.23, 5.87, 6.11, 7.55 }
       local aTest1  := { "ehisddddd", "is", "a", "browse", "on", "an", "array"}


       local aTest2  := { 1.12, 2.33, 3.56, 4.23, 5.87, 6.11, 7.55 }
       local aTest3  := { date(), date()+4, date()+56, date()+14, date()+5, date()+6, date()+7 }
       local aTest4  := { .t., .f., .t., .t., .f., .f., .t.}
       local aTest5  := { "DEMO","DEMOddddddd","DEMO","DEMO","DEMO","DEMO","endDEMO"}
     
       local aTest6 := aTest5

     
     local n       := 1
       local nKey
       local lEnd    := .f.
       local nCursor
       local cColor
       local nRow, nCol
       local nTmpRow, nTmpCol

       oBrowse:colorSpec     = "W+/B, N/W"
       oBrowse:ColSep        = "ł"
       oBrowse:HeadSep        = "ŃÍ"
       oBrowse:FootSep        = "ŃÍ"
       oBrowse:GoTopBlock    = { || n := 1 }
       oBrowse:GoBottomBlock = { || n := Len( aTest0 ) }
       oBrowse:SkipBlock     = { | nSkip, nPos | nPos := n,;
                                 n := If( nSkip > 0, Min( Len( aTest0 ), n + nSkip ),;
                                 Max( 1, n + nSkip )), n - nPos }

       oBrowse:AddColumn( TBColumnNew( "PIERWSZA",  { || n } ) )
       oBrowse:AddColumn( TBColumnNew( "Num     ",  { || aTest0[ n ] } ) )
       oBrowse:AddColumn( TBColumnNew( "Nazwa   ",  { || aTest1[ n ] } ) )
       oBrowse:AddColumn( TBColumnNew( "Kasa    ",  { || aTest2[ n ] } ) )
       oBrowse:AddColumn( TBColumnNew( "Data    ",  { || aTest3[ n ] } ) )
       oBrowse:AddColumn( TBColumnNew( "Logic   ",  { || aTest4[ n ] } ) )
       oBrowse:AddColumn( TBColumnNew( "Dodat 1 ",  { || aTest5[ n ] } ) )
       oBrowse:AddColumn( TBColumnNew( "Dodat 2 ",  { || aTest6[ n ] } ) )


       oBrowse:GetColumn(1):Footing = 'Number'
       oBrowse:GetColumn(1):Picture := '999999999'

       oBrowse:GetColumn(2):Footing = 'Strins'
       oBrowse:GetColumn(2):Picture := '@!'

       oBrowse:GetColumn(3):Footing = 'Number'
       oBrowse:GetColumn(3):Picture := '999,999.99'

       oBrowse:GetColumn(4):Footing = 'Dates'

       oBrowse:GetColumn(5):Footing = 'Logical'

       oBrowse:GetColumn(6):Footing = 'Strins'
       oBrowse:GetColumn(6):Picture := '@!'

     


       // needed since I've changed some columns _after_ I've added them to TBrowse object
       oBrowse:Configure()

       Alert( oBrowse:ClassName() )
       Alert( oBrowse:GetColumn( 1 ):ClassName() )

       oBrowse:Freeze = 1
       nCursor := SetCursor( 0 )
       cColor := SetColor( "W+/B" )
       nRow := Row()
       nCol := Col()

    @ 0,0,24,79 BOX "ÚÄżłŮÄŔł "


    @ 1, 70 SAY TIME()
    @ 1, 55 SAY 'START TIME ->'
    @ 23, 55 SAY '<-- SCROL -->'


    #ifdef HB_COMPAT_C53
     oBrowse:Setkey(0,{|ob,nkey| Defproc(ob,nKey)})
    while .t.
        oBrowse:ForceStable()
     if (oBrowse:applykey(inkey(0))== -1)
       exit
    endif
    enddo
    #else
    While !lEnd
          oBrowse:ForceStable()

          nKey = InKey( 0 )

          do case
             case nKey == K_ESC
                  SetPos( 17, 0 )
                  lEnd = .t.

             case nKey == K_DOWN
                  oBrowse:Down()

             case nKey == K_UP
                  oBrowse:Up()

             case nKey == K_LEFT
                  oBrowse:Left()

             case nKey == K_RIGHT
                  oBrowse:Right()

             case nKey = K_PGDN
                  oBrowse:pageDown()

             case nKey = K_PGUP
                  oBrowse:pageUp()

             case nKey = K_CTRL_PGUP
                  oBrowse:goTop()

             case nKey = K_CTRL_PGDN
                  oBrowse:goBottom()

             case nKey = K_HOME
                  oBrowse:home()

             case nKey = K_END
                  oBrowse:end()

             case nKey = K_CTRL_LEFT
                  oBrowse:panLeft()

             case nKey = K_CTRL_RIGHT
                  oBrowse:panRight()

             case nKey = K_CTRL_HOME
                  oBrowse:panHome()

             case nKey = K_CTRL_END
                  oBrowse:panEnd()

             case nKey = K_TAB
                  nTmpRow := ROW()
                  nTmpCol := COL()
                  @ 0, 0 SAY TIME()
                  DevPos( nTmpRow, nTmpCol )

          endcase
         
       end
    #endif
       DevPos( nRow, nCol )
       SetColor( cColor )
       SetCursor( nCursor )

    return nil
    #ifdef HB_COMPAT_C53
    function  defproc(ob,nkey)
    Local nTmpRow,nTmpCol
            if nKey = K_TAB
                  nTmpRow := ROW()
                  nTmpCol := COL()
                  @ 0, 0 SAY TIME()
                  DevPos( nTmpRow, nTmpCol )
                ob:Refreshall()
            endif
            return 1
    #endif




    proszę o pomoc

    pozdrawiam!!
  • Level 11  
    oBrowse:GoTopBlock = { || n := 1 } // przy skoku do początku tabeli (chyba ctrl-home) skacze do pierwszego wiersza

    oBrowse:GoBottomBlock = { || n := Len( aTest0 ) } // jw tylko dot. ostatniego wiersza i ctrl-end

    oBrowse:SkipBlock = { | nSkip, nPos | nPos := n,;
    n := If( nSkip > 0, Min( Len( aTest0 ), n + nSkip ),;
    Max( 1, n + nSkip )), n - nPos } // blok kodu który obsługuje przenoszenie kursora między wierszami nSkip - o ile wierszy zmienić pozycję Npos - aktualna pozycja

    12 Paź 2008 20:32:15

    Jeśli chcesz dokładny opis całego podanego przez ciebie kodu-napisz.

    Posty scaliłem - krzychoocpp