Italian B4J - blob in B4XView

ivanomonti

Expert
Licensed User
Longtime User
@LucaMs lo so in effetti tutti i pane B4XView hanno il loro canvas, ma mi chiedevo (motivo del post) perché esiste la funzione .SetImage sui nuovi object B4XView? come si Usa?
 

LucaMs

Expert
Licensed User
Longtime User
@LucaMs lo so in effetti tutti i pane B4XView hanno il loro canvas, ma mi chiedevo (motivo del post) perché esiste la funzione .SetImage sui nuovi object B4XView? come si Usa?
1589305591680.png


"Prima di utilizzare il prodotto, leggere attentamente le avvertenze" 😄

Help contestuale. Dice che, in ambiente B4J, funziona solo se la B4XView è un wrapper di una ImageView B4J ("Supported types" - tipi supportati, accettati, validi).
B4XView, in generale, quello è, un wrapper, qualcosa che "avvolge" una View "nativa", diciamo uno strato superiore?
 

ivanomonti

Expert
Licensed User
Longtime User
@LucaMs , quindi

imageview.SetImage(lsTemp.Get(14)) èperfetto
b4xView.SetImage(lsTemp.Get(14)) non può esistere (crash)

trovo questo ingannevole non credi
 

Star-Dust

Expert
Licensed User
Longtime User
@LucaMs, lo so ma quel codice che ho postato da risultati con la trasformazione da db a imageview

B4X:
Sub imageblobget(value As Object) As Image
    Try
        Dim Buffer() As Byte
        Buffer = value
        Dim InputStream1 As InputStream
        InputStream1.InitializeFromBytesArray(Buffer, 0, Buffer.Length)
        Dim Bitmap1 As Image
        Bitmap1.Initialize2(InputStream1)
        InputStream1.Close
        Return Bitmap1
    Catch
        Log(LastException)
    End Try
End Sub

Chiuedo un consiglio perche non mi è chiara la cosa in zucca, dovrebbe essere molto più semplice ma in realtà la trovo un poco bordellain, al momento gira tutto alla perfezione ma avendo visto che in .SetBitmap in B4XView che in ImageView funziona perfettamente, qui mi mi fa crash, a questo punto ho fatto un codice per una cosa e un codice per l'altra, ma trovo la cosa una CAGATA che vorrei sistemare.

B4X:
Dim imgw As ImageView
                imgw.Initialize("")
                imgw.SetImage(imvalue.Get(14))
                imgw.PrefHeight = 24
                imgw.PrefWidth = 24
                SetGraphic(bt, imgw)

qui invece devo aggiungere imageview su un pannello cosa che vorrei fare nel pannello senza imageview

B4X:
If v Is B4XView And v.Tag = "icona" Then
                Dim pn As Pane = v
                If lsTemp.Get(14) <> Null Then
                    Try
                        Log(lsTemp.Get(14))
                        Dim imgw As ImageView
                        imgw.Initialize("")
                        imgw.SetImage(lsTemp.Get(14))
                        imgw.PrefHeight = 128
                        imgw.PrefWidth = 128
                        pn.AddNode(imgw,0,0,128,128)
                        '------------------------------------------
                    Catch
                        Log(LastException)
                    End Try
                End If
            End If

Ora che @Star-Dust ha sollevato il "NO NON VA BENE" voglio capire
La sub imageblobget è corretta perche trasferisce i byte nell'immagine con InputStream non direttamente con SetBitmap. L'array va passato a immagine e poi a SetBitmap.
Quindi gia conosci il metodo corretto, perché dai diversamente?
Perché trovi strano che tu dica che sia sbagliato.
 

LucaMs

Expert
Licensed User
Longtime User
@LucaMs , quindi

imageview.SetImage(lsTemp.Get(14)) èperfetto
b4xView.SetImage(lsTemp.Get(14)) non può esistere (crash)

trovo questo ingannevole non credi
Si, capisco. Un modo per non rinco...irsi è usare dei prefissi adatti.

Ad esempio, se hai un Pane "contenuto" in una B4XView, potresti chiamarlo xpnArticolo, ad esempio, in cui x ti ricorda che è una B4XView, pn che è un Pane.
 

ivanomonti

Expert
Licensed User
Longtime User
Si, capisco. Un modo per non rinco...irsi è usare dei prefissi adatti.

Ad esempio, se hai un Pane "contenuto" in una B4XView, potresti chiamarlo xpnArticolo, ad esempio, in cui x ti ricorda che è una B4XView, pn che è un Pane.
si lascia stare i prefissi che li ho messi per dividere le situazioni, ciò che dico e che i nuovi b4xview non li vedo ancora in modo chiaro, hanno un botto di proprietà perchè possono prendere in carico tanti oggetti nativi ma poi quando scrivi il codice e ti trovi .text in un pane evidente che non avrà successo quel txt
 

Star-Dust

Expert
Licensed User
Longtime User
Comunque non interverro più.
 

LucaMs

Expert
Licensed User
Longtime User
si lascia stare i prefissi che li ho messi per dividere le situazioni, ciò che dico e che i nuovi b4xview non li vedo ancora in modo chiaro, hanno un botto di proprietà perchè possono prendere in carico tanti oggetti nativi ma poi quando scrivi il codice e ti trovi .text in un pane evidente che non avrà successo quel txt
Per questo se usi un prefisso adatto ti ricorda che quella B4XView non è una TextField o TextArea etc.
E per questo è utilissimo l'help contestuale.
 

ivanomonti

Expert
Licensed User
Longtime User
Per questo se usi un prefisso adatto ti ricorda che quella B4XView non è una TextField o TextArea etc.
E per questo è utilissimo l'help contestuale.
@LucaMs lo uso, ma la domanda rimane... sei obligato a volte ritrasformare l'oggetto per riprendere delle proprietà dell'oggetto nativo, comunquesia il pane da designer gli puoi dare un immagine o un colore, cosa che potresti fare anche da codice, ma al momento che io sappia (IO) non è così banale come il designer
 

Star-Dust

Expert
Licensed User
Longtime User
Perché non "ti ascolta"? Ormai ci sono abituato 😄 (e in effetti anch'io per un po' non ho proprio risposto... fino a poco fa, esattamente).
Non solo per questo, ma anche perché sono 3 settimane che lotto con altri per fargli capire delle cose informatiche senza riuscirci... e ho fatto il pieno 😂 😂 😂 😂

Ho raggiunto il mio limite. Buona cena a tutti
 

LucaMs

Expert
Licensed User
Longtime User
@LucaMs lo uso, ma la domanda rimane... sei obligato a volte ritrasformare l'oggetto per riprendere delle proprietà dell'oggetto nativo, comunquesia il pane da designer gli puoi dare un immagine o un colore, cosa che potresti fare anche da codice, ma al momento che io sappia (IO) non è così banale come il designer
Nel Designer c'è il trucco: il Pane... non è solo un Pane - non ricordo se ci sia sopra una ImageView o un Canvas, ma è una cosa gestita appunto dal Designer.
 

LucaMs

Expert
Licensed User
Longtime User
Nel Designer c'è il trucco: il Pane... non è solo un Pane - non ricordo se ci sia sopra una ImageView o un Canvas, ma è una cosa gestita appunto dal Designer.
Purtroppo non era una battuta, è davvero così.
Se crei un Pane da Designer e poi da codice gli "chiedi" quanti "figli" abbia, vedrai che non ti "risponderà" zero, ma 1, mentre se lo crei da codice non sarà così.
 

ivanomonti

Expert
Licensed User
Longtime User
Beh, non trovo il post in cui Erel lo disse ma è così, è il motivo per cui da codice non puoi impostare un'immagine in un Pane e da Designer sì.
si non è un problema tanto l'immagine la metti aggiungendo la imageview o il canvas
 

LucaMs

Expert
Licensed User
Longtime User
Era per dire la stranezza che nel Designer puoi impostare una Bitmap in un Pane, da codice no.
Il motivo è che il Designer ci aggiunge uno "strato", non ricordo se un Canvas o una ImageView.
La cosa strana è che NumberOfNodes ti restituisce ugualmente zero.
 
Top