Newsgroup: it.comp.lang.vo-clipper
Titolo: Metodo Dispatch V.O. 2.0

Salve
        Qualcuno può, cortesemente,  indicarmi come  intercettare la
tastiera durante una Browse in una DataWindows?  Ho provato scrivendo  il
metodo Dispatch sia nella classe DataWindows che nella classe
DataWindows_DataBrowser ma senza successo. (Utilizzo CAVO 2.0)  Grazie .
                                    Giancarlo

 ha scritto nel messaggio
news:fhcp6.104444$Y93.2...@news.infostrada.it...

Ciao Giancarlo,
    Ti passo qui appresso il metodo Dispach che uso io attualmente, esso
funziona solo per righe record che già inserite permette di modificarle ed
anche annullarle mediante tasti da tastiera. l'opzione inserisci funziona
solo per inserire record vuoti, purtroppo le modifiche a tali records nuovi
funzionano solo dopo un successivo richiamo !!!
    Ho provato diverse soluzioni ed ho anche interpellato Il Cresta, ma
attualmente senza alcun esito per poter gestire altri tasti... o
duplicare(Cosa interessante assai) il campo corrispondente di un record già
inserito...Mediante un tasto funzione(Es. "F1" ) o l'uso delle combinazioni
con i tasti "Ctrl +" o "Alt +".
     Insomma portare le funzioni più interessanti di Clipper in VO. !!!
    Ecco, quanto ho fatto io su di una base del Cresta, spero tu possa
aggiungere qualcosa al riguardo e migliorare ancora il metodo.
    Ricorda che il metodo va abbinato alla classe che gestisce il
databrowser in questione...
    Ciao, Mario Summa
METHOD Dispatch(oEvent)CLASS _Testata_DETAIL_DataBrowser
 LOCAL dwcode  AS DWORD
 LOCAL cOrder  AS USUAL
 LOCAL symname  AS SYMBOL
 LOCAL lOk := FALSE AS LOGIC
 LOCAL oTB1 AS TextBox
    LOCAL PROGRESSIVO AS INT
 dwCode := HiWord(oEvent:wParam)
 IF dwCode == CN_INSERT
  //Aggiunta di record al file di appoggio
  SELF:Owner:Server:SuspendNotification()
        PROGRESSIVO := SELF:Owner:Server:PROGR
     SELF:Owner:Server:Append()
     SELF:Owner:Server:PROGR := (PROGRESSIVO + 1)
  SELF:Owner:Server:Commit()
   SELF:Owner:Server:Notify(NOTIFYFILECHANGE)
  SELF:Owner:Server:Refresh()
  SELF:Owner:Server:ResetNotification()
  SELF:Owner:Server:Notify(NOTIFYAPPEND)
 ELSEIF dwcode == CN_DELETE
  //Cancellazione di record dal file di appoggio
  SELF:Owner:Server:SuspendNotification()
  oTB1 := TextBox{ SELF:Owner, "Cancelli La riga dell'Offerta ",;
  "Sei Sicuro di Cancellare questo Movimento del: "
+DToC(SELF:Owner:Server:DATOF)+;
  " Nr.: "+ Str(SELF:Owner:Server:NUMOF, 5)+;
  " Progr.: "+ Str(SELF:Owner:Server:progr, 3)+;
  " Descrizione: "+Upper(SELF:Owner:Server:QUA)+" Quantità "+;
  Str(SELF:Owner:Server:QTA, 6) }
  oTB1:Type := BUTTONYESNO + BOXICONQUESTIONMARK
  IF oTB1:Show() == BOXREPLYYES
      SELF:Owner:Server:Delete()
   SELF:Owner:Server:Skip(-1)
  ENDIF
  SELF:Owner:Server:ResetNotification()
  SELF:Owner:Server:Notify(NOTIFYDELETE)
 ELSEIF dwcode == CN_LK_ARROW_UP
  //Posiziona il cursore al record superiore
  SELF:Owner:Server:Skip(-1)
 ELSEIF dwcode == CN_LK_ARROW_DOWN
  //Posiziona il cursore al record inferiore
  IF SELF:Owner:Server:Recno < SELF:Owner:Server:LastRec
   SELF:Owner:Server:Skip(1)
  ENDIF
 ELSEIF dwcode == CN_LK_ARROW_LEFT
  //Posiziona il cursore al campo precedente
  SELF:SETCOLUMNFOCUS(SELF:GETCOLUMN(SELF:colPOS()-1))
 ELSEIF dwcode == CN_LK_ARROW_RIGHT
  //Posiziona il cursore al campo successivo
  SELF:SETCOLUMNFOCUS(SELF:GETCOLUMN(SELF:colPOS()+1))
 ELSEIF dwcode == CN_LK_HOME
  //Posiziona il cursore al primo record
  SELF:Owner:Server:gotop()
 ELSEIF dwcode == CN_LK_END
  //Posiziona il cursore all'ultimo record
  SELF:Owner:Server:gobottom()
 ENDIF
RETURN SUPER:Dispatch(oEvent)

 wrote in message
wHMp6.18767$yl2.3...@news1.tin.it...


Grazie Mario
                        Questa sera  probabilmente la dedicherò  alla
sperimentazione il tuo Dispatch. Spero di riuscirci senza problemi . Nel
caso dovessi aggiungere qualcosa provvederò ad inviartelo immediatamente.
            Grazie ancora Giancarlo