Pagina 3 di 3 primaprima 1 2 3
Visualizzazione dei risultati da 21 a 27 su 27
  1. #21
    Utente di HTML.it L'avatar di e444
    Registrato dal
    Jan 2012
    Messaggi
    37
    Quote Originariamente inviata da eziogsv Visualizza il messaggio

    codice:
    LBTimerS1P1.Text=(Cint(FormPrincipale.LBTimerS1P2.Text)+Est).ToString
    Non hai precisato se usando questo codice finalmente il problema di partenza (cioè aggiungere correttamente Est al valore corrente della label) è risolto.

    La risposta è NEGATIVA!... non funzia.

    Mi sa che faccio prima a sfasciare il tutto e invece di inserire solo i secondi, metto pure i minuti e le ore...

    Però non vi nascondo che questa cosa mi lascia al quanto perplesso.... trovo impossibile che non si riesca ad ottenere sta cosa....

  2. #22
    Quote Originariamente inviata da e444 Visualizza il messaggio
    La risposta è NEGATIVA!... non funzia.

    Mi sa che faccio prima a sfasciare il tutto e invece di inserire solo i secondi, metto pure i minuti e le ore...

    Però non vi nascondo che questa cosa mi lascia al quanto perplesso.... trovo impossibile che non si riesca ad ottenere sta cosa....
    Che il codice non funzioni è impossibile, per cui l' unica possibilità che vedo è che la "modifica" del valore della label venga erroneamente effettuata più volte "di seguito" e venga visualizzata solo l' ultima "sbagliata". Errore che potrebbe essere dovuto al fatto che "contabilizzi" il tempo nelle label.

    Visto che siamo abituati a ragionare in termini di ore, minuti e secondi, mi pare regolare VISUALIZZARE il risultato in ore, minuti e secondi, ma il tempo continuerei a "contarlo" in secondi con variabili Integer. Quindi NON "contabilizzato" nelle label, ma in variabili. Per ogni label dichiarerei la relativa:

    codice:
    Dim TimerSxPy as Integer

    Potrebbe anche essere una matrice bidimensionale, TimerSP(x,y), risparmieresti un bel pò di variabili.

    Nei timers:

    codice:
    TimerSxPy - = 1   ' TimerSP(x,y) - = 1 se matrice

    Quando aggiungi Est:

    codice:
    TimerSxPy + = Est  'non può non funzionare

    OGNI VOLTA
    che si modifica un valore TimerSxPy (cioè che togli 1 o aggiungi Est):

    codice:
    LBTimerSxPy = String.Format("{0:00}:{1:00}:{2:00}", TimerSxPy / 3600), 
                                          Int((TimerSxPy / 60) Mod 60), TimerSxPy Mod 60))

    Per visualizzare nelle label il tempo in ore, minuti e secondi. Se invece che integer le variabili fossero DateTime il codice di visualizzazione sarebbe ancora più semplice, ma la gestione un attimino più complessa.

    Un codice così NON PUO' non funzionare, a meno di errori successivi di codice, come già detto.
    Ultima modifica di eziogsv; 08-01-2018 a 19:10

  3. #23
    Utente di HTML.it L'avatar di e444
    Registrato dal
    Jan 2012
    Messaggi
    37
    Senti....

    proviamo a tagliare la testa al toro...
    faccio un programma nuovo, un form, una label, 3 radio botton ed un pulsante... e vediamo se il codice funziona... in caso positivo allora significa che l'errore è dovuto da altro e non dal codice stesso.

    Pure io lo so che NON può non funzionare... ma sta di fatto che a meno di 3500 secondi, estendendo il timer di 3600, invece di partire da 7100 a scendere, mi riparte da 7200... e non è possibile!.

    Faccio sto programma e vediamo...

  4. #24
    Già te lo dissi e lo ripeto: se PRIMA del codice sotto riportato (è un esempio, ovviamente) tu scrivessi:

    codice:
    Debug.Print(LBTimerS1P1.Text & " - " &  FormPrincipale.LBTimerS1P2.Text & " - " & Est.ToString
    LBTimerS1P1.Text=(Cint(FormPrincipale.LBTimerS1P2.Text)+Est).ToString

    Sono pronto a tagliarmi gli zebedei (si fa per dire ) che il debug confermerebbe che mentre LBTimerS1P1.Tex = "3500"... FormPrincipale.LBTimerS1P2.Text = "3600" per cui va da se che la somma è 7200 e non 7100.

    Continuo a pensare che il problema derivi dal fatto che "prendi" i valori da Label (oltretutto di diversi form = errore in agguato) e non da una singola variabile Public (cioè valida per le rispettive Label di tutti i form).

    Poi... vedi te.
    Ultima modifica di eziogsv; 08-01-2018 a 22:38

  5. #25
    Utente di HTML.it L'avatar di e444
    Registrato dal
    Jan 2012
    Messaggi
    37
    Come appunto volevasi dimostrare, il sistema funziona benissimo e con un codice elementare!...

    57796457UmW.jpg

    A questo punto mi viene da pensa che nel programma l'accredito dei secondi è influenzato da qualcosa che mi sta sfuggendo... ma non riesco a capire cosa...

    Ora provo ad inserire questa stringa... vedo un po che mi dice...

    Debug.Print(LBTimerS1P1.Text&" - "&FormPrincipale.LBTimerS1P2.Text&" - "&Est.ToString
    Ultima modifica di e444; 09-01-2018 a 01:28

  6. #26
    Utente di HTML.it L'avatar di e444
    Registrato dal
    Jan 2012
    Messaggi
    37
    Porca vacca.... forse ho capito....

    faccio una prova...

  7. #27
    Utente di HTML.it L'avatar di e444
    Registrato dal
    Jan 2012
    Messaggi
    37
    Allora...
    Si... ho capito dove stava il problema.

    La stringa di comando "FormColloqui.LBTimerS1P1.Text += Est" va benissimo... in quanto il problema non stava nel calcolo della somma... ma il casino me lo creava la ComboBox.

    La combobox di fianco alla textbox, serve per stabilire, prima dell'avvio del colloquio, quante ore esso deve durare, quindi, l'operatore selezionava le voci da 1 a 4.
    Selezionando la voce 1, modifica la label a "3600";
    Selezionando la voce 2, modifica la label a "7200";
    Selezionando la voce 3, modifica la label a "10800" e
    Selezionando la voce 4, modifica la label a "14400".

    Quindi che succedeva, quando l'operatore eseguiva l'evento click sul bottone per estendere la durata, oltre a sommare, a questo punto presumo nel modo corretto i valori, lui modificava, giustamente, pure la proprietà text della combobox, perche se un colloquio è partito ad 1 ora, e poi ne fa 2, devono essere poi registrare in apposita stampa il numero "2" e non più "1".
    Quindi, oltre a sommare i valori, si andava a modificare pure l'item della combobox.
    Ma che succede se viene modificato l'item della combobox?? che, come ho appena detto, viene adeguata la proprietà text della label... ergo, il programma si comportava esattamente come doveva e quindi impostava la proprietà text della label a "7200".

    Mi ero concentrato su quel "7200" come se fosse un errore di somma o di calcolo!... quando invece il problema era dettato da una impostazione che il programma aveva come compito di eseguire!.

    Certo che a programmare c'è da diventare scemi certe volte!

    Come ho risolto il problema?... nel modo più semplice possibile.

    Siccome quando si avvia il colloquio, sia la textbox che la combobox si disabilitano per impedire la modifica accidentale dei dati, mi è bastato inserire un "If/EndIf" nella combobox in questo modo:

    codice:
    Public Sub CBSala1Posto1_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles CBSala1Posto1.SelectedIndexChanged
            If CBSala1Posto1.Enabled = True Then
                Select Case CBSala1Posto1.SelectedIndex
                    Case 0
                        LBTimerS1P1.Text = t1
                    Case 1
                        LBTimerS1P1.Text = t2
                    Case 2
                        LBTimerS1P1.Text = t3
                    Case 3
                        LBTimerS1P1.Text = t4
                End Select
            End If
    End Sub
    In questo modo, essendo la combobox disabilitata, posso modificarne la proprietà text senza che questa agisca sulla label.

    Problema risolto


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.