|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#61 |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9947
|
Possibile che l'unico programmatore Visual Basic che bazzica sul forum è Mr MarcoGG?
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. |
|
|
|
|
|
#62 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
|
#63 |
|
Senior Member
Iscritto dal: Aug 2005
Messaggi: 579
|
|
|
|
|
|
|
#64 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
[ Grazie per il "Mister" ... ] Cmq, non hai nessun bisogno di un Visual Basic che ti spieghi cos'è Me. ( l'esatto corrispettivo di this. di C#, VC++, o anche Java... ), My. o Application.DoEvents(), in quanto disponibili a livello di Framework, per ogni linguaggio .Net. Il fatto che nessuno ti abbia ancora risposto concretamente su questo è per me l'ennesima prova dell'ignoranza, della superficialità e del qualunquismo con cui viene considerato .Net, e nello specifico, giudicato VB.NET... Perchè questo è un Forum decisamente C-Java-oriented, ecco perchè. Anche gli utenti che rispondono fattivamente e concretamente a quesiti su Python e altri linguaggi si contano sulle dita di mezza mano, mi pare. Del resto, Forum specifici su VB ( tutte le versioni ) e ben frequentati ce ne sono una miriade ( ma io preferisco stare qui, che vi piaccia o no |
|
|
|
|
|
|
#65 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Asdavo per un motivo molto più futile: perchè mi divertiva la possibilità che Matrixbob si fosse fatto l'idea che solo tu potessi rispondergli, e visto il "diverbio" passato si fosse giocato il tuo aiuto
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
|
#66 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
|
|
|
|
|
|
|
#67 | ||
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9947
|
Quote:
![]() Quote:
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. |
||
|
|
|
|
|
#68 | |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9947
|
Buona definizione di Me alias This mi pare sia questa allora:
Quote:
http://forum.html.it/forum/showthread/t-761975.html
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. Ultima modifica di Matrixbob : 06-05-2009 alle 12:09. |
|
|
|
|
|
|
#69 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Il namespace My è stato introdotto dalla versione 2005 ( potrei sbagliarmi ma non ricordo proprio ci fosse nella 2003... ), come namespace "trasversale" ( mi si passi l'espressione ), per semplificare ulteriormente l'accesso ad operazioni comuni e di utilità generale, una sorta di collezione di metodi-scorciatoia ad accesso veloce, come ad esempio :
- My.Computer.Audio > espone metodi per gestire la riproduzione di audio, se nza scomodare classi, controlli WMP e quant'altro... - My.Application.OpenForms() > tutte le Form aperte dell'applicazione... - My.Computer.FileSystem. e My.Computer.Network > metodi per files e directory ( copia, spostamento, download ecc... ) in locale, Lan o via Web... - My.Computer.FileSystem.FindInFiles() > con una sola riga di codice posso cercare l'occorrenza di una stringa in tutti files di un albero di directory e ricevere una collection di nomi di files... Sono solo alcuni esempi di ciò che si può fare con My. Per quanto riguarda Application.DoEvents(), ho un esempio che chiarifica meglio di mille parole. Vedo di postarlo, appena lo trovo. |
|
|
|
|
|
#70 | |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9947
|
Quote:
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. |
|
|
|
|
|
|
#71 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
- Anzitutto a me personalmente piace la tecnica di non esporre mai i membri interni di una classe e di creare invece proprietà e/o metodi per farvi accesso. Se ad esempio ho una classe come questa : Codice:
Public Class nomeClasse
Private m_campo1 As String
Private m_campo2 As String
Public Property campo1() As String
Get
Return m_campo1
End Get
Set(ByVal value As String)
m_campo1 = value
End Set
End Property
Public Property campo2() As String
Get
Return m_campo2
End Get
Set(ByVal value As String)
Select Case value
Case "stringa1"
m_campo1 = "S1"
Case "stringa2"
m_campo1 = "S2"
Case Else
m_campo1 = "S3"
End Select
m_campo2 = value
End Set
End Property
Public Sub setCampo1(ByVal arg As String)
m_campo1 = arg
End Sub
Public Sub setCampo2(ByVal arg As String)
Me.campo2 = arg
End Sub
End Class
- Se ad esempio ho una Form e voglio cambiarne il BackColor, userò Me.BackColor. Potrei usare anche solo BackColor, ma non è escluso che ci sia una Public Sub BackColor() in un modulo ( o classe statica ) che crei confusione. E' da notare comunque che di default VB in questi casi non mostrerà il metodo pubblico BackColor nell'intellisense... In effetti si tratta di convenzioni con cui mi trovo bene e che per me semplificano la lettura, non certo di leggi. |
|
|
|
|
|
|
#72 | |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9947
|
Quote:
Poi sto anche sbattendo la testa sui TableAdapter che se ho capito bene è un middleware che sta in mezzo tra il DB fisico e il DB logico o DataSet. Più avanti parlerei anche di questo se qualcuno è disponibile a discuterne. Grazie ancora.
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. |
|
|
|
|
|
|
#73 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Prima di addentrarmi in ADO.NET, aspetterei di avere una buona padronanza del linguaggio...
Molti pensano che VB sia un linguaggio RAD, perciò partono dal preconcetto che "in VB serva scrivere meno codice che in C#" ( niente di più errato ), si buttano nelle procedure guidate, pasticciano con i DataSet, gli Adapter, i BindingSource... e poi si impastano. Intanto espongo un esempio utile per capire nei fatti come funziona Application.DoEvents(), come avevo promesso : System.Windows.Forms.Application.DoEvents() forza la lettura della coda messaggi del gestore eventi, in modo da rendere attivi e sensibili all'input i controlli dell'interfaccia grafica, mentre il codice associato ad un certo evento è in esecuzione. Solitamente, in assenza di una chiamata a DoEvents(), gli eventi vengono messi in coda ed eseguiti sequenzialmente. 1. VB 2008 : ho una Form con 3 pulsanti e due ListBox : i primi 2 pulsanti popolano ciascuno la "sua" ListBox, con un certo numero di Items. Il terzo pulsante dovrebbe interrompere il processo, mentre è in esecuzione. Nel primo caso uso Application.DoEvents(), nel secondo no. Codice:
Public Class Form1
Private stopFill As Boolean = False
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
ListBox1.Items.Clear()
stopFill = False
cmd_stop.Focus()
Dim i As Integer = 0
For i = 1 To 100
ListBox1.Items.Add("ELEMENTO DELLA LISTA " & i)
System.Threading.Thread.Sleep(20)
Application.DoEvents()
If stopFill = True Then Exit For
Next
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
ListBox2.Items.Clear()
stopFill = False
cmd_stop.Focus()
Dim i As Integer = 0
For i = 1 To 100
ListBox2.Items.Add("ELEMENTO DELLA LISTA " & i)
System.Threading.Thread.Sleep(20)
'Application.DoEvents()
If stopFill = True Then Exit For
Next
End Sub
Private Sub cmd_stop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_stop.Click
stopFill = True
MsgBox("STOPFILL")
End Sub
End Class
2. VBA : in VBA è analogo, ma con la differenza che in VBA il metodo DoEvents() include una chiamata Sleep() implicita ( assente invece in VB.NET o C# ), infatti in questo caso potrei anche evitare di mettere il Focus con cmd_stop.Activate. Codice:
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private stopFill As Boolean
Private Sub CommandButton1_Click()
stopFill = False
ListBox1.Clear
cmd_stop.Activate
Dim i As Integer
For i = 1 To 100
ListBox1.AddItem "ELEMENTO DELLA LISTA " & i
Sleep (20)
DoEvents
If stopFill = True Then Exit Sub
Next i
End Sub
Private Sub CommandButton2_Click()
stopFill = False
ListBox2.Clear
cmd_stop.Activate
Dim i As Integer
For i = 1 To 100
ListBox2.AddItem "ELEMENTO DELLA LISTA " & i
Sleep (20)
'DoEvents
If stopFill = True Then Exit Sub
Next i
End Sub
Private Sub cmd_stop_Click()
stopFill = True
MsgBox "STOPFILL"
End Sub
Questo è un ottimo esempio, ma personalmente consiglio di usare tecniche più raffinate in applicazioni vere, come ad esempio l'uso di Private Declare Function GetInputState Lib "user32" Alias "GetInputState" () As Integer, o del namespace My ecc..., condizionando l'esecuzione di DoEvents() solo in caso di reale presenza nella coda eventi di un input dell'utente, e quindi riducendo di molto l'overhead, soprattutto nei cicli. |
|
|
|
|
|
#74 | |
|
Senior Member
Iscritto dal: Aug 2005
Messaggi: 579
|
Quote:
|
|
|
|
|
|
|
#75 |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9947
|
Grazie GG, ti ringrazio sempre per le tue perle di conoscenza. Non ho ancora avuto il tempo di studiarmele perchè qui sul campo mi stanno tartassando ai fianchi.
Sfrutto solo l'occasione di annotare qui un appunto preso, così cestino il pezzo di carta!!! (Definendo a mano gli oggetti OleDb da codice) >>> (DB) <<< (Usando la configuratore dell'IDE che sferutterà il concetto di TableAdapter e DataSet)
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. |
|
|
|
|
|
#76 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Ad es. se fai interrogazioni SELECT verso il DB, un DataReader è velocissimo e in molti casi preferibile al filling di oggetti DataSet in sola lettura... Dal momento che stai imparando VB, non farti tentare dalle procedure guidate, studia e scrivi. |
|
|
|
|
|
|
#77 | |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9947
|
Quote:
Mi son trovato sto numero Codice:
Private Sub btnAnnulla_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAnnulla.Click
End
End Sub
Equivale a un exit?
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. |
|
|
|
|
|
|
#78 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Esempio : poniamo di avere una semplice applicazione con 1 Form e un pulsante "Esci", ed associare prima CODICE1 e poi CODICE2 ad "Esci" : > CODICE1 : Codice:
Try
Application.Exit()
Catch ex As Exception
'...
Finally
Me.BackColor = Color.Red
MsgBox("END")
End Try
Codice:
Try
End
Catch ex As Exception
'...
Finally
Me.BackColor = Color.Red
MsgBox("END")
End Try
|
|
|
|
|
|
|
#79 | |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9947
|
Quote:
Allora ritorno sull'accesso ai DB utilizzando "TableAdapter". DB fisico <> TableAdapter <> DataSet (DB logico) {di DataTable} Ogni qualvolta apporto una modifica al DB fisico devo aggiornare da VisualStudio il DataSet. Ogni qualvolta devo aggiornare dei dati sul DB fisico lo faccio sul DataSet e poi passo attraverso un metodo del TableAdapter.
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. |
|
|
|
|
|
|
#80 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Il TableAdapter si usa principalmente mediante la creazione / configurazione guidata dell'origine dati di VS, perciò le operazioni cui fai riferimento, se la procedura guidata è stata fatta correttamente, non avrai bisogno di gestirle via codice, dal momento che tutti i componenti utili ( DataSet, TableAdapter ecc... ), nonchè le logiche di visualizzazione e modifica vengono inserite da VS. Il Commit a DB delle modifiche in questo caso viene eseguito con : Codice:
Me.TableAdapterManager.UpdateAll(Me.NomeDataSet) |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:42.





















