Autore Topic: intercettare cambio giornata su datechooser  (Letto 685 volte)

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
intercettare cambio giornata su datechooser
« il: 02 Luglio 2014, 13:23:34 »
volevo fare in modo che gli "impegni" schedulati in una data giornata non fossero cancellati dal click su un altro giorno nel datechooser (che scatena la lettura degli impegni della giornata selezionata), a meno che l'utente non confermi la volonta' di NON salvare.

purtroppo stop event associato all'evento .change arriva quando il danno e' gia' stato fatto (od almeno a me non funziona) ...
se corri, morirai stanco (motto degli sniper)

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: intercettare cambio giornata su datechooser
« Risposta #1 il: 03 Luglio 2014, 00:22:16 »
volevo fare in modo che gli "impegni" schedulati in una data giornata non fossero cancellati dal click su un altro giorno nel datechooser (che scatena la lettura degli impegni della giornata selezionata), a meno che l'utente non confermi la volonta' di NON salvare.

purtroppo stop event associato all'evento .change arriva quando il danno e' gia' stato fatto (od almeno a me non funziona) ...
L'evento "change" viene scatenato proprio dal cambiamento del contenuto di oggetti della Form corrente, destinati a ricevere input. Non fa eccezione il "Datechooser".
Se vai alla documentazione ufficiale, puoi constatare tu stesso.

Occorre perciò intervenire prima, interrogando la variazione che sta per intervenire, magari al momento dell'azione del mouse, quando vai a cliccare su un giorno del calendario per la nuova impostazione e agire con lo "Stop Event" per non consentire la variazione. Dipende , naturalmente, da come e quando avessi bisogno di agire in tal senso.
Se non dovesse esserti chiaro l'indizio che ti ho appena fornito, faresti bene a riportare il codice contenente l'azione che  pensi di controllare o svolgere.
 :ciao:
:ciao:

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
Re: intercettare cambio giornata su datechooser
« Risposta #2 il: 03 Luglio 2014, 13:52:56 »
si pensavo anche io ad intervenire al "click" .... ma il "click" tra' gli eventi non c'e' :-(

mouse down? ... come capire se clicco su un'area sensibile o meno? .... c'e' provo .....
se corri, morirai stanco (motto degli sniper)

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: intercettare cambio giornata su datechooser
« Risposta #3 il: 04 Luglio 2014, 09:38:20 »
si pensavo anche io ad intervenire al "click" .... ma il "click" tra' gli eventi non c'e' :-(

mouse down? ... come capire se clicco su un'area sensibile o meno? .... c'e' provo .....

Come sicuramente saprai, fra gli eventi agganciati al mouse-click, l'evento MouseDown ti permette di intercettare il click eseguito sul mouse in maniera preventiva rispetto al click. Ciò significa che in ordine di esecuzione, al click del mouse, il primo evento schedulato è proprio  MouseDown. Quindi, una volta che clicchi sul mouse, quando il puntotatore del mouse si trova dentro l'area grafica della giornata di calendario prescelta, parte la schedulazione degli eventi legati a detto click e, essendo presente una procedura-evento  MouseDown, viene eseguita.

Non vedo, perciò, nessuna difficoltà di intercettazione.

Comunque, ... potrai sempre chiedere.  :D
 :ciao:
:ciao:

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: intercettare cambio giornata su datechooser
« Risposta #4 il: 04 Luglio 2014, 10:40:05 »
Giusto per completezza mi sembra doveroso fare un'osservazione prevalentemente tecnico-logica. Vedo molto spesso software in cui gli eventi vengono scatenati al MouseDown anche se questo, in molti casi, è logicamente sbagliato. Si deve tenere presente che gli eventi, in base alla loro logica intrinseca ovviamente, andrebbero scatenati al MouseUp se non diversamente richiesto. Perchè questo? L'evento MouseDown viene sollevato non appena l'utente effettua la prima istanza di un click, ovvero quando porta giù il dito per intenderci. Il MouseUp viene sollevata come istanza di ritorno da un MouseDown (ovvero quando il tasto del mouse torna alla sua posizione originale). L'utilizzo del MouseUp permette di ovviare alla "user's incertitude" e pertanto l'utente potrebbe ripensare alla propria azione e muovere il mouse altrove mentre il tasto del click è ancora mantenuto evitando così di scatenare l'evento.

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
Re: intercettare cambio giornata su datechooser
« Risposta #5 il: 04 Luglio 2014, 15:13:27 »
... capisco le varie posizioni ... ora provo a trovare il giusto (per il sottoscritto) compromesso.

il mio dubbio era nel fatto che alle volte si clicca nell'area di un controllo dove non necessariamente c'e' l'oggetto del contendre, tipo un'area vuota su una finestra di selezione file che OVVIAMENTE con seleziona alcuna icona :D

in questo caso il couse down c'e' ma poi devi (da codice) capire cosa si voleva fare con quel mouse down :D

... come sapete sono pigro e se risparmio battute sulla tastiera sono sempre felice ;-)
se corri, morirai stanco (motto degli sniper)

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: intercettare cambio giornata su datechooser
« Risposta #6 il: 04 Luglio 2014, 15:17:33 »
L'evento MouseDown viene sollevato non appena l'utente effettua la prima istanza di un click, ovvero quando porta giù il dito per intenderci. Il MouseUp viene sollevata come istanza di ritorno da un MouseDown (ovvero quando il tasto del mouse torna alla sua posizione originale). L'utilizzo del MouseUp permette di ovviare alla "user's incertitude" e pertanto l'utente potrebbe ripensare alla propria azione e muovere il mouse altrove mentre il tasto del click è ancora mantenuto evitando così di scatenare l'evento.
Verissimo. Non ci avevo pensato. Personalmente utilizzo pochissimo il mouse. Preferisco, quando posso, l'uso della tastiera al mouse.
Comunque, i concetti sul controllo eventi non cambiano; occorre solamente interrogare l'evento MouseUp, piuttosto che l'evento MouseDown. Allora, carissimo allegfede, visto che sei già sbracciato, a causa del caldo, approfittane e mettiti subito al lavoro ;D
:ciao:

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
Re: intercettare cambio giornata su datechooser
« Risposta #7 il: 07 Luglio 2014, 18:09:43 »
ehmmmmm .... l'evento mouse down non viene generato .....

e neppure il mouse up .......

c'ho messo un paio di watchstop e non ci si ferma mai .........
se corri, morirai stanco (motto degli sniper)

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: intercettare cambio giornata su datechooser
« Risposta #8 il: 07 Luglio 2014, 22:38:31 »
ehmmmmm .... l'evento mouse down non viene generato .....

e neppure il mouse up .......

c'ho messo un paio di watchstop e non ci si ferma mai .........

Hai ragione! Ho provato anch'io alcuni degli eventi elencati come generabili e sono riuscito ad intercettare solamente: Change e Activate. Per generare l'evento Activate, occorre però dare doppio click sul giorno prescelto. Non credo comunque che faccia al caso tuo.

Ho guardato anche l'oggetto "DateBox" che funziona come DateChooser con l'aggiunta di offrire la possibilità di digitazione della data, ma, oltre che digitarla, puoi selezionarla dopo avere aperto il calendario (click sull'icona calendario) e cliccato sul giorno di calendario di tuo interesse. Quest'ultimo controllo è più versatile, però, secondo me, se normalmente la data viene digitata. Però, quando il cursore è dentro l'area di digitazione, gli eventi legati al mouse sono intercettabili.

Buon  :coder:
:ciao: