fbpx
Welcome, Guest
Username: Password: Remember me
Qui si parla italiano
  • Page:
  • 1

TOPIC:

Metodo nel cambio riga in DATALISTVIEW 16 Oct 2020 23:51 #16235

  • claudiocarletta's Avatar

  • claudiocarletta

  • Topic Author


  • Posts: 24
  • Salve a tutti,
    Ho un po' di problemi sa sottoporvi ma forse è meglio che faccia un topic per ognuno.
    Dopo che ho dato il focus ad una DATALISTVIEW, quando scorro con le frecce in alto o in basso in una lista di alunni, vorrei che un metodo di callback mi intercettasse il cambio di record per eseguire un metodo per la ricerca dei libri in prestito al nuovo alunno puntato.
    Ho provato con i tre metodi sotto elencati ma nessuno di questi intercetta il cambio record.

    method VerticalSpin(oSpinEvent)
    super:VerticalSpin(oSpinEvent)
    //Put your changes here
    SELF:oTab_1:CercaLibriPrestati( )
    return NIL

    method VerticalSlide(oSlideEvent)
    super:VerticalSlide(oSlideEvent)
    //Put your changes here
    SELF:oTab_1:CercaLibriPrestati( )
    return NIL

    method VerticalScroll(oScrollEvent)
    super:VerticalScroll(oScrollEvent)
    //Put your changes here
    SELF:oTab_1:CercaLibriPrestati( )
    return NIL

    Qual è il metodo che intercetta questo evento?
    Grazie a tutti e buona serata

    Please Log in or Create an account to join the conversation.

    Metodo nel cambio riga in DATALISTVIEW 17 Oct 2020 01:26 #16236

  • Chris's Avatar

  • Chris


  • Posts: 2166
  • Claudio,

    Not sure if this was improved sometime after I stopped programming in VO, but at least in the past handling ListView controls like that was a little difficult to handle in the VOGUI classes, only way was by using the ControlNotify() method and add some code:

    METHOD ControlNotify(oControlNotifyEvent)
       LOCAL sInfo AS _winNM_LISTVIEW
       LOCAL nIndex AS INT
       IF oControlNotifyEvent:Control == SELF:oDCListView1
          IF DWORD(oControlNotifyEvent:NotifyCode)== LVN_ITEMCHANGED
             sInfo := PTR(_CAST, oControlNotifyEvent:lParam)
             nIndex := sInfo.iItem // which item
          ENDIF
       END IF
    RETURN SUPER:ControlNotify(oControlNotifyEvent)

    In this code, "sInfo" contains all the info you need, which item was selected or changed. There is documentation about this here docs.microsoft.com/en-us/windows/win32/a...-commctrl-nmlistview

    Of course in the Windows Forms classes, it is extremely easy to do this with only one line of code..
    XSharp Development Team
    chris(at)xsharp.eu

    Please Log in or Create an account to join the conversation.

    Metodo nel cambio riga in DATALISTVIEW 17 Oct 2020 11:57 #16240

  • wriedmann's Avatar

  • wriedmann


  • Posts: 2395
  • Ciao Claudio,
    guardati i metodi ListViewItemChanged() e ListViewItemChanging() nella classe Window.
    Dovrebbero essere quello che cerchi.
    Saluti
    Wolfgang
    Wolfgang Riedmann
    Meran, South Tyrol, Italy

    www.riedmann.it - docs.xsharp.it

    Please Log in or Create an account to join the conversation.

    Metodo nel cambio riga in DATALISTVIEW 17 Oct 2020 18:20 #16243

  • claudiocarletta's Avatar

  • claudiocarletta

  • Topic Author


  • Posts: 24
  • Grazie Wolfgang, se mi invii un esempio forse è meglio, in rete non riesco a trovare nulla
    Ciao
    Claudio

    Please Log in or Create an account to join the conversation.

    Metodo nel cambio riga in DATALISTVIEW 17 Oct 2020 18:31 #16244

  • wriedmann's Avatar

  • wriedmann


  • Posts: 2395
  • Ciao Claudio,
    non cercare in rete, ma nell'aiuto di VO 2.8!
    Li è documentato tutto,
    Se non trovi niente, ti posso preparare in esempio.
    Saluti
    Wolfgang
    Wolfgang Riedmann
    Meran, South Tyrol, Italy

    www.riedmann.it - docs.xsharp.it

    Please Log in or Create an account to join the conversation.

    Metodo nel cambio riga in DATALISTVIEW 17 Oct 2020 18:42 #16245

  • claudiocarletta's Avatar

  • claudiocarletta

  • Topic Author


  • Posts: 24
  • Ciao Wolfgang
    1) Dove lo trovo l'aiuto di VO 2.8? Ti ricordo che mi sono fermato più di una decina di anni fa al 2.5.
    2) come faccio a disabilitare temporaneamente il collegamento tra la DATALISTVIEW e il suo server? Altrimenti durante il popolamento del DBF esegue tutte le query su MySQL
    Saluti
    Claudio

    Please Log in or Create an account to join the conversation.

    Metodo nel cambio riga in DATALISTVIEW 17 Oct 2020 18:59 #16246

  • claudiocarletta's Avatar

  • claudiocarletta

  • Topic Author


  • Posts: 24
  • Grazie Chris,
    purtoppo il metodo che mi hai suggerito viene invocato quando ha già abbandonato il record puntato.

    Please Log in or Create an account to join the conversation.

    Metodo nel cambio riga in DATALISTVIEW 17 Oct 2020 19:04 #16247

  • wriedmann's Avatar

  • wriedmann


  • Posts: 2395
  • Ciao Claudio,
    senza l'aiuto di VO non ci lavoro neanche io dopo oltre vent'anni....non posso sapere a memoria tutto.
    Se nella IDE vai su Help - Index si apre l'aiuto e se vai su "Indice" riesci a cercare quelllo che ti serve.

    Da me l'aiuto dice:
    Window:ListViewItemChanged() Method
    Purpose:
    Provide a method that is invoked when a list view item has changed.
    Important! This is a callback method used by Visual Objects. Normally, it should not be called in your application code.
    Syntax:
    <oWindow>:ListViewItemChanged(<oListViewItemEvent>) ---> NIL
    Arguments:
    <oListViewItemEvent> The ListViewItemEvent object that describes which list view item has changed.
    Description:
    The ListViewItemChanged event handler notifies a list view control's parent window that an item has changed.

    Un esempio lo preparo subito.

    Per quanto riguarda di disabilitare il collegamento dovresti riuscire con SuspendNotification() e poi ristabilire con ResetNotification() sul DBServer.
    Però non capisco come il popolamento del DBF possa eseguire le query sy MySQL.

    Personalmente non lavoro con il DataListView, ma con il ListView normale e ci penso io alle operazioni di lettura.

    Saluti

    Wolfgang
    Wolfgang Riedmann
    Meran, South Tyrol, Italy

    www.riedmann.it - docs.xsharp.it

    Please Log in or Create an account to join the conversation.

    Metodo nel cambio riga in DATALISTVIEW 17 Oct 2020 19:54 #16248

  • wriedmann's Avatar

  • wriedmann


  • Posts: 2395
  • Ciao Claudio,
    allora, come spiega l'aiuto i due metodi vengono chiamati in due momenti differenti:
    method ListVieItemChanged( oEv ) class MyWindow
    local oEvent as ListViewItemEvent
    oEvent := oEv
    super:ListViewItemChanged( oEvent )
    // oEvent:ListViewItem ritorna il ListViewItem che è appena stato selezionato
    return nil
    Questo metodo, se lo implementi nella tua finestra, viene chiamato non appena una riga viene selezionata.
    Il metodo
    method ListVieItemChangeing oEv ) class MyWindow
    local oEvent as ListViewItemEvent
    oEvent := oEv
    super:ListViewItemChanging( oEvent )
    // oEvent:ListViewItem ritorna il ListViewItem che sta per essere lasciato
    return nil
    viene chiamato prima che una riga viene lasciata per un'altra, dandoti per esempio la possibilità di salvare eventuali modifiche.
    Nella finestra che vedu sotto ho combinato un ListView con una DataWindow - l'utente può modificare i data nella finestra dettaglio e al momento di cambiare riga nel ListView questi vengono salvati.

    Saluti
    Wolfgang
    Wolfgang Riedmann
    Meran, South Tyrol, Italy

    www.riedmann.it - docs.xsharp.it
    Attachments:

    Please Log in or Create an account to join the conversation.

    Metodo nel cambio riga in DATALISTVIEW 17 Oct 2020 21:01 #16249

  • claudiocarletta's Avatar

  • claudiocarletta

  • Topic Author


  • Posts: 24
  • Grazie Wolfgang,
    funziona perfettamente, all'inizio non funzionava perché fidandomi troppo non ho controllato che il metodo l'avevi chiamato
    ListVieItemChanged( oEv ) invece che ListViewItemChanged( oEv ).

    Grazie sempre
    Saluti Claudio
    p.s. al prossimo problema

    Please Log in or Create an account to join the conversation.

    • Page:
    • 1
    Moderators: wriedmann