|
|
|
![]() |
|
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 11: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: 16:29.