Autore Topic: [Risolto] Ridimensionare oggetti del medesimo tipo, ma di Gruppi diversi  (Letto 730 volte)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Presupposti:
- allora... ho un contenitore qualsiasi, per esempio un Panel1, nel quale sono children 4 Button;
- questi 4 Button sono raggruppati in due Group aventi nomi diversi: per esempio: button1 e button2 appartengono al Gruppo: "gruppoUno", mentre button3 e button4 appartengono al Gruppo: "gruppoDue";

Problema:
- usando la sintassi For Each ... IN ...... vorrei modificare, per esempio, la proprietà Width di quei button in modo distinto, ossia soltanto dei button appartenenti ad un solo gruppo (ad esempio solo ai due button appartenenti al Gruppo chiamato "gruppoDue", lasciando inalterata quindi la Width dei button appartenenti al Gruppo "gruppoUno").  :rolleyes:
- vorrei gestire la cosa - se possibile - utilizzando la denominazione del Gruppo per coinvolgere in un botta sola i due button interessati, e non quindi scrivere i nomi di ciascuno dei due button.

Non so se mi sono spiegato....
« Ultima modifica: 20 Febbraio 2013, 17:12:08 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 sotema

  • Maestro Gambero
  • ****
  • Post: 467
    • Mostra profilo
Credo che la sola possibilità sia utilizzare dei contenitori del tipo Hbox / Vbox in cui raggruppare i button di ciascun gruppo, quindi eseguire un ciclo in una sub del tipo:
Codice: vb [Seleziona]
Dim btn As Button
  For Each btn In Vbox1.children
  btn.w = 50
 
Next


L'uomo ha inventato la bomba atomica, ma nessun topo al mondo costruirebbe una trappola per topi.
Albert Einstein

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.273
  • Chi parla poco dice tanto...
    • Mostra profilo
Ma se tu vuoi che solo i button di un certo gruppo devono cambiar caratteristica non basta far cosi'?

Dim oBtn as Button

  For Each oBtn In Panel1.Children
    If oBtn.Group = "gruppouno" then oBtn.W = 50
  Next

 ;)

Offline sotema

  • Maestro Gambero
  • ****
  • Post: 467
    • Mostra profilo
Non mi pare che esista la proprietà .Group  :-\
L'uomo ha inventato la bomba atomica, ma nessun topo al mondo costruirebbe una trappola per topi.
Albert Einstein

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.273
  • Chi parla poco dice tanto...
    • Mostra profilo
Ops e' vero che pirla :)

Si puo' usare la proprietà Tag in alternativa...

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Ringrazio vivamente  :ciao: i miei amici Sotema e Milio per i loro interventi.

Faccio qualche prova al riguardo  :coder:  e faccio sapere....



Prove effettuate (nessuna gestione dei Group):

Soluzione di Sotema
Ovviamente funziona (si può utilizzare volendo anche Panel).
Ho provato, poi, la strada indicata da Sotema per ridimensionare in un solo momento non solo la proprietà Width, ma anche quella Height. Per fare ciò ho così proceduto:
Ho inserito prima un HBox, quindi un VBox, e in quest'ultimo un Button; impostando la gerarchia dei tre oggetti nella sequenza prima espressa, ossia: HBox-->VBox-->Button.
Per quel riguarda il codice ho fatto così:
Codice: gambas [Seleziona]

Public Sub soluzioneSotema()
 Dim btn As Button
 Dim vb As VBox

' ridimensiono VBox.Width (e quindi indirettamente anche Button.Width)
  For Each vb In HBox1.Children
    vb.Width = 10
  Next

' passo quindi a ridimensionare direttamente Button.Height
  For Each btn In VBox1.children
    btn.H = 10  
  Next
End


Ho ottenuto il contemporaneo ridimensionamento di entrambe le proprietà del Button.


Soluzione di Milio (con il .Tag)
Funziona. Rapida e semplice.
Provo a modificare entrambe le dimensioni del Button:
Codice: gambas [Seleziona]

Public Sub soluzioneMilio()
  Dim btn As Button

For Each btn In Panel1.Children
    If btn.Tag = "milio" Then
     btn.W = 60
     btn.H = 10
    Endif
  Next
End


Molto rapido.



Molto bene.  :)
Ancora grazie ad entrambi.   :ciao:
« Ultima modifica: 20 Febbraio 2013, 17:10:19 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. »