Italian Menu grafico

Star-Dust

Expert
Licensed User
Longtime User
In una View(panel) la funzione GetView(n) restituisce l'oggetto View (numero n) agganciato a view(Panel)

Il numero totale delle view agganciate lo ottieni con NumberOfViews. Le view sono numerate partendo da zero e quindi l'ultima è NumberOfViews -1

Vedi questo per maggiori informazioni:
https://www.b4x.com/android/help/views.html#panel
 

LucaMs

Expert
Licensed User
Longtime User
Se volessi aggiungere un altro panello esempio prezzo avevo pensato
In realtà, se ho capito bene senza leggere bene :D vuoi aggiungere un altro elemento, un'altra view ad un pannello.
Quindi, come ha giustamente scritto @udg, per RECUPERARLO (quindi per poterne leggere/modificare successivamente le proprietà) dovrai usare GetView, che è un metodo dell'oggetto Panel, come nel codice nel post #18, dove hai:

' Ottiene la prima view (indice 0) del pannello bck, che, nel tuo caso, è di tipo ImageView
Dim image AsImageView = bckp.GetView(0)
...
' Ottiene la seconda view (indice 1) del pannello bck, che, nel tuo caso, è di tipo Label
Dim title As Label = bckp.GetView(1)
...
...

Quindi, aggiungendo una EditText o una Label, che sarà la quarta view nel pannello, la otterrai nello stesso modo:
Dim Prezzo As Label = bckp.GetView(3) 'nuova label posta dopo immagine, title e subtitle
 

LucaMs

Expert
Licensed User
Longtime User
Ops...
stavo allegando questa immagine:

upload_2017-10-19_11-44-45.png


e scrivendo:
"mentre scrivevo questa risposta, la tua sopra, @Star-Dust, non c'era, è comparsa immediatamente dopo la pressione di "Post Reply" (se l'avessi vista avrei risparmiato "tanta fatica" :p).

Invece... c'era già, ma nella pagina successiva (l'alert mi ha portato in questo punto e non mi sono accorto che l'argomento proseguiva nella pagina successiva :D).


[Lo specifico perché appena aperto b4x, oggi, già qualcosa mi ha infastidito; non qui nel forum italiano.
Meglio che io utilizzi quello internazionale solo per chiedere, dare aiuti non vale davvero la pena]
 

Star-Dust

Expert
Licensed User
Longtime User
Anche io un po ho rallentato. Sul forum, rispondo solo qualche domanda che mi stimola e preferibilmente in italiano (quando riesco a scriverlo correttamente).

Di fatto il forum è di proprietà di AnyWhere SW e principalmente le risposte le devono dare loro, il linguaggio è loro, il forum è loro e l'obiettivo è dare l'assistenza ai clienti. Io non c'entro in tutto questo..
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
Teoricamente è giusto dare una mano agli altri (il che significa anche dare una mano ad Anywhere Software) ed in passato, come già detto, scrivevo parecchi post al giorno, molto meno stupidi ed inutili di quelli che scrivo adesso, perfino testando dei progetti d'esempio da allegare.

Tutto tempo sprecato, soprattutto quando poi vedi questa piccola serie di post, conclusa con uno di Erel con tanto di qualche Like:
https://www.b4x.com/android/forum/t...rror-with-my-invaders-game.85112/#post-539432

Mi sono ripromesso (chissà perché si dice RIpromesso, boh) più volte di evitare di sprecare tempo in quel modo, ma stavolta sarà così.
Aiutini solo nel forum italiano e basta.

[e solo a pagamento, minimo 500€ a risposta :p]
 

Star-Dust

Expert
Licensed User
Longtime User
Anche a me piace dare una mano. Ma ribadisco che é una responsabilità altrui, io senza impegno ogni tanto posso aiutare qualcuno.
 

LucaMs

Expert
Licensed User
Longtime User
Nuova procedura che seguirò da oggi:

1) vedere se ci siano post nel forum italiano (e rispondere, se posso);
2) vedere se ci siano nuovi THREAD di Erel (nel caso ci siano novità o tutorial);
3) marcare tutti i thread come già letti :)


P.S. ancora più importante: 4) chiudere B4X.com !!!
 

Star-Dust

Expert
Licensed User
Longtime User
E' la mia vecchia procedura questa.... non si butta niente in italia
 

LucaMs

Expert
Licensed User
Longtime User
Il mio like vale per la prima parte. Per la seconda, è ora di finirla di darci addosso; il nostro Paese (RAINEW24, leggi 'sto post :p) è probabilmente tra i migliori se non il migliore al Mondo, compresa la gente che ci vive.
 

Star-Dust

Expert
Licensed User
Longtime User
Ci devo pensare :confused::confused::confused:

Tu sei milionario per questo dici così. Noi morti di fame e di sonno che cerchiamo di sbarcare il lunatico ... la pensiamo diversamente
 
D

Deleted member 103

Guest
@LucaMs
@Star-Dust
Come avrete notato, io scrivo poco, anzi pochissimo. Questo perchè non ho mai scritto volentieri, neanche quando andavo a scuola. :)
Però mi diverto molto a leggere, quando ho tempo, i vostri Post. ;)
 

udg

Expert
Licensed User
Longtime User
UHUUUUUHHH
@LucaMs : avevo pubblicato la mia richiesta nell'area B4J per avere massima visibilità..
La questione di base era se conveniva o meno prevedere un campo BLOB in cui "codificare" dei dati variabili in funzione del loro tipo. L'alternativa era quella di servirsi di tabelle dedicate, una per tipo.
Nel mio caso, non dovendo effettuare ricerche sui dati variabili, le due scelte tendevano ad equivalersi. La prima mi pare più efficiente (tabella unica, niente Join), mentre la seconda mi pare più elegante (e, volendo, lascerebbe aperta la porta a quelle ricerche sui dati che oggi non mi interessano).
 

ken87

Active Member
Licensed User
Longtime User
Ciao ho provato ad aggiundere la label nel activity (vedi allegato)
Inserito il codice:
B4X:
Dim Prezzo As Label = bckp.GetView(3) 'nuova label posta dopo immagine, title e subtitle
        Prezzo.Text ="8 euro"

Ma va in errore.
Sicuramente mi manca qualcosa che non so.
Cosa ho sbagliato?
Potete postare un esempio con activity?

Posto anche il cdice intero:
B4X:
#Region  Project Attributes
    #ApplicationLabel: B4A Example
    #VersionCode: 1
    #VersionName:
    'SupportedOrientations possible values: unspecified, landscape or portrait.
    #SupportedOrientations: unspecified
    #CanInstallToExternalStorage: False
#End Region

#Region  Activity Attributes
    #FullScreen: False
    #IncludeTitle: True
#End Region

Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'These variables can be accessed from all modules.
End Sub

Sub Globals
    'These global variables will be redeclared each time the activity is created.
    'These variables can only be accessed from this module.
    Private clvGrid As CustomListView150
End Sub

Sub Activity_Create(FirstTime As Boolean)
    'Do not forget to load the layout file created with the visual designer. For example:
    Activity.LoadLayout("lytGrid")
    MakeGrid
End Sub

Sub Activity_Resume
End Sub

Sub Activity_Pause (UserClosed As Boolean)
End Sub

Sub MakeGrid
    Dim cellheight As Int = (clvGrid.asview.width - 4dip) /3
    'Repeat for as many records you have to display in the CLV. Note: I set it to 5 just to fill a bit the CLV.
    For row = 0 To 5
        'load the 3 panels layout to fill each clv's row.
        Dim rowpnl As Panel
        rowpnl.Initialize("")
        rowpnl.LoadLayout("lytGridRow")
        Dim bckpnl As Panel  = rowpnl.GetView(0)    'layout has a backpanel as itd foundation
      
        'Left cell panel
        Dim cellpnl As Panel = bckpnl.getview(0) 'left cell
        cellpnl.LoadLayout("lytCell")
        'we should load DB data in cellpnl's items, but here we don't so nothing is shown
      
        Dim bckp As Panel = cellpnl.GetView(0)
        Dim image As ImageView = bckp.GetView(0)    'image view
        image.Bitmap = LoadBitmapSample(File.DirAssets,"pizza.png",bckp.Width, bckp.Height/2)
        Dim title As Label = bckp.GetView(1)        'title
        title.Text = "Pizza Margherita  7 €"
        Dim Stitle As Label = bckp.GetView(2)        'subtitle
        Stitle.Text = "Sugo,Mozarella"
        Dim Prezzo As Label = bckp.GetView(3) 'nuova label posta dopo immagine, title e subtitle
        Prezzo.Text ="8 euro"
      
        'Center cell panel
        Dim cellpnl As Panel = bckpnl.getview(1) 'center cell
        cellpnl.LoadLayout("lytCell")
        Dim bckp As Panel = cellpnl.GetView(0)
        Dim image As ImageView = bckp.GetView(0)    'image view
        image.Bitmap = LoadBitmapSample(File.DirAssets,"pizw.png",bckp.Width, bckp.Height/2)
        Dim title As Label = bckp.GetView(1)        'title
        title.Text = "Pizza Wurstel 8 € "
        Dim Stitle As Label = bckp.GetView(2)        'subtitle
        Stitle.Text = "Pomodoro ,mozarella, Wurstel"
'        Stitle.Ellipsize = "END"
        'load Quantity, etc data too
      
        'Right cell panel
        Dim cellpnl As Panel = bckpnl.getview(2) 'right cell
        cellpnl.LoadLayout("lytCell")
        Dim bckp As Panel = cellpnl.GetView(0)
        Dim image As ImageView = bckp.GetView(0)    'image view
        image.Bitmap = LoadBitmapSample(File.DirAssets,"pizsal.png",bckp.Width, bckp.Height/2)
        Dim title As Label = bckp.GetView(1)        'title
        title.Text = "Pizza Sasisccia secca 5 €"
        Dim Stitle As Label = bckp.GetView(2)        'subtitle
        Stitle.Text = "Pomodoro ,mozarella, Sasiccia"
        'load Subtitle, Quantity, etc data too
      
        clvGrid.Add(rowpnl, cellheight, row)    'add the Row Panel to the CLV
    Next
End Sub


Sub ivIncr_Click
    Dim iv As ImageView = Sender
    Dim row As Int =clvGrid.GetItemFromView(iv)
    Dim rowpnl As Panel = clvGrid.GetPanel(row)
    Dim bckpnl As Panel  = rowpnl.GetView(0)        'layout has a backpanel as its foundation
    For i = 0 To bckpnl.NumberOfViews - 1
        Dim cellpnl As Panel = bckpnl.GetView(i)
        Dim bckp As Panel = cellpnl.GetView(0)
        Dim iv1 As ImageView = bckp.GetView(5)        'increment icon
        If iv1 = Sender Then
            Dim lblqty As Label = bckp.GetView(4)    'label for quantity
            Dim qty As Int = lblqty.Text
            qty = qty + 1
            lblqty.Text = qty
            Exit
        End If
    Next
End Sub

Sub ivDecr_Click
    Dim iv As ImageView = Sender
    Dim row As Int =clvGrid.GetItemFromView(iv)
    Dim rowpnl As Panel = clvGrid.GetPanel(row)
    Dim bckpnl As Panel  = rowpnl.GetView(0)        'layout has a backpanel as its foundation
    For i = 0 To bckpnl.NumberOfViews - 1
        Dim cellpnl As Panel = bckpnl.GetView(i)
        Dim bckp As Panel = cellpnl.GetView(0)
        Dim iv1 As ImageView = bckp.GetView(3)        'decrement icon
        If iv1 = Sender Then
            Dim lblqty As Label = bckp.GetView(4)    'label for quantity
            Dim qty As Int = lblqty.Text
            qty = qty - 1
            If qty < 0 Then qty = 0
            lblqty.Text = qty
            Exit
        End If
    Next
End Sub
 

Attachments

  • Immagine.png
    Immagine.png
    13.1 KB · Views: 231
  • lytcell.bal
    4.6 KB · Views: 192
Last edited:

LucaMs

Expert
Licensed User
Longtime User
UHUUUUUHHH
@LucaMs : avevo pubblicato la mia richiesta nell'area B4J per avere massima visibilità..
La questione di base era se conveniva o meno prevedere un campo BLOB in cui "codificare" dei dati variabili in funzione del loro tipo. L'alternativa era quella di servirsi di tabelle dedicate, una per tipo.
Nel mio caso, non dovendo effettuare ricerche sui dati variabili, le due scelte tendevano ad equivalersi. La prima mi pare più efficiente (tabella unica, niente Join), mentre la seconda mi pare più elegante (e, volendo, lascerebbe aperta la porta a quelle ricerche sui dati che oggi non mi interessano).
Se IL neurone si sveglia, provo a leggere a perfino a rispondere :D

HHHUUUHHH
 

udg

Expert
Licensed User
Longtime User
Ciao @ken87 ,
a giudicare da "Immagine.png", la label che aggiungi per il prezzo potrebbe avere indice 6 (invece di 3) questo perchè segue la terna decrementa-quantità-incrementa.
Se invece ha riordinato le cose nella TreeView del Designer (e quindi hai immagine, titolo, sottotitolo, prezzo, decrementa, quantità, incrementa) allora l'indice 3 è corretto ma sono da correggere quelli delle sub di incremento/decremento.
 

LucaMs

Expert
Licensed User
Longtime User
UHUUUUUHHH
@LucaMs : avevo pubblicato la mia richiesta nell'area B4J per avere massima visibilità..
La questione di base era se conveniva o meno prevedere un campo BLOB in cui "codificare" dei dati variabili in funzione del loro tipo. L'alternativa era quella di servirsi di tabelle dedicate, una per tipo.
Nel mio caso, non dovendo effettuare ricerche sui dati variabili, le due scelte tendevano ad equivalersi. La prima mi pare più efficiente (tabella unica, niente Join), mentre la seconda mi pare più elegante (e, volendo, lascerebbe aperta la porta a quelle ricerche sui dati che oggi non mi interessano).
Leggere il "post originale" mi aveva fuorviato; non lo ricordo a memoria (OVVIAMENTE :p) ma sembra che tu parlassi anche di tabelle legate tra loro 1:1.

La prima ha anche lo svantaggio della velocità (caricare dati binary).
 
Top