SOFTWARE > Linguaggi di programmazione e scripting

Interfacce e comportamento pulsanti

<< < (9/10) > >>

Allanon:
Certo :-)
Continuerò a postare su questo thread  :D

paolone:

--- Citazione da: Allanon - 17 Agosto 2011, 12:26:16 ---...però se...

1. Premo il LMB su un pulsante e mantengo premuto -> windows disegna il pulsante premuto
2. Esco dall'area sempre son il LMB premuto -> windows disegna il pulsante normale
3. Lascio il LMB, e poi lo ripremo in un'area non attiva
4. sempre mantenendo il LMB premuto entro sul pulsante del punto 1 -> windows mi disegna il pulsante evidenziato
5. Lascio il LMB -> windows lancia l'evento
A me questo comportamento non sembra proprio corretto, primo percè ho lasciato il LMB fuori dal pulsante e poi perchè mi lancia l'evento su un rilascio del LMB in seguito ad un evento di evidenziazione e non di pressione...

Ditemi voi, forse sono io che prendo un abbaglio ma se devo riprodurre questi comportamenti è bene che sappia precisamente cosa è giusto e cosa no  <!-- s:D -->:D<!-- s:D -->

--- Termina citazione ---

Sei tu che stai prendendo un abbaglio. Stai semplicemente unendo fra di loro due eventi separati, aspettandoti un comportamento diverso da quello che avevi già descritto in precedenza (nella parte che ho tagliato), dovuto soltanto al fatto che sei uscito e poi rientrato sullo stesso pulsante.

Modifichiamo un secondo il tuo ragionamento, ipotizzando invece che tu abbia selezionato in due tempi, due pulsanti diversi:

1. Premo il LMB su un pulsante A e mantengo premuto -> windows disegna il pulsante A premuto
2. Esco dall'area sempre son il LMB premuto -> windows disegna il pulsante A normale
3. Lascio il LMB, e poi lo ripremo in un'area non attiva
4. sempre mantenendo il LMB premuto entro sul pulsante B -> windows mi disegna il pulsante evidenziato
5. Lascio il LMB -> windows lancia l'evento "B"

Nel tuo caso, semplicemente B == A. Hai fatto due cose diverse, non una sola. Ora, dubito che Windows tenga un registro di tutti gli eventi a cui l'utente ha rinunciato (cliccare, tenere premuto e uscire dall'area del pulsante = rinunciare a premerlo), per tanto l'unica azione effettivamente compiuta nel tuo esempio è quella che hai riportato nei punti 4 e 5.

paolone:
@Allanon

Intanto ne approfitto anch'io per farti i complimenti. Spero che HGui ti permetta almeno di rientrare nell'investimento di tempo, fatica e stress che sicuramente hai dovuto affrontare per realizzarlo.

Allanon:
Mi sembra che poi venne fuori che questo comportamento lo avevo solo con PSPad :)

Cmq grazie per i complimenti, non ho la pretesa di riprenderci il tempo investito ma di recuperarci un paio di aggiornamenti ad Hollywood  :D

Allanon:
Ancora ci sto lavorando... la classe ListView è infinita  ;D

Comunque l'ultimo problema che ho risolto riguarda la manipolazione dei valori in visualizzazione: mi spiego meglio.

Supponiamo che ho una tabella con due colonne: nomi file e dimensione file (in bytes) e voglia mostrarla in una ListView.
Tutto ok, nessun problema, però le dimensioni in byte fanno pena e voglio mostrarle in Kb come faccio?

La prima cosa che viene in mente è convertire i dati e passarli alla ListView, quindi ogni dimensione in byte la converto in Kb e aggiungo il suffisso "Kb", il valore da numerico passa inevitabilmente a stringa.

Bene, i dati sono visualizzati ma se premo il pulsante dell'intestazione della colonna per cambiare ordinamento tutto va a farsi fottere perchè adesso sono stringhe e l'ordinamento delle stringhe prevede, per esempio, che "45Kb" venga prima di "4Kb"  :)

Per risolvere questa zozzeria ho aggiunto la possibilità di definire dei convertitori associati alle colonne delle ListView, ossia delle funzioni che vengono invocate ogni volta che un valore di una determinata colonna deve essere visualizzato. Queste funzioni possono essere cambiate al volo e si prestano anche a dei giochetti carini per evidenziare le colonne o manipolare i dati in visualizzazione.

Quindi, ricapitolando, adesso passo i valori in byte e specifico questa funzione per la colonna delle dimensioni:

--- Codice: ---function(value) return((value/1024) .. "Kb") endfunction

--- Termina codice ---

E tutti vissero felici e contenti :)

P.S.: tra l'altro in questo modo non ho la necessità di inzozzare i dati originali per visualizzarli.

Navigazione

[0] Indice dei post

[#] Pagina successiva

[*] Pagina precedente

Vai alla versione completa