Autore Topic: Array di controlli  (Letto 4174 volte)

Offline luca.decarlo

  • Gamberetto
  • *
  • Post: 49
    • Mostra profilo
Array di controlli
« il: 10 Dicembre 2015, 20:59:05 »
Forse sono ancora legato ai vecchi metodi di programmazione, ma dovrei automatizzare dei processi e mi risultavano comodi gli array per i controlli, es

Codice: [Seleziona]
For x = 1 to xxx
    txtCampi[x].Enabled = False
Next

Si può fare qualcosa di simile?

Grazie

Luca

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Re:Array di controlli
« Risposta #1 il: 10 Dicembre 2015, 21:07:27 »
Usi dei normali array che contengono il tipo di oggetto che ti serve:

Private mioarray[20] As Label

oppure dentro una procedura:

Dim mioarray As New Label[20]

Poi fai tutto quello che vuoi.
Oppure usando i gruppi puoi raggruppare insieme oggetti di tipo differente.
« Ultima modifica: 10 Dicembre 2015, 23:05:28 da Top Fuel »
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.720
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Array di controlli
« Risposta #2 il: 11 Dicembre 2015, 00:08:16 »
A quanto già ben esposto da Top Fuel vorrei semplicemente aggiungere la pagina della nostra WIKI:

http://www.gambas-it.org/wiki/index.php?title=Creare_array_di_oggetti
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline luca.decarlo

  • Gamberetto
  • *
  • Post: 49
    • Mostra profilo
Re:Array di controlli
« Risposta #3 il: 11 Dicembre 2015, 12:03:51 »
Grazie Ragazzi,

Tutto esaustivo (spero)

Provo ad implementare!!!

Luca

Offline luca.decarlo

  • Gamberetto
  • *
  • Post: 49
    • Mostra profilo
Re:Array di controlli
« Risposta #4 il: 12 Dicembre 2015, 13:03:50 »
... allora stamattina ci sto mettendo le mani ...

ho visto che gli esempi di Top e vuott, sono relativi al creare dei nuovi oggetti, io ho un form complessino (come grafica) con varie textbox, e con quelle già piazzate che dovrei fare un ciclo per abilitarle o disabilitarle tutte.

Se ho ben capito le vostre indicazioni le utilizzerò una form "dinammica" dove "passandogli"  un array di campi, formati, lunghezze, ecc, gestisce le tabelle!!

Luca

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Re:Array di controlli
« Risposta #5 il: 12 Dicembre 2015, 16:05:13 »
Usa i gruppi.
In fase di design assegni le varie TextBox ad un unico gruppo, poi nel programma usando il loro nome o un altro riferimento che vedrai tu le abiliti o no.
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Array di controlli
« Risposta #6 il: 12 Dicembre 2015, 22:30:07 »
Usa i gruppi.
In fase di design assegni le varie TextBox ad un unico gruppo, poi nel programma usando il loro nome o un altro riferimento che vedrai tu le abiliti o no.
@luca
Ti dovresti fidare di quanto qui scrive Top Fuel perché ne sta scrivendo proprio ora nel libro, o almeno dovrebbe  ;)

 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.720
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Array di controlli
« Risposta #7 il: 13 Dicembre 2015, 15:02:06 »
un array di campi, formati, lunghezze, ecc, gestisce le tabelle!!
Ricorda che volendo utilizzare un'unica collezione di dati appartenti a tipi diversi, dovrai utilizzare un array di tipo Variant oppure una Struttura.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Re:Array di controlli
« Risposta #8 il: 13 Dicembre 2015, 16:56:00 »
Ricorda che volendo utilizzare un'unica collezione di dati appartenti a tipi diversi, dovrai utilizzare un array di tipo Variant oppure una Struttura.

Quando ne ho parlato io mi avete massacrato "usa le classi, sono meglio di qui, meglio di la ecc. ecc..." e adesso sei qui a consigliare di usarle? :P :P :P :P :P :P :P :P :P :P :P :P :P :P :P :P :P :P :P :P
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.720
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Array di controlli
« Risposta #9 il: 13 Dicembre 2015, 19:06:38 »
Quando ne ho parlato io mi avete massacrato "usa le classi, sono meglio di qui, meglio di la ecc. ecc..." e adesso sei qui a consigliare di usarle?
Devi riportarmi il post, nel quale io ti ho massacrato per aver tu suggerito di usare le Strutture.
 :o E' paradossale la tua affermazione ! Io faccio abbondante uso della risorsa Struttura, in particolar modo nelle chiamate a funzioni esterne a Gambas con Extern.
Al fine di sottolineare la mia particolarissima attenzione alle Strutture in genere, mi preme a questo punto ricordare i miei due mattoni micidiali sullo studio per l'adattamento delle Strutture esterne, scritte in C, con Gambas:
1) http://www.gambas-it.org/wiki/index.php?title=Gestire_con_sicurezza_le_Strutture_esterne
2) http://www.gambas-it.org/wiki/index.php?title=Gestire_con_un_Puntatore_le_Strutture_esterne
Per chiarire la mia attenzione per le Strutture, ti passo, allora, questa mia chicca esemplificativa, che fa riferimento alla pagina sub 1), di come poter adattare in un'applicazione Gambas con codice Gambas una Struttura esterna molto complessa, scritta in C (in questo caso l'esempio è stato effettuato su una semplice Struttura del file header /usr/include/aio.h ):
Codice: [Seleziona]
Library "/tmp/libadhoc"

' int Dim_aiocb()
' Ottiene la dimensione della Struttura "aiocb":
Private Extern Dim_aiocb() As Integer

' void Scrive_aio_fildes(struct *aiocb)
' Scrive un valore nel membro "aio_fildes"
Private Extern Scrive_aio_fildes(po As Pointer, v As Integer)

' int Legge_aio_fildes(struct *aiocb)
' Legge il valore contenuto dal membro "aio_fildes"
Private Extern Legge_aio_fildes(po As Pointer) As Integer

' void Scrive_lio_opcode(struct *aiocb)
' Scrive un valore nel membro "aio_lio_opcode"
Private Extern Scrive_aio_lio_opcode(po As Pointer, v As Integer)

' int Legge_lio_opcode(struct *aiocb)
' Legge il valore contenuto dal membro "aio_lio_opcode"
Private Extern Legge_aio_lio_opcode(po As Pointer) As Integer


Public Sub Main()

  Dim i As Integer
  Dim p As Pointer
 
  CreaSo("/usr/include/aio.h", "struct aiocb", ["aio_fildes", "aio_lio_opcode"], "/tmp/libadhoc")
 
  i = Dim_aiocb()
  Print "La dimensione della Struttura è:     ", i; " byte"
  p = Alloc(i)
 
  Scrive_aio_fildes(p, 99)
 
  i = Legge_aio_fildes(p)
  Print "Valore letto dal membro 'aio_fildes':", i
 
  Scrive_aio_lio_opcode(p, 200)
 
  i = Legge_aio_lio_opcode(p)
  Print "Valore letto dal membro 'aio_fildes':", i
 
  Free(p)

End


Private Procedure CreaSo(Percorso_del_file_header As String, Nome_della_Struttura As String, Nome_dei_Membri As String[], libreria_adhoc As String)
 
  Dim s As String
  Dim b As Byte
 
    s = "#include <" & Percorso_del_file_header & ">\n\n" &
        "int Dim_" & LTrim(Replace(Nome_della_Struttura, "struct", Null)) & "() {\n" &
        "   return sizeof(" & Nome_della_Struttura & ");\n}" &
        "\n\n\n"
       
    For b = 0 To Nome_dei_Membri.Max
      s &= "void Scrive_" & Nome_dei_Membri[b] & "(" & Nome_della_Struttura & " *p, int valore) {\n" &
      "   p->" & Nome_dei_Membri[b] & " = valore;\n}"
      "\n\n\n" &
      "int Legge_" & Nome_dei_Membri[b] & "(" & Nome_della_Struttura & " *p) {\n" &
      "   return p->" & Nome_dei_Membri[b] & ";\n}"
    Next
       
    File.Save(libreria_adhoc & ".c", s)

    Shell "gcc -o " &/ libreria_adhoc & ".so " &/ libreria_adhoc & ".c -shared" Wait
 
End

E', inoltre, arcinota la disquisizione fra me e Gianluigi proprio sulle Strutture (...laddove io vesto sempre i panni dello strenuo difensore proprio delle Strutture); così come è altrettanto noto in modo sommo che tuttte le pagine della nostra WIKI, afferenti direttamente od indirettamente alla risorsa Struttura, sono state scritte da me.
Tra l'altro, come Gianluigi sa bene, io sono molto restio ad usare i Variant, in favore invece proprio delle Strutture !

Pertanto, per me è stato naturale consigliare a luca.decarlo l'uso delle Strutture.   :-\





« Ultima modifica: 13 Dicembre 2015, 19:10:33 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Re:Array di controlli
« Risposta #10 il: 13 Dicembre 2015, 21:01:36 »
Io parlavo di questa discussione:

http://www.gambas-it.org/smf/index.php?topic=3919.0

E comunque Luca non chiedeva lumi sulle chiamate di funzioni esterne, ma di lavorare su dei dati, il tutto può avere un collegamento a quella mitica discussione, dove voi mi bombardavate da tutte le parti... :P :P :P :P
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.720
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Array di controlli
« Risposta #11 il: 14 Dicembre 2015, 00:21:43 »
Io parlavo di questa discussione:

http://www.gambas-it.org/smf/index.php?topic=3919.0

L'avevo immaginato che facevi riferimento a questa discussione, ma - mi spiace dirlo - hai compreso male il mio pensiero, lì espresso.

I miei dubbi, là sollevati, facevano riferimento alle "stringhe a lunghezza fissa" e non alla risorsa "Struttura" in quanto tale. (In particolare, io e Pastrank suggerivamo l'uso della funzione Seek).
Tra l'altro, vedo nell'intera discussione che ad un certo punto io e te ci trovavamo su alcune cose in accordo rispetto invece a Gianluigi.

Inoltre, guarda cosa rispondo all'amico Gianluigi:    :-\
http://www.gambas-it.org/smf/index.php?topic=3919.msg35156#msg35156



E comunque Luca non chiedeva lumi sulle chiamate di funzioni esterne, ma di lavorare su dei dati,
...ed infatti io gli ho solo e semplicemente ricordato di fare attenzione con l'uso degli array contenenti valori di tipo diverso fra loro.



dove voi mi bombardavate da tutte le parti..
Colgo l'occasione di quest'ultima tua riga per ripetere che il dubbio - niente bombardamento - per quel che mi riguarda era limitato all'idea "stringhe a lunghezza fissa".

Ti riporto cosa ho scritto a Gianluigi in quella discussione (http://www.gambas-it.org/smf/index.php?topic=3919.msg35063#msg35063):
" In fondo l'amico Top Fuel non nega ovviamente che con Gambas non si possa ottenere il medesimo risultato, dice semplicemente che in VB v'è l'opzione RANDOM con la connessa procedura ed istruzioni della lettura/scrittura di file che provvede lei a fare i lavoraccio dei dovuti calcoli, non solo per leggere, ma soprattutto per scrivere dati il cui numero può variare all'interno dei campi della struttura tipo dichiarati come Stringhe a lunghezza fissa. La lunghezza fissa porrebbe degli argini, dei punti di riferimento per la scrittura e per la lettura certa. "
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Array di controlli
« Risposta #12 il: 14 Dicembre 2015, 10:57:50 »
Io parlavo di questa discussione:
...

Ciao Top Fuel,
guarda che è vero, quello che ha sempre avuto perplessità sulle strutture sono io.
Comunque se leggi alla fine della discussione da te indicata si capisce bene, infatti io forzo vuott a scrivere in soldoni cosa intende Minisini sulla ML e ne concludo che io l'unico, diciamo così, a osteggiare le strutture ero in sintonia col gran capo.
Non prendertela con chi non ha colpe, anzi con chi ha solo meriti.
Comunque io ho cercato di utilizzare le strutture in modo efficiente (con gli array di strutture) tanto che e ho allegato un file di esempio, ne approfitto per scusarmi delle spiegazioni in inglese maccheronico.

Piuttosto approfitterei di questa discussione per sollecitare vuott che ne capisce (ma anche altri se credono, penso a Sotema, Milio...)  a sforzarsi di spiegare a noi semplici “programmatori orientati agli eventi” un po meglio di quanto qui è stato fatto fino a oggi, un modo semplice e comprensibile per instradarci ad usare efficacemente gli oggetti (le classi) al posto delle strutture.
Grazie

Nel labirinto Sanmidiano cerco l'uscio Minisiano...  :P

 :ciao:  :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.720
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Array di controlli
« Risposta #13 il: 14 Dicembre 2015, 11:08:34 »
sollecitare vuott che ne capisce (ma anche altri se credono, penso a Sotema, Milio...)  a sforzarsi di spiegare a noi semplici “programmatori orientati agli eventi” un po meglio di quanto qui è stato fatto fino a oggi, un modo semplice e comprensibile per instradarci ad usare efficacemente gli oggetti (le classi) al posto delle strutture.

" Questo è il baaallo della sala,
  io non so se ballo bene,
  ma se qua qualche altro non viene,
  questo ballo non si può far.
"   
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline luca.decarlo

  • Gamberetto
  • *
  • Post: 49
    • Mostra profilo
Re:Array di controlli
« Risposta #14 il: 16 Dicembre 2015, 14:30:56 »
Sono arrivato al momento di definire nel campo group dei controlli interessati al test il valore grp1

poi nello specifico eseguo:

Codice: [Seleziona]
For Each oControl In grp1
    oControl.Enabled = True
Next

Chiaramente oControl è definito come Objects, ma ottengo errore su grp1 che non esiste.