Italian AnotherDatePicker v2.00 problema

Ginofelino

Member
Licensed User
Ciao a tutti, mi sono infognato in un problema inerente AnotherDatePicker, seguendo un corso su udemy giusto per capire un po' come funziona b4a. Sono un paio di giorni che cerco di capire perche' AnotherDatePicker non mi passa le date scelte nella sua sub
Sub AnotherDayPicker1_Closed (Cancelled As Boolean, Date As Long):
ho provato a mettere un log a ad attivare un tasto all'inizio della sub ma senza successo, quindi presumo che si fermi prima.

Ho provato altre versioni di AnotherDatePicker ma il problema non si e' risolto, chiedo venia ma sono veramente scarso in materia, ma ho tanta voglia di imparare.

la sub del picker e' questa:

su picker:
Sub AnotherDayPicker1_Closed (Cancelled As Boolean, Date As Long)
   
'okButton.Enabled = True
   
    Dim Today As Long = DateTime.DateParse(DateTime.Date(DateTime.Now))  'variabile per contenere data e ora si usa variabile di tipo long
    Date = DateTime.DateParse(DateTime.Date(Date))

        Dim year As Int = DateTime.GetYear(Date)
        Dim month As Int = DateTime.GetMonth(Date)
        Dim day As Int = DateTime.GetDayOfMonth(Date)
'Log(Date)
        Main.insertedDate = day & "/" & month & "/" & year
   
    If Cancelled = False And Date < Today Then
       
        Dim year As Int = DateTime.GetYear(Date)
        Dim month As Int = DateTime.GetMonth(Date)
        Dim day As Int = DateTime.GetDayOfMonth(Date)

        If Main.language = "it" Or Main.language = "es" Then
           
            Main.insertedDate = day & "/" & month & "/" & year
                   
        Else
                       
            Main.insertedDate = month & "/" & day & "/" & year
           
            Log("Risultato: " & Main.insertedDate)
        End If
       
        okButton.Enabled = True
           
    Else
           
        'avviso che la da deve essere precedente a oggi
           
        If Main.language = "it" Then
           
            Msgbox("Devi inserire solo una data anteriore a oggi", "ATTENZIONE!")
                   
        Else If Main.language = "es" Then
                   
            Msgbox("Solo tienes que introducir una fecha anterior a hoy", "¡ATENCIÓN!")
           
        Else
           
            Msgbox("You must enter only a date before to today "," ATTENTION!")
        End If
   
        okButton.Enabled = False
   
    End If

End Sub


picker1.png


ps: a questo punto quando si preme il tasto ok dovrebbe scrivere la data su un txt, il file viene creato ma e' vuoto ..
 
Last edited:

sirjo66

Well-Known Member
Licensed User
Longtime User
B4X:
Msgbox("Por favor introducir una fecha antes de hoy", "¡ATENCIÓN!")

Msgbox("Please insert a date before today "," ATTENTION!")
 

Ginofelino

Member
Licensed User
oddio .. sirjo che intendi? ho letto che msgbox non si usa piu e in effetti mi da un warning ma e' legato al fatto che non mi passa la data??? e comunque tutta la parte l'ho commentata.
 

Sagenut

Expert
Licensed User
Longtime User
Se possibile allega quì il tuo progetto così possiamo controllarlo meglio.
Non sappiamo se il tuo progetto è un Default (Activity) o una B4XPages.
Per adesso per esportarlo prova con il comando Export as Zip che trovi in alto nel Menù File, e allega lo ZIP che ne verrà fuori quì nel tuo prossimo post.
 

Sagenut

Expert
Licensed User
Longtime User
Queste due righe mi sembrano strane
B4X:
Dim Today As Long = DateTime.DateParse(DateTime.Date(DateTime.Now))  'variabile per contenere data e ora si usa variabile di tipo long
Date = DateTime.DateParse(DateTime.Date(Date))
Perchè a meno che non sbagli io per avere la data odierna del momento è sufficiente
B4X:
Dim Today as Long = DateTime.Now
Poi modifichi la variabile Date che è quella che dovrebbe averti passato AnotherDatePicker con già il Long della data selezionata dal calendario..... quindi potresti compromettere qualcosa modificando quella variabile anzichè solo utilizzarla.
Ma ho dato un'occhiata veloce e potrei avere visto male.
 

Ginofelino

Member
Licensed User
Grazie Sagenut come mi approvano il reply (sono niubbo e devo aspettare l'approvazione al reply del moderatore) allego il progetto cmq controllo subito ... intanto grazie mille per la risposta
 

Ginofelino

Member
Licensed User
Ok il progetto e' questo, le immagini sono sgranate altrimenti eccedeva nel peso ...
 

Attachments

  • CalcolatoreBioritmo 1.1.zip
    139.8 KB · Views: 93

LucaMs

Expert
Licensed User
Longtime User
B4X:
Sub AnotherDayPicker1_Closed (Cancelled As Boolean, Date As Long)
    If Cancelled Then Return ' se ha cancellato, non fare alcunché.

    If Date < DateTime.Now Then ' la data selezionata dev'essere precedente a quella odierna (perché non anche uguale?)

        Main.insertedDate = Date ' Dichiara insertedDate come Long, non serve che sia una stringa
        okButton.Enabled = True

    Else

        okButton.Enabled = False

        If Main.language = "it" Then
            Msgbox("Devi inserire solo una data anteriore a oggi", "ATTENZIONE!")
        Else If Main.language = "es" Then
            Msgbox("Solo tienes que introducir una fecha anterior a hoy", "¡ATENCIÓN!")
        Else
            Msgbox("You must enter only a date before to today "," ATTENTION!")
        End If

    End If

End Sub

Una volta ottenuta la data, ovvero impostata la Main.insertedDate, salvala sul file di testo com'è, ovvero un Long, se il file deve essere utilizzato solo dall'app e non essere visibile all'utente; se invece deve esserlo, scrivici DateTime.Date(Main.insertedDate).


Non so se il corso che hai seguito tratti anche dei progetti di tipo B4XPages ma ti suggerirei di creare sempre progetti di questo tipo.

Nota che dovresti usare MsgboxAsync invece di MsgBox.
 

Ginofelino

Member
Licensed User
GRazie Luca, grazie tutti .. mi avete messo sulla giusta strada, dopo solo 3 giorni ci sono riuscito ora scrive la data nel txt .. ma sono ancora in alto mare .. :)
 

Sagenut

Expert
Licensed User
Longtime User
Grazie Sagenut come mi approvano il reply (sono niubbo e devo aspettare l'approvazione al reply del moderatore) allego il progetto cmq controllo subito ... intanto grazie mille per la risposta
E' solo un consiglio ma:
Per rimuovere l'attesa della pubblicazione dei tuoi messaggi è sufficiente fare una donazione allo sviluppo di B4X.
Quì trovi il link dove poterla fare
Donazione B4A
Nel caso ricorda di farla indicando la stessa email con cui ti sei registrato nel forum se possibile così ti attivano subito.
In questo modo diventerai un Licensed User e i tuoi messaggi appariranno subito.
E sarà molto più facile e veloce per tutti aiutarti e per te usare il Forum pienamente.
E risolverai problemi anche in pochi minuti anzichè in giorni .
 

Sagenut

Expert
Licensed User
Longtime User
Adesso vedrai che sarà tutto molto, molto più veloce con le tue domande.
 

Ginofelino

Member
Licensed User
Comunque mi e' servito a scervellarmi per capire come passare la data (in precedenza non mi scriveva il txt sul cell con il comando DirRootExeternal ma ho capito poi come fare grazie al tutorial di Erel sui privilegi di scrittura), ho un po' snaturato l'activity originale del corso che e' del 2018 basata su una vecchia versione di b4a ma il risultato e' il medesimo. Per esempio ora devo fare un controllo per sapere se la data e' stata inserita correttamente nel txt con il comando File.Exist controllo se ce il file ma per controllare se nel file esiste la data? perche' a me il file lo creava ma non mi scriveva la data.
Cmq per ora piccoli passi magari un giorno si correra' .. daje ;)
 

Sagenut

Expert
Licensed User
Longtime User
Scarico il tuo esempio e lo guardo.
 

Sagenut

Expert
Licensed User
Longtime User
Ho un imprevisto è devo mollare per un pò.
Per controllare velocemente, dopo aver salvato, farei qualcosa tipo
B4X:
Dim controllo as String = File.ReadString(Main.shared, "CalcolatoreBioritmo/Date.txt")
If controllo = Main.insertedDate then
    log("OK")
Else
    log("DATA NON SCRITTA")
End If
 

Ginofelino

Member
Licensed User
Grazie Sagenut, ma e' una parte che ancora non ho scritto, cioe dopo che hai inserito la data di nascita ti riporta nella activity bioritmo e se il file data.txt esiste e ed e' popolato allora ti mostra i tasti di modifica data di nascita altrimenti ti ripropone il tasto inserisci .. mannaggia devo andare a montare un ssd sul portatile di un amico torno in serata grazie mille Sage ho letto il reply stasera provo ;)
 

Sagenut

Expert
Licensed User
Longtime User
Più tardi controllo meglio quel progetto.
Come studio va bene, però ad oggi e meglio non usare i progetti Default con le Activity ma passare subito alle B4XPages.
Il tempo di capirle e ti risparmierai molti problemi che invece hai con le Activity.
 

Sagenut

Expert
Licensed User
Longtime User
Stò dando un'occhiata veloce al tuo progetto.
Con le immagini sgranate devo andare a fantasia. :eek:
Non sò se nel frattempo hai fatto progressi ma un errore nel tuo progetto per cui non ottieni la data è che la Sub ha il nome errato.
Nel tuo progetto la Sub di chiusura di AnotherDatePicker si chiama
B4X:
Sub AnotherDayPicker1_Closed (Cancelled As Boolean, Date As Long)
hai scritto AnotherDayPicker1, mentre il nome corretto è
B4X:
Private Sub AnotherDatePicker1_Closed (Cancelled As Boolean, Date As Long)
con AnotherDatePicker1.
Aspettiamo altre notizie se questo nel frattempo ti aiuta a sbloccarti.
 
Top