Newsgroup: it.comp.lang.visual-basic
Titolo: [NET] Problemi con matrici di tooltip

Ho ancora un problemino con le matrici di oggetti .NET e non riesco a venirne
fuori.
Al momento della creazione dell'oggetto riesco a scrivere il ToolTip associato,
in questo caso ad una PictureBox, e va bene, poi lo visualizza.
  TltINP(M) = New ToolTip
  TltINP(M).SetToolTip(PicInp, "I" & M + 1.ToString)
I problemi arrivano se voglio successivamente modificare il testo dopo averlo
letto da un file, e ho i seguenti problemi:
Mi raddoppia il ToolTip, perchè mi obbliga a dichiarararne uno dentro la
routine, così vedo prima uno e poi l'altro sempre riferiti allo stesso oggetto.
Se non dichiaro un   Dim t As New ToolTip si ferma al secondo giro.
Sembra un problema simile a quello con le label, ma con ToolTip non si può usare
 Me.Controls.Add  come con la labels.
Ho provato a passargli i controlli con ByRef ma non gliene frega niente.
Dopo la solita sequela di imprecazioni, sono qui a chiedere a voi.
Questa è la routine che uso:
___________________________________
  Public Sub ReadINI(ByVal Tl() As ToolTip, ByVal Im() As Object)
      Dim A As String, Z As Integer = 0
      Dim sr As New StreamReader("C:\TEST_INI.txt")
      Do While Not sr.EndOfStream
         A = sr.ReadLine()
                  Dim t As New ToolTip : t = Tl(Z)
         If Len(A) Then Tl(Z).SetToolTip(Im(Z), A)
                  Tl(Z) = t
         Z = Z + 1 : If Z > UBound(Tl) Then Exit Do
      Loop
      sr.Close()
   End Sub
____________________
--
ciao
  Stefano


Ho fatrto varie prove, compreso quella di dichiarare TltINP as Shared ma niente,
non riesco a modificare la prima assegnazione del tooltip.
Ho deciso di fare solo una assegnazione dal file, però mi piacerebbe capire
perchè non ci riesco e come si potrebbe fare.
--
ciao
  Stefano

"SB"

prendi con beneficio di inventario, non conosco per niente il linguaggio, ma 
non devi _sostituire_ il tooltip corrispondente nell'array, rifacendoti 
all'indice?
per curiosita' ho provato. nel form ci sono un textbox1 multiline (per 
vedere come funzionava, quindi puoi farne a meno), due combo (dropdown list) 
e un command.
al load carico questo txt
---
pere
mele
arance
susine
pompelmi
kiwi
pesche
albicocche
mandarini
limoni
---
ogni riga crea un textbox che come testo ha la riga e un tooltip uguale.
il primo combo carica gli indici della matrice, il secondo le parole.
quando col primo combo scelgo un indice n, e col secondo una parola, il 
tooltip(n) del texbox(n) diventa _solo_ quello nuovo. direi funzioni.
con dim as new mi sa che gliene _aggiungi_ uno.
hth, ciao, a.
Imports System
Imports System.IO
Public Class Form1
    Dim t(0 To 9) As TextBox, tt(0 To 9) As ToolTip
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles MyBase.Load
        Dim s As String, ln As String, j As Integer = 0
        Dim sr As New StreamReader("C:\vs-test.ini")
        Do While Not sr.EndOfStream
            ln = sr.ReadLine()
            If Len(ln) Then
                t(j) = New TextBox
                t(j).Left = Width \ 2
                t(j).Top = 10 + (j * 30)
                t(j).Text = ln
                tt(j) = New ToolTip
                tt(j).SetToolTip(t(j), ln)
                Me.Controls.Add(t(j))
                s = s & j.ToString & ". " & ln & vbNewLine
                ComboBox1.Items.Add(j.ToString)
                ComboBox2.Items.Add(ln)
                j += 1
            End If
        Loop
        sr.Close()
        TextBox1.Text = s
        ComboBox1.SelectedIndex = 0
        ComboBox2.SelectedIndex = 0
    End Sub
    Private Sub cmdSetTooltip_Click(ByVal sender As System.Object, ByVal e 
As System.EventArgs) Handles cmdSetTooltip.Click
        Dim n As Integer = CInt(ComboBox1.Text)
        tt(n).SetToolTip(t(n), ComboBox2.Text)
    End Sub
End Class

             If Len(ln) Then
Usa il metodo Length dell'oggetto String, e attiva Option Strict On :-P
PS
La funzione Len() in Microsoft.VisualBasic vista con Reflector fa 
semplicemente questo:
Public Shared Function Len(ByVal Expression As String) As Integer
     If (Expression Is Nothing) Then
         Return 0
     End If
     Return Expression.Length
End Function
-- 
news:it-alt.comp.software.openoffice : Il newsgroup dedicato a
OpenOffice.org, la suite open source di applicazioni per ufficio.
Saluti, VITRIOL

 La funzione Len() in Microsoft.VisualBasic vista
so' talmente provato che per un attimo ho temuto ci fosse una ms.visualbasic 
xp )
ho tirato giu' 3.5 gb di iso 2008pro. me lo sento che appena l'installo esce 
la 2009 :P

 la 2009 :P
Ne dubito, ma non mi sentirei di escluderlo a priori :-P
Comunque io sono hobbista, e uso solo le edizioni Express, ma comunque 
non troverai una rivoluzione rispetto a VS 2005. A parte WPF, ma 
fortunatamente non si è tenuti a usarlo...


 incaponirsi a non usarla.
molto a naso, perche' potrebbe comportarsi in modo abbastanza diverso 
secondo i sistemi in cui viene implementata. ma, ripeto, cerchero' di 
capirlo piu' avanti.
ciao, a.

 secondo i sistemi in cui viene implementata.
Mi sembrerebbe molto strano se fosse così. Il Framework astrae 
parecchio, e dovrebbe risultare pressoché indipendente dal sistema 
sottostante.
Il problema è che esiste solo in 
VB.NET
 e, se un domani vuoi convertire 
il C# o altro, devi rivedere la logica del tuo codice.
La forza di .NET è che usa classi comuni indipendenti dal linguaggio, 
quindi la conversione è in genere abbastanza banale, e una mera 
questione di sintassi.
Usare caratteristiche troppo legate al linguaggio specifico va un po' 
contro la filosofia primigenia di .NET, in un certo senso.
Il fatto è che Microsoft sembra spingere un po' in questa direzione, e 
con le nuove funzionalità implementate in C# 3.0 e VB 9.0 (compilatori 
di .NET 3.5) la forbice si è allargata ulteriormente caratterizzando 
ancora di più i linguaggi con funzionalità specifiche.


 i linguaggi con funzionalità specifiche.
sempre parlando del sesso degli angeli, per quel che mi riguarda, avrebbe 
anche senso. seno' non aveva senso avere n linguaggi. se era solo per fare 
j++ (vietato in vb) o j=j+1 / j+=1 (questo e' permesso, chissa' perche'), mi 
sarebbe sembrato poco intelligente. vabbe' il background, ma i linguaggi 
nascono diversi per fare cose diverse. quello che si e' storicamente fatto 
in vb in 20', in c avrebbe implicato sangue sudore e lacrime, e viceversa.
ciao, a.

 la 2009 :P
Io sto tirando giů ora il 2008 Express, sono /solo/ 894 mega.
OT al quadrato: se vuoi risparmiarti di fare un CD, prova Microsoft
Virtual CD-ROM Control Panel. Trovi un link qui:
http://support.microsoft.com/kb/916902
E' "unsupported", e non mi risulta faccia cose turche come i vari
Daemon Tools e Alcohol 120%, ma nel suo piccolissimo (60KB)
funziona. Ha il vantaggio di poter scaricare completamente il
driver dalla memoria, ma l'interfaccia č molto grezza, e non pare
automatizzabile. Anche se ho visto un "mount permanently" che
mi fa pensare ad un remount automatico all'avvio del sistema.
Bye, G. 

 Io sto tirando giù ora il 2008 Express, sono /solo/ 894 mega.
Però fortunatamente con VS 2008 Express hanno fatto una unica immagine 
contenente tutti i moduli, poi ognuno si installa quello che vuole.
Con la 2005 invece andava scaricata una diversa immagine per ogni 
linguaggio, ed erano comunque sui 500 mega ognuna, perché documentazione 
e strumenti accessori erano riproposti in ogni immagine.


al load carico questo txt
Il tuo esempio funziona ( dico probabilmente, dato che non ho ancora capito
molto di .NET tranne che l'u.c.c.s.[*] ha lavorato moltissimo) perchè l'hai
associato ad un evento click e muovi solo il tooltip selezionato.
Se provi invece a modificare tutti i tooltips in una volta come faccio io è
probabile che ti faccia dei casini.
Difatti andando in debug mode e cliccando sulla parola TltINP(M) che rappresenta
l'array di tooltip si apre una tendina (l'effetto del debugger è effettivamente
accattivante) e vedo tutti i tooltip a Nothing eccetto il primo, che è poi
l'unico che effettivamente riesco a cambiare.
Io vorrei poterli cambiare tutti da file perchè così sarebbe facile cambiare
lingua ed adeguare tutto in un sol colpo.
[*] Ufficio Complicazione Cose Semplici      :-)
--
ciao
  Stefano

 probabile che ti faccia dei casini.
    Private Sub cmdSetTooltip_Click(ByVal sender As System.Object, ByVal e 
As System.EventArgs) Handles cmdSetTooltip.Click
        'Dim n As Integer = CInt(ComboBox1.Text)
        'tt(n).SetToolTip(t(n), ComboBox2.Text)
        For j As Integer = 0 To 9
            ComboBox2.SelectedIndex = 9 - j
            tt(j).SetToolTip(t(j), ComboBox2.Text)
        Next
    End Sub
funziona, inverte i tooltip.
nella mia inesperienza, continuo a pensare che devi puntare agli indici.
certo, uno per volta :)
ciao, a.


Nulla da fare:
Nella mia routine, considerato che mi vede
comunque UBound(TltCnD)  = a 39 quindi da qualche parte i tooltips esistono.
Se scrivo
      For J As Integer = 0 To UBound(TltCnD) - 1
         TltCnD(J).SetToolTip(ImgPN(J), J.ToString)
      Next
al primo giro mi dà un errore del tipo
  System.NullReferenceException non è stata gestita
  Message="Riferimento a un oggetto non impostato su un'istanza di oggetto."
Ma passando il mouse sulle matrici me le vede a 39 mentre J è =0
Non capisco.
--
ciao
  Stefano

 Ma passando il mouse sulle matrici me le vede a 39 mentre J è =0
ieri mi ha fatto un po' ammattire quando settavo
   t(j) =
sottolineava dicendo che facevo riferimento a un oggetto non ancora
valorizzato.
sicuramente con le classi ci sono metodi piu' ortodossi, ma col vecchio
stile vb ho spostato dichiarazione di txt e tooltip in alto nelle
generali, e ovviamente (*) ora li vedono, con lo stesso nome, tutte le
routine del form.
col codice che hai postato all'inizio, e i dim all'interno delle due
routine, tu fai riferimento a due (serie di) oggetti diversi.
non ho tutto il tuo codice davanti. sei sicuro di creare un'unica matrice
/coppia di matrici, e di riferirti sempre solo a quella?
ciao, a.
(*) ovviamente si fa per dire. all'f5 ho pregato che andasse :)
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

/coppia di matrici, e di riferirti sempre solo a quella?
Anch'io ho pensato a quello.
All'inizio in alto ho messo una dichiarazione cosě:
Public Class Il2RTST
   Public Shared TltConn() As ToolTip = {}, TltLBR() As ToolTip = {}, TltRL() As
ToolTip = {}
   Public Shared TltINP() As ToolTip, TltCnD(37) As ToolTip
quindi se scrivo (ho provato a mettere la routine in un pulsante ma non cambia)
      For J As Integer = 0 To UBound(TltCnD) - 1
         TltCnD(J).SetToolTip(ImgPN(J), J.ToString)
      Next
TltCnD me lo deve vedere come ToolTip
Infatti lo vede ma tutto a Nothing e per scriverci dentro qualcosa debbo fare
un'altra  dichiarazione di ToolTip e un assegnazione.
Porca Vacca (scusa ma ogni tanto ci vuole)          ;-)
--
ciao
  Stefano

 
http://support.microsoft.com/kb/916902
ecco perche' non amo i sw localizzati:
<<Come Windows PE essere personalizzato utilizzando i file di origine
inclusi con il Microsoft SMS 2003 Operating System Deployment (OSD)
Feature Pack>>
mezza frase non e' tradotta, l'altra mezza "io cita lei jane" :)
grazie, ho usato nero su xp, e su vista, che nero non va, il roxio venuto
col pc...
..su un dvd+rw di bkp recante la scritta "vs 2005 msdn" :)
il ciappo ms che dici direi sia della famiglia dei deployment tipo vista
in azienda, cosa in attesa della cui realizzazione si puo' tranquillamente
aspettare WinPE per framework 6.5 :)
ciao, a.


 Porca Vacca (scusa ma ogni tanto ci vuole)          ;-)
mantieni la calma. stiamo facendo esercizi zen/yoga, e rischi il
sacrilegio :)
ciao, a.


 shared non so cosa significhi.
Il modificatore Shared definisce un metodo come statico, ovvero che può 
essere richiamato direttamente, senza creare una istanza della classe 
che lo contiene.


sacrilegio :)
Mantenere la calma č stato il primo proposito quando sono partito con questo
progetto perchč sapevo che sarebbero stati casini, sto cavolo di .NET sta
veramente mettendo a dura prova la mia pazienza.
Ma sono ostinato, e prima o poi ce la farň.
La prima volta che vado in centro mi compro un libro, lo prometto.
Vitriol, non mi dici niente?
--
ciao
  Stefano

 Vitriol, non mi dici niente?
Non so che dirti. Non mi č mai capitato di doverlo fare, e su due piedi 
non mi viene in mente nulla di utile. Son niubbo cronico io...
Ci sarebbe da fare delle prove, che adesso non ho tempo di fare :-)
Io ti consigli di provare a chiedere su microsoft.public.it.dotnet.vb, 
piů specifico per 
VB.NET
 e dove postano parecchi MVP molto disponibili.


 che lo contiene.
grazie. gia', non mi ero neanche accorto di avere usato e instanziato una
classe :)
stefano, forse se fai
--dim tt(), nelle generali (se sai quanti sono, dimensionalo subito)
--poi tt(j) = new tooltip, al primo giro
--poi tt(j)= (o quel che e'), ogni volta che lo richiami
mi sa che ti incasini decisamente meno.
btw, non capisco neanche perche fai una cosa tipo 0 to ubound-1. se
l'array parte da 0, l'ultimo elemento non ti serve?
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
   Dim a(0 To 14) As String
   Dim j As Integer
   For j = 0 To 14
       a(j) = "elemento n. " & (j + 1).ToString
   Next
   For j = LBound(a) To UBound(a)
       Debug.Print(j.ToString & " = " & a(j).ToUpper)
   Next
End Sub
scopro ora che se "as integer" lo specifico nel prim for, la visibilita'
resta limitata a quel ciclo, e il secondo non sa cosa sia j.
maro'...


Ma sono ostinato, e prima o poi ce la farò.
EUREKA!!!
Ho capito il perchè.
Io creo le matrici di immagini poi le assegno  con un Controls.Add (vedi post di
qualche giorno fa)
Per comodità creavo il tooltip durante la creazione della matrice, quindi prima
dell'assegnazione.
Facendo invece la creazione del tooltip dopo il control.add ottengo una sola
istanza del tooltip e la posso modificare.
      ReDim TltCnD(ImgPN.Count)
      For Each lb As PictureBox In ImgPN : Me.Controls.Add(lb)
         Dim z As Int16 = 0 ' UBound(TltCnD) + 1 : ReDim TltCnD(z)
         TltCnD(z) = New ToolTip : TltCnD(z).SetToolTip(ImgPN(z), "-" &
ImgPN(z).Name)
         z = z + 1
      Next
IN FONDO ANCHE .net HA UNA SUA LOGICA PERVERSA  :-)
--
ciao
  Stefano

 IN FONDO ANCHE .net HA UNA SUA LOGICA PERVERSA  :-)
certo, come costringermi a usare la guida 2008 con vs 2005 perche' la
guida 2005 non va. vabbe', sara' fin troppo aggiornata :)


sono felice per te, anche se continuo a capirci sempre meno
Io comincio a capire qualcosina.
Ultima puntata.
Non occorre nemmeno un Array di ToolTip()
Se faccio:
_______________________
      Dim sr As New StreamReader(My.Application.Info.DirectoryPath & "Ini.txt")
      Do While Not sr.EndOfStream
         A = sr.ReadLine()
         Dim t As New ToolTip
         If Len(A) Then t.SetToolTip(Me.ImgPN(Z), A)
         Z = Z + 1 : If Z > UBound(PicInpS) Then Exit Do
        '   Dim B As String = t.GetToolTip(ImgPN(Z))
      Loop
     sr.Close()
________________________
Mi scrive tutti i tooltips correttamente e li posso modificare o vedere con
.GetTollTip
Quindi il tooltip è già riferito all'oggetto in Array e non deve essere
dichiarato a sua volta in array. è li che faceva casino.
Difatti le PictureBox sono già in un Array e quindi il tooltip ha già un
riferimento.
Ho l'impressione di capirci qualcosa.
--
ciao
  Stefano

Ho l'impressione di capirci qualcosa.
E ci sono arrivato da solo    :-)
--
ciao
  Stefano

 E ci sono arrivato da solo    :-)
"La risposta è dentro di te. Epperò è sbajata!" (cit.).
Bye, G. 

 Avrň bisogno dello psicologo?  :-)
ne fornirei uno a vs.
in ufficio ho installato 2008, disinst 2005.
risultato: se clicco un .sln, 2008 apre il progetto, ma quando clicco 
form1.vb dice che non trova l'editor per il .vb
E' LUI, l'editor per il .vb! :)
disinst e reinst, uguale. prossimi giorni ritento.
per fortuna che qui un macroscopico buco di vista, che non permette proprio 
di disinstallare alcuni programmi (tipo le ennemila update di java, tutti 
quelli arrivati col pc, e 2005) mi ha impedito di arrivare allo stesso 
risultato.
meno per meno uguale piu'...
tirem innanz, sto rifacendo la javacam e alcune cose sono quasi uguali, 
tipo:
(vb6) If Dir$(App.Path & "\jsnaps", vbDirectory) = "" Then MkDir App.Path & 
"\jsnaps"
(2008) If Dir(My.Application.Info.DirectoryPath & "\jsnaps", vbDirectory) = 
"" Then MkDir(My.Application.Info.DirectoryPath & "\jsnaps")
ovvio che sta per essere dimmata una sAppPath = 
My.Application.Info.DirectoryPath :)
ciao, a.

 (2008) If Dir(My.Application.Info.DirectoryPath
Gli impiegati dell'UCAS si sono espressi ai massimi livelli, con .NET.
Non posso non ricordare che questo ormai vale un po' per tutto
il nuovo di MS. E non lo dico io, eh, è roba vecchia:
http://blogs.msdn.com/philipsu/archive/2006/06/14/631438.aspx
Bye, G. 

 
http://blogs.msdn.com/philipsu/archive/2006/06/14/631438.aspx
infatti. action control, not results control.
in questo qui siamo molto piu' avanti.

 "" Then MkDir(My.Application.Info.DirectoryPath & "\jsnaps")
Sono quasi uguali solo perché ti incaponisci a scriverle così :-P
Io farei:
Imports System.IO
...
If Not Directory.Exists(Path.Combine(Application.StartupPath, "jsnaps")) 
Then
 
Directory.CreateDirectory(Path.Combine(Application.StartupPath, "jsnaps"))
End If
A parte che mi sembra molto più elegante (:-P) e immediato, poi usa 
soltanto metodi esposti dalle classi del Framework, e bypasso tutte le 
funzioni specifiche di compatibilità.
Se lo voglio riscrivere in C# è uguale, basta solo che cambio la 
sintassi dell'If:
using System.IO;
...
if (!Directory.Exists(Path.Combine(Application.StartupPath, "jsnaps"))) {
    Directory.CreateDirectory(Path.Combine(Application.StartupPath, 
"jsnaps"));
}
Non è una cosa da poco...
IMHO 
VB.NET
 soffre della sua stessa eredità, e spinge a scrivere un 
codice pasticciato e obsoleto. Ma si può tranquillamente non ascoltarlo, 
ed evitare di farlo :-)


 evitare di farlo :-)
tranquillamente mica tanto. ogni volta che chiedo una funzione vb6, magari 
me la spiega per bene, poi mi dice che devo usare ms.vb.* -- grazie al 
tappo... vigliacco se da' un suggerimento di cosa usare invece.
francamente, con le sue tonnellate di roba a disposizione, l'help non e' 
molto pratico, al contrario. se gli ho detto che uso vb, e' inutile che mi 
mostri codice che non ce'ntra niente.
localip me lo aspettavo in my.computer.network, al momento ho trovato una 
funzione solo con google gruppi. intanto va, in futuro vediamo gli 
abbellimenti.
visto che sei in vena, lo so che ci dev'essere qualcosa di meglio..
    Private Function GetJsName() As String
        Dim s As String = Now.ToString
        s = sAppPath & "\jsnaps\js"
        s = s & Format(Year(Now), "0000")
        s = s & Format(Month(Now), "00")
        s = s & Format(Microsoft.VisualBasic.DateAndTime.Day(Now), "00")
        s = s & "_"
        s = s & Format(Hour(Now), "00")
        s = s & Format(Minute(Now), "00")
        s = s & Format(Second(Now), "00")
        s = s & ".jpg"
        GetJsName = s
    End Function
grazie, a.

     End Function
Private Function GetJsName2() As String
  Dim s As String = IO.Path.Combine(Application.StartupPath, "jsnaps\js")
  s &= Now.ToString("yyyMMdd_hhmmss") & ".jpg"
  Return s
End Function


 End Function
grazie. e si' che ci ho girato intorno a now e tostring...
ciao, a.

 grazie. e si' che ci ho girato intorno a now e tostring...
Divagazione credo interessante...
Il metodo ToString č un ottimo esempio di programmazione orientata agli 
oggetti. Esiste gią nella classe base System.Object e, visto che tutte 
le classi in .NET ereditano da System.Object, questo metodo te lo 
ritrovi in tulle le classi del Framework e in quelle personalizzate.
In Object il metodo ToString non fa praticamente nulla, ma viene 
spessissimo ridefinito (override) in ogni classe, in modo che rispecchi 
il significato della classe stessa, e ritorni una stringa con contenuto 
utile e compatibile con l'oggetto che stai usando in quel momento 
(l'istanza di classe specifica).
In pratica risale tutta la catena dell'ereditarietą, ma adattandosi di 
volta in volta al contesto specifico.
E' cosģ che si dovrebbe programmare :-)


Il giorno Tue, 18 Dec 2007 22:27:21 +0100, "Paperino" <non...@lo.dico.invalid>
ha scritto:

Ho paura anch'io.
"Con .NET non si è più sicuri di niente" [da citare in futuro]
--
ciao
  Stefano

risultato.
Probabilmente è un altro problema di Vista, io intanto oggi ho fatto acquistare
un altro portatile Xp pro, ho trovato un posto che ne tiene, e dice che ha
parecchie richieste.
--
ciao
  Stefano

 parecchie richieste.
sara' un altro problema di vista, ma se in questo momento sto smacchinando 
con 2008 e' perche' non c'e' xp. dove c'era, ciao miao...
tu d'altronde sulle macchine nuove non avrai il cumulo 2005/2008 e annessi.
pero' ti assicuro che vista e' molto piu' promettente e grazioso di xp, 
anche se certo in azienda, hw a parte, ancora non e' pronto.
ciao, a.

  s &= Now.ToString("yyyMMdd_hhmmss") & ".jpg"
aargh. non capivo piu' cosa succedeva, tutto giu' di posto....
J:\vbnet\Projects\wa2008wb\wa2008wb\bin\Debug\jsnaps\js20071219_013725.jpg
js20071219_013741.jpg
js20071219_013756.jpg
js20071219_013811.jpg
js20071219_013826.jpg
...non e' l'una di notte, sono le 13 = 01 *PM*
non e' possibile. ne risolvi una, ne saltano fuori due.
e *che* due... :)
ciao, a.

 e *che* due... :)
Se usi la stringa di formattazione "yyyMMdd_HHmmss" (HH invece di hh) 
esprimi l'orario in 24 ore. Forse č meglio fare cosě.


e *che* due... :)
e l'atmosfera zen/yoga che fine ha fatto?  :)
"Con .NET non si è più sicuri di niente" [cit]
--
ciao
  Stefano

 "Con .NET non si è più sicuri di niente" [cit]
stasera vado in palestra, quindi oggi libera uscita :)
ciao, a.

stasera vado in palestra, quindi oggi libera uscita :)
Io invece stasera gioco a biliardo, quindi debbo essere calmo, rilassato e
concentrato, sennň perdo di sicuro.
--
ciao
  Stefano

 esprimi l'orario in 24 ore. Forse č meglio fare cosě.
rigrazie. ti rompro' meno le scatole appena avro' capito la logica 
dell'help. di solito lo uso...
ora e' filtrato su vb, ma mettendo il cursore su tostring e dando f1, l'help 
locale da' errore. scrivendolo a mano nel search, mi da' solo link a js (nb 
che ho fatto installazione full).
per fortuna quello online punta qui:
http://msdn2.microsoft.com/en-us/library/zdtaw1bw.aspx
ciao, a.

Ultima puntata.
ULTIMISSIMA
Non si deve dichiarare un array di tooltips.
Basta selezionare un tooltip dalla casella strumenti, e riferire sempre quello
ad ogni oggetto.
Nel mio caso  t
___________________
      Dim sr As New StreamReader(My.Application.Info.DirectoryPath & "Ini.txt")
      Do While Not sr.EndOfStream
         A = sr.ReadLine()
         If Microsoft.VisualBasic.Left$(A, 3) = ";\\" Then Exit Do
''         Dim t As New ToolTip			 NON CI VUOLE
         If Len(A) Then t.SetToolTip(ImgPN(Z), A)
         Z = Z + 1 : If Z >= ImgPN.Count Then Exit Do
      Loop
     sr.Close()
________________________
--
ciao
  Stefano