|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Oct 2001
Messaggi: 14739
|
[VB6] Difficoltà a passare un controllo alla funzione
Il problema all'apparenza è semplice, ma non riesco a far funzionare una semplice funzione che deve prendere come parametro un datagrid.
Il nocciolo del codice è questo (ovviamente la funzione è più complessa): Codice:
Private Sub Form_Load()
setColumnWidth(DataGrid1,1000,1)
End Sub
Private Sub setColumnWidth(dataGr As Control, baseValue As Integer, col As Integer)
dataGr.Columns(col).Width = baseValue - 220
End Sub
Se provo costruire la funzione così come la vedete, l'analizzatore sintattico di VB mi da errore (riga rossa per il codice di richiamo), pretendendo un = dopo il richiamo della funzione (per esempio con Codice:
setColumnWidth(DataGrid1,1000,1) = variabileacaso Se invece costruisco la funzione con solo dataGr come parametro, Codice:
Private Sub setColumnWidth(dataGr As Control) Da notare che per sicurezza ho anche provato a controllare che il datagrid passato come parametro reale fosse effettivamente un oggetto (tramite la funzione isObject, e il risultato è positivo). La documentazione e il manuale non mi hanno aiutato granchè... Dove sta la magagna? Grazie! Ultima modifica di calabar : 19-05-2006 alle 19:51. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jun 2005
Città: Mestre (VE)
Messaggi: 1415
|
La sub nell' evento Load ... richiamala così, senza le parentesi tonde:
Codice:
setColumnWidth DataGrid1, 1000, 1
__________________
IN WIN 909 / AMD Ryzen 9 3950X / Gigabyte X570 Aorus Xtreme / 4x8gb G.Skill 3200 / Gigabyte Aorus RTX2080Ti Xterme / 2x Gigabyte Aorus NVMe M.2 1Tb / Corsair AX1200i / full liquid EK - Bitspower / circa 160 trattative nel mercatino |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Oct 2001
Messaggi: 14739
|
non ci credo... l'avevo anche provato O_o
Sai per caso spiegarmi in quali casi usare questo tipo di sintassi e perchè? Non ho trovato nulla a riguardo... comunque... Grande!! stavo ormai perdendo la speranza!! Se ti va di darmi un altro piccolo aiutino, ho un'altra questione abbastanza semplice. Volevo dichiarare un array globale. - creo un modulo bas - dichiaro al suo interno l'array come public e fin qui tutto bene. Ora però voglio anche inizializzare l'array con certi valori, e sul modulo BAS non è possibile (almeno così mi è parso!) Devo inizializzarlo prima che gli altri form vengano caricati, e non ho ben capito dove ed eventualmente come questa inizializzazione dovrebbe essere fatta. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jun 2005
Città: Mestre (VE)
Messaggi: 1415
|
In genere le sub che richiedono parametri si chiamano in 2 modi.
1) usando CALL e le parentesi tonde: Codice:
Call nomeSUB(par1, par2, par3) Codice:
nomeSUB par1, par2, par3 Per quanto riguarda l' array, lo dichiari nel modulo bas ad esempio così: Codice:
Public vettore() as string Codice:
Private Sub Form_Load()
ReDim vettore(5) As String
vettore(0) = "a"
vettore(1) = "b"
vettore(2) = "c"
vettore(3) = "d"
vettore(4) = "e"
End Sub
__________________
IN WIN 909 / AMD Ryzen 9 3950X / Gigabyte X570 Aorus Xtreme / 4x8gb G.Skill 3200 / Gigabyte Aorus RTX2080Ti Xterme / 2x Gigabyte Aorus NVMe M.2 1Tb / Corsair AX1200i / full liquid EK - Bitspower / circa 160 trattative nel mercatino |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Oct 2001
Messaggi: 14739
|
Grazie!
Per il richiamo delle funzioni, l'avevo sempre fatto con le parentesi, senza Call... Fino a quando non ho provato ad usare un oggetto, non mi aveva mai dato problemi!! Per l'array globale. al momento ho un MDI Form e 4 form generici, inizializzo nell'MDI? Mi pare farlo però mi avesse dato problemi, e avessi problemi ad accedere ai dati dagli altri form... ma era una delle prime prove, potrei sbagliarmi. PS: in effetti l'uso dei moduli BAS è ancora un po' oscuro... non ho ancora trovato nella guida un paragrafo che lo spegasse bene. Quindi posso usarli per: - dicharare variabili globali - dichiarare variabili provate, solo se utilizzate da funzioni anch'esse dichiarate nel modulo BAS - dichiarare funzioni (ma se queste hanno al loro interno valori da inizializzare? O_o ) |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:33.



















