lunedì 31 ottobre 2011

[VB.NET] Alternativa a SplashScreen

Descrizione : Un'alternativa valida alle SplashScreen. + Articolo : Dal momento che non vado matto per la SplashScreen di VS, riporto qui una mia soluzione alternativa. La Form principale di avvio dell'Applicazione è FormMain, e tale deve rimanere, mentre FormSplash è la Form di Splash, che viene aperta, gestita e chiusa da FormMain. Il presente esempio inoltre può essere utile anche come Form di attesa generico, da associare a qualsiasi Form principale. FormMain deve semplicemente avere un paio di caratteristiche : 1. Un Timer "Timer1" con Interval = 1000 ( 1 secondo ). 2. Proprièta definita a design : Opacity = 0. --> Codice per FormMain : Public Class FormMain       Private m_formsplash As FormSplash    ...

[VB.NET] Copia di Files con ProgressBar

Descrizione : Esempio di copia file-per-file di una directory, e relative sub-directories con avanzamento ProgressBar. + Articolo : Il codice seguente esegue la copia di tutti i file ( *.* ) trovati in un determinato percorso e in tutte le sue diramazioni, mostrando l'avanzamento del processo in una ProgressBar standard "ProgressBar1". La copia di ogni file incrementa di 1 il progresso. La copia ricrea anche la struttura originaria delle cartelle trovate nel percorso originario. In questo caso, la cartella "\sourceDir\" verrà di fatto "rinominata" come "\targetDir\" :         Dim sourceDir As String = "C:\sourceDir"         Dim targetDir As String = "D:\targetDir"        ...

[VB.NET] Informazioni su Programmi Installati

Descrizione : Una tecnica valida per ricavare dal registro di sistema informazioni su programmi e aggiornamenti installati. + Articolo : L'esempio utilizza una Function e una Structure. La Structure rappresenta la singola entità "Programma" presente nel sistema. Inoltre è utile anche come esempio di caricamento diretto di oggetti non-string in una ComboBox, e successiva estrazione dell'oggetto selezionato dall'utente. In questo caso vengono gestite 3 voci : - DisplayName ( necessario ) - InstallDate - UninstallString 1. Una ComboBox in VB.NET non può solo contenere stringhe, ma molto di più ( e qui dovrei bacchettarmi le mani da solo, perchè in .NET la Stringa è un oggetto... ). Ma era per rendere l'idea... 2. La Structure, Public in...

[VB.NET] Forms con Effetto Dissolvenza

Descrizione : Tecnica per ottenere un effetto Fade-In / Fade-Out da associare all'apertura / chiusura Form. + Articolo : Contrariamente a quanto alcuni pensano, la Proprietà Opacity non è di tipo intero e il suo valore non va da 0 a 100. Nella pratica gli unici valori realmente utili vanno da 0 a 1. Opacity è di tipo Double, e l'assegnazione di un qualsiasi valore Double al di fuori del range non produce errori. Con Opacity = 0 si ha la totale trasparenza, mentre con Opacity = 1, la totale opacità. Ogni tentativo di passare un valore al di fuori del Range [0>1] viene tollerato, ma l'effetto sarà ininfluente :        Me.Opacity = 1.1        MessageBox.Show(Me.Opacity)       ...

[VB.NET] Filtro BindingSource per Word Search

Descrizione : Un metodo per costruire un filtro di ricerca da passare ad un BindingSource, allo scopo di filtrare frasi di testo di qualsiasi dimensione in base ad un numero variabile di parole chiave. + Articolo : Per "parola" si intende una particolare substring del testo, che deve essere presa singolarmente, e ignorata se invece è solo parte di un'altra parola, che la contiene. Nello snippet che segue si parte da un array di parole da ricercare nel testo. Tutte le parole in array verranno poste in AND tra di loro, e il BindingSource restituirà solo le frasi corripondenti al Campo associato ( nomeCampo, in questo esempio "testo" ) che contengono almeno una volta tutte le parole chiave. Le parole da ricercare vanno messe in AND. Per ogni...

[VB.NET] Estrazione linee da TextBox MultiLine

Descrizione : Questa mia Function restituisce una List(Of String) delle linee contenute in una TextBox. + Articolo : La Function in questione estrae le linee di testo da un controllo TextBox, indipendentemente dalle proprietà impostate, che abbia WordWrap a True o False, che l'utente abbia fatto o meno uso del "Return" per andare a capo, o che abbia lasciato linee vuote o incomplete. Inoltre da ogni linea presente nella List() restituita vengono rimossi gli eventuali caratteri ControlChars.NewLine, che in una logica di testo linea-per-linea, avrebbero poco senso.     Public Function GetTextBoxLines(ByVal TB As TextBox) As List(Of String)         Dim lines As New List(Of String)        ...

[VB.NET] Gestione ricorsiva voci MenuStrip

Descrizione : Una tecnica per gestire gli Handlers di menu particolarmente complessi. + Articolo : Non è necessario scrivere un Evento Click separato per ogni Item o SubItem di un MenuStrip. Nel caso in cui si abbiano menu con molte diramazioni e/o menu dinamici, può essere utile gestirne gli Handlers via codice. Si può gestire l'evento Click solo su tutti gli Items e SubItems del menu che NON hanno ulteriori diramazioni, ma che costituiscono le voci di menu effettive ( che quindi corrispondono alle azioni vere e proprie dell'applicazione ). Tutto può essere fatto in modo centralizzato, con un Metodo ricorsivo che aggiunge gli Handlers solo alle voci di menu "finali". 1. Il Metodo ricorsivo :     Private Sub CreaHandlersMenu(ByVal...

[VB.NET] Gestire scambi di Focus tra controlli

Descrizione : Un esempio su come gestire in modo centralizzato il passaggio di Focus tra due controlli. + Articolo : A volte può essere utile tenere traccia del passaggio di Focus tra un dato controllo e quello la cui modifica è logicamente correlata al precedente. In questo esempio veniva chiesto come : 1. Visualizzare un messaggio warning solo se il Focus fosse passato da una delle 2 TextBox interessate all'altra. 2. Se il Focus fosse passato da una delle TextBox ad un Button > nessun warning. 3. Se il Focus fosse passato da un Button ad una delle TextBox > nessun warning. Una possibilità è quella di raggruppare in un unico Metodo il check su quale controllo ha appena subito il Leave e quale ha appena ricevuto il Focus. Se si...

[VB6] Arrotondamenti Diversificati con Select Case

Descrizione : Un esempio su come usare una Select Case per eseguire un arrotondamento personalizzato di numeri in base a range prestabiliti. + Articolo : Si sfrutta la possiblità di usare Case x To y : il che comporta l'esclusione dell'estremo sinistro (x) del range, e l'inclusione del destro (y). In sostanza Case x To y equivale a : Valore > x AND <= y. Nell'esempio di codice seguente si desidera arrotondare il numero in input secondo questi range : Da 0 a 10 deve essere arrotondato al 0,10 Da 10,01 a 20 deve essere arrotondato al 1,00 Da 20,01 a 30 deve essere arrotondato al 2,00 Da 30,01 a 100 deve essere arrotondato al 3,00 Da 100,01 a 1000 deve essere arrotondato al 5,00 Da 1000,01 a 2000 deve essere arrotondato al 10,00...

domenica 30 ottobre 2011

[VB.NET] Gestione Cross Threading ...

Descrizione : Un esempio su come gestire l'accesso a controlli Forms da threads esterni, scongiurando l'errore di Cross-Thread. + Articolo : Nell'esempio ho una Form ( Form1 ) con un Button "cmd_startthread", e una ListBox "ListBox1", e la Classe "MyThreadClass", che deve aggiungere N Items a ListBox1 da un altro Thread. Come si può notare da : Delegate Sub AddListItem(ByVal arg As String), c'è anche un'indicazione molto utile su come gestire Delegates che accettano parametri, perciò l'esempio è semplice, ma non banale... 1. Codice MyThreadClass : Public Class MyThreadClass       Private m_form As Form1       Public Sub New(ByVal F As Form1)         m_form = F    ...

[VB6] Interazione con Excel

Descrizione : Un esempio semplice di lettura e scrittura di files Excel da VB6. + Articolo : Scopo principale di questo articolo è di mettere in chiaro alcuni aspetti importanti ( almeno per me lo sono ) della gestione di documenti Office - in questo caso files di Excel 2007. 1. Si può ottenere un sensibile miglioramento sulla velocità delle operazioni impostando a False la visibilità dell'Application Excel. 2. Ottima cosa è creare un Oggetto per ogni WorkBook da gestire. 3. Le operazioni di Selezione - i vari .Select, e conseguenti richiami ad ActiveSheet, ActiveCell, e quant'altro, al 99% NON sono affatto necessari nelle operazioni di lettura o scrittura, e vanno evitate. Non solo perchè espongono a risultati spesso indesiderati, ma...

[VB.NET] Simulare uno Zoom su Image

Descrizione : Semplice Function per "simulare" uno Zoom su Image. + Articolo : Si tratta di uno dei sistemi più semplici per simulare con discreta qualità uno Zoom su Oggetto Image. Il parametro fattoreZoom deve essere un numero intero positivo. Il fattore di Zoom interno "z", serve ad andare a passi di zoom più ravvicinati ( nel presente caso avremo zoom : 1, 1.2, 1.4, 1.6, ..., ecc. ).     Public Function Zoom(ByVal imgInput As Image, ByVal fattoreZoom As Integer) As Image           Dim z As Single = 0.2         Dim fZoom As Single         If fattoreZoom <= 1 Then            ...

[Excel VBA] CopyFromRecordset

Descrizione : Semplice tecnica VBA per importare velocemente dati da un DB Access in un Foglio Excel. + Articolo : Il Metodo CopyFromRecordset è disponiblie a partire da Excel 2003. Di seguito mostro 3 varianti per file Access .mdb : le prime due usano CopyFromRecordset, mentre l'ultima un Loop diretto sul Recordset ottenuto. N.B.: E' necessario aggiungere nell'Editor VBA ( menu Strumenti / Riferimenti ), se già non presente nel Progetto VBA corrente, un Riferimento alla libreria : Microsoft DAO 3.6 Object Library Nel caso di questo esempio ( Excel + Access 2003 ), la versione è la 3.6. Nell'esempio il DB Access è nella stessa cartella del file Excel. --> Variante 1 : E' il sistema più immediato. Il Recordset viene caricato direttamente...

[VB6] Combinazioni Semplici e con Ripetizione

Descrizione : Due Function di mia "invenzione" per il calcolo delle Combinazioni con e senza Ripetizione. + Articolo : 1. Combinazioni semplici ( senza ripetizioni ) : Si chiama combinazione semplice una presentazione di elementi di un insieme nella quale non ha importanza l'ordine dei componenti e non si può ripetere lo stesso elemento più volte. arrayElementi è l'Array degli N elementi dell'insieme S di partenza. Faccio notare che tale Array è di tipo Variant, e che la mia Function può operare su Array di svariati tipi, quindi Integer, String, Char, ecc... dimensioneGruppo indica il numero di elementi da prendere in ogni Combinazione generata. --> La Function : Public Function CombinazioniSemplici(ByVal arrayElementi As Variant, ByVal...

sabato 29 ottobre 2011

[Excel VBA] Importazione WorkSheets da files esterni

Descrizione : Una tecnica per automatizzare l'importazione su singolo file Excel di fogli da files esterni e da varie cartelle. + Articolo : E' necessario predisporre un WorkBook di "comando", che esegue il codice necessario per la creazione di un nuovo WorkBook di "destinazione", che conterrà, alla fine del processo, N Fogli presi da N Files esterni che si trovano in percorsi forniti come array di percorsi alla routine del comando stesso. Per semplicità, nell'esempio seguente viene mostrato come importare il primo Foglio di ciascuno dei files Excel trovati, in ciascuna delle directory inserite nell'array. Il File "Comando.xls" ha un solo Foglio "Foglio1" con un CommandButton. All'esecuzione il File Comando copia in se stesso tutti i Fogli...

[VB6] Gestire Controlli Image a Runtime con Drag & Drop

Descrizione : Una tecnica interessante per gestire creazione, eliminazione, spostamento di controlli Image a runtime. + Articolo : --> Form di Test : Basta avere una Form VB6 abbastanza grande, e poi aggiungere questi controlli : - 2 Controlli Image ( che si chiameranno "Image1" e "Image2" ) su Image1 e Image2 è necessario impostare la Proprietà DragMode=1-Automatic. - 1 altro Controllo Image ( che si chiamerà "IMG" ) su IMG è necessario impostare le Proprietà Index=0 e Visible=False. Image1 e Image2 sono immagini "sorgenti", ossia stanno in posizione fissa rispetto alla Form, e non possono essere eliminate. Le immagini "derivate" si possono creare semplicemente draggando sulla Form le rispettive Image sorgenti. Le immagini derivate...

[VB.NET] Distanza di Levenshtein

Descrizione : Function per il calcolo della Distanza di Levenshtein. + Articolo : La distanza di Levenshtein tra due stringhe A e B è il numero minimo di modifiche elementari che consentono di trasformare la A nella B. Per modifica elementare si intende : 1. La cancellazione di un carattere 2. La sostituzione di un carattere con un altro 3. L'inserimento di un carattere Il codice :     Public Function Levenshtein(ByVal s As String, ByVal t As String) As Integer           Dim i As Integer         Dim j As Integer         Dim s_i As String         Dim t_j As String        ...

[Access VBA] Su Maschere e Query Parametriche

Descrizione : Una tecnica interessante per collegare Maschere basandosi sull'uso avanzato delle Query Parametriche e minimizzando la scrittura di codice VBA. + Articolo : L'esempio si basa su una Tabella "globale", da cui prelevare i dati. In breve, la struttura della Tabella è la seguente : id - contatore - PK [1,2,...] IP - testo [192.168.1.1 , 192.168.1.2 , ... ] HOST - Testo LOGON - Testo DOMINIO - Testo Nell'esempio che segue risolvo il passaggio tra la Maschera TROVA ( con 3 controlli di tipo TextBox : TIP, THOST, TLOGON ) e la Maschera VISUALIZZA ( che contiene gli stessi controlli ma in modalità sola lettura e visualizza il risultato della ricerca, un record per volta ). Per gestire il passaggio servono veramente poche righe...

giovedì 27 ottobre 2011

[C#] Form con ControlBox Personalizzata

Descrizione : Un semplice esempio su come ottenere una Form con ControlBox personalizzata. + Articolo : Nell'esempio ho una Form con queste 3 Proprietà impostate a design : ControlBox = False FormBorderStyle = Sizable Text = [nessun testo] In questo caso voglio replicare i 3 Controlli standard della ControlBox di una Window e aggiungerne uno per poter minimizzare nella Tray. Perciò, nell'ordine, partendo dall'angolo destro superiore della Form, vado ad aggiungere 4 Button ( quadrati - aspetto grafico a piacere... ) : --> cmd_close --> cmd_maximize --> cmd_minimize --> cmd_tray La Proprietà Anchor su tutti questi pulsanti è = Top, Right. Tutti i controlli aggiuntivi devono avere stesso Anchor. Inoltre aggiungo un controllo...

martedì 25 ottobre 2011

[Excel VBA] Matrice con Valori Random

Descrizione : Come generare una Matrice quadrata con valori Random su Foglio Excel.  + Articolo : Nell'esempio seguente viene generata una Matrice quadrata con valori binari [0,1], con un numero prefissato di valori "1", e con tutti "0" sulla diagonale. Il codice è abbastanza semplice e lineare da consentire facilmente qualsiasi modifica o adattamento. Poniamo che la mia matrice 15x15 debba occupare il Range [N1:AB15], e che il numero desiderato di numeri 1 da inserire sia 20 :     Dim WB As Worksheet 'Imposta Foglio     Set WB = Worksheets("Foglio1")     Dim C As Range 'Imposta Cella iniziale : angolo alto-sinistro matrice     Set C = WB.Range("N1")    ...

Favorites Twitter Facebook Delicious Digg Stumbleupon More

 
Design by Free WordPress Themes Modificato da MarcoGG