kann SLEpic :datalink eine FELD "sperren" ?

Zugriff, Engines, Konvertierung. Von ADS über DBF bis zu SQL.

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12909
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

kann SLEpic :datalink eine FELD "sperren" ?

Beitrag von AUGE_OHR »

hi,

i habe ein komisches Problem mit SLEpic :datalink.

auf einem XbpDialog habe ich einige SLEpic.

Code: Alles auswählen

// this Windows hold some SLEpic with :datalink
//
oDLGEDIT := MARKEDIT(oDlg,aoChild,aDLGOWNER)
AADD(aDLGOWNER,oDLGEDIT)
....
FUNCTION MARKEDIT(oMainDlg,aoChild,aDLGOWNER)
oXbp              := SLEPIC():new(oXbp2 ....)
oXbp:bufferLength := 12
oXbp:picture      := "99:99:99:999"
oXbp:tabStop      := .T.
oXbp:dataLink := {| x | IF(PCOUNT() == 0,;
                             SEC2HMS(WM9MARK->SNIPIN),;
                             WM9MARK->SNIPIN := HMS2SEC(x))}
oXbp:create()   //:setData()
AADD(aEditControls,oXbp)
Im selben Thread, an einer anderen Stelle, führe ich
ein "normales" REPLACE aus, aber es werden nicht alle
FELDer gefüllt ?

Code: Alles auswählen

// seem to be ok, but DBF is not
   MSGBOX("Posi IN "+cPosi+" "+STR(nPosi))

   APPEND BLANK
   nMarkRec := WM9MARK->(RECNO())       // STATIC

   IF WM9MARK->(DBRLOCK(nMarkRec))
// works
        WM9MARK->W9VIDEO  := cFile

//
// WHY does this not(?) work ?! ... "blocked" by :datalink ???
// 
*       WM9MARK->SNIPIN   := INT(nPosi)
        REPLACE WM9MARK->SNIPIN WITH INT(nPosi)

// works
         WM9MARK->DURATION := SP_Duration()
// now unlock
         WM9MARK->(DBRUNLOCK(nMarkRec))
          SKIP 0
          GOTO(nMarkRec)
alle FELDer bei denen ich ein SLEpic :datalink habe
werden dabei nicht gefüllt, aber die anderen FELDer
funktionieren ... hat jemand eine mögliche Erklärung ?

gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12909
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Beitrag von AUGE_OHR »

ich habe es nun mehrfach überprüft und komme immer zum selben
Ergebniss : der SLEpic :datalink "sperrt" mir die entsprechenden FELDer.
hier nochmal ein wenig mehr Code, vielleicht hab ich ja doch was über-
sehen:

Code: Alles auswählen

// this Windows hold some SLEpic with :datalink
//
oDLGEDIT := MARKEDIT(oDlg,aoChild,aDLGOWNER)
AADD(aDLGOWNER,oDLGEDIT)
....
FUNCTION MARKEDIT(oMainDlg,aoChild,aDLGOWNER)
oXbp              := SLEPIC():new(oXbp2 ....)
oXbp:bufferLength := 12
oXbp:picture      := "99:99:99:999"
oXbp:tabStop      := .T.
oXbp:dataLink := {| x | IF(PCOUNT() == 0,;
                           SEC2HMS(WM9MARK->SNIPIN),;
                           WM9MARK->SNIPIN := HMS2SEC(x))}
oXbp:create()   //:setData()
AADD(aEditControls,oXbp)

********************************************************

CASE nKey == xbeK_F5                                  // "mark" IN
   IF aoChild[CH_WMP]:PlayState >= wmppsPaused
      //
      // APPEND new data
      //
      IF SNAPMARK(aoChild,.T.,.F.,aDLGOWNER)
         SELECT 5                                     // WM9MARK
//
// it works only if i enable (visible := .T.) Window, WHY ???
//
         IF aDLGOWNER[DI_DLGEDIT]:isvisible()         // oDLGEDIT
            //
            // refresh data and show it
            //
            MARKREFESH(aDLGOWNER[DI_DLGEDIT]:cargo[2][IOE_SLE])
         ENDIF
...
********************************************************
PROCEDURE MARKREFESH(editcontrols)
   WM9MARK->(DBGOTO(nMarkRec))  // fieldwide STATIC
   REF2GETS(editcontrols)                  // refresh data
RETURN

PROCEDURE REF2GETS(editcontrols)
LOCAL n
LOCAL LenGets := LEN(editcontrols)
   FOR n := 1 TO LenGets
      editcontrols[n]:setdata()
      editcontrols[n]:show()
   NEXT
RETURN

FUNCTION SNAPMARK(aoChild,lIn,lOut,aDLGOWNER)
LOCAL Retvar  := .F.
LOCAL nPosi
LOCAL cPosi
LOCAL OldSele := SELECT()
LOCAL cFile     := FILEONLY(SP_Playlast())
LOCAL aSize   := aoChild[CH_WMP]:currentsize()

STATIC lInflag  := .F.
STATIC lOutflag := .T.

   nPosi := aoChild[CH_WMP]:Controls:CurrentPosition
   IF nPosi < 1
      Retvar := .F.
      MSGBOX("Position wrong "+STR(nPosi))
   ENDIF
   cPosi := SEC2HMS(nPosi)
// all ok
MSGBOX("Posi "+cPosi+" "+STR(nPosi))

   DO CASE
      CASE lIn .AND. .NOT. lOut
         IF lInflag
         ELSE
            IF lOutflag
               SELECT 5                                          // WM9MARK
               APPEND BLANK
               nMarkRec := WM9MARK->(RECNO())  // fieldwide STATIC

               IF WM9MARK->(DBRLOCK(nMarkRec))
                  // works
                  WM9MARK->W9VIDEO  := cFile
//
// WHY does this not(?) work ?! ... "blocked" by :datalink ???
// 
*                  WM9MARK->SNIPIN   := INT(nPosi)
                  REPLACE WM9MARK->SNIPIN WITH INT(nPosi)

                  // works
                  WM9MARK->DURATION := SP_Duration()
                  // now unlock
                  WM9MARK->(DBRUNLOCK(nMarkRec))
                  SKIP 0
                  GOTO(nMarkRec)
// seem to be ok, but DBF is not
MSGBOX("Posi IN "+cPosi+" "+STR(nPosi))
               ELSE
                  MSGBOX("can NOT lock "+LTRIM(STR(nMarkRec)))
                  Retvar := .F.
               ENDIF
da ich in REF2GET() nur ein :setdata() (lesen) mache
verstehe ich nicht warum ich da durch muss damit ich
was in dern FELDern in der DBF zu bekommen obwohl
ich ja vorher ein REPLACE gemacht habe ?

gruss by OHR
Jimmy
Antworten