|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Sep 2003
Messaggi: 1025
|
Tool Bar vb.net
Come faccio ad inserire un immagine o un icona sui pulsanti di una tool bar??nelle proprietà ho guardato ma c'è solo imageindex ma è posizionato sul colore di default e non mi lascia cambiare colore o immagine....grazie
|
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: Jul 2002
Città: TV
Messaggi: 125
|
Porta dentro un imagelist nella tua form,riempila con le immagini che vuoi,setta la proprietà imagelist della toolbar con l'imagelist che hai appena creato e ora,in imageindex,puoi scegliere le icone che vuoi.
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Sep 2003
Messaggi: 1025
|
e l'image list come faccio a portarmela dentro...dove devo andare...??
ah ne approfitto per chiederti due cose...io volevo creare un costruttore...come sapevo io bastava fare una sub in qualsiasi parte della classe e metterci dentro quello che voglio... il libro quì mi dice di fare così.. public sub new() 'Quì metto il codice che voglio end sub poi mi dice il libro che Sub New sarà sempre eseguito prima di ogni altra istruzione o codice all'interno del progetto... io l'ho fatto solo che mi da un errore perchè c'è già una sub new nel codice nascosto...questa Public Sub New() MyBase.New() 'Chiamata richiesta da Progettazione Windows Form. InitializeComponent() 'Aggiungere le eventuali istruzioni di inizializzazione dopo la chiamata a InitializeComponent() End Sub io allora volevo chiederti come dovevo fare ad usare questo costruttore...o come costruire una sub e fare partire il progetto con quella determinata sub... |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Sep 2003
Messaggi: 1025
|
per l'image list ci sono riuscito se mi puoi spiegare quello che ti ho postato mi faresti un favore...
|
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Jul 2002
Città: TV
Messaggi: 125
|
In effetti e' giusto che ti segnali cosi,nella creazione della form viene già generato il costruttore per la classe form,quindi eventuali porzioni di codice che vuoi far eseguire devono essere inserite li(anche se deve essere fatto con cautela perche',trovandosi nel costruttore,non e' detto che qualsiasi oggetto sia già istanziato).
E' cmq possibile implementare più costruttori che devono differire però nel tipo o nel numero di parametri(overloading di funzione).Esempio generale: Public class MyClass sub New() msgbox ("Costruttore 1") end sub sub New(MioMsg as string) msgbox (MioMsg) end sub End Class Dichiarando due oggetti di tipo MyClass Public Class1 as new MyClass() Public Class2 as new MyClass("Costruttore2") ottengo lo stesso oggetto istanziato però tramite costruttori differenti. La tua ultima domanda sembrerebbe slegata però da tutto questo discorso perche' se vuoi far partire un progetto da una funzione devi crearti un modulo,e scrivere Public Sub Main() 'aggiungi qui tutto il codice che devi implementare 'e con l'istruzione sotto mostri la tua form principale/prima form 'che vuoi far vedere System.Windows.Forms.Application.Run(New fPrincipale) End sub Fatto questo,sul tuo progetto,fai pulsante destro,proprietà e ti comparirà una finestra.Alla voce Common Properties->General vedrai che c'e' una combo Startup Object dove potrai scegliere al posto di una form la sub main che abbiamo implementato sopra. |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Sep 2003
Messaggi: 1025
|
l'overloading praticamente differisce dalle due sub perchè su una gli vengono passati degli argomenti e invece allaltra no...
per quanto riguarda il fatto di far partire un form o un altro all'inizio lo sapevo la mia domanda era sulla sub new...se io voglio ad esempio partire con il mio programma con del codice che mi prepara la mia apllicazione faccio come mi hai detto tu...mi creo una sub new dove dentro posso ad esempio impostare la data e l'ora del sistema di una status bar o dell'altro codice e dopo con la tua ultima istruzione dirgli con che form partire...grazie cmq volevo chiederti un'altra cosa...ti ricordi che avevo problemi con la select perchè era un array a più dimensioni e se all'interno del mio database esisteva più di un "impiegato" uguale non riuscivo a visualizzarlo...subito come mi hai detto tu lo visualizzavo così: ResultRow = dt.Select("Impiegato='" & txtImpiegato.Text & "'") txtPrestito.Text = ResultRow(0)Item("Prestito") io sono riuscito a farmelo visualizzare se è più di uno in questo modo...sono stato bravo??? dt = ds.Tables("ArcImpiegati") ResultRow = dt.Select("Impiegato='" & txtImpiegato.Text & "'") i = ResultRow.Length() For i = 0 To i - 1 txtPrestito.Text = ResultRow(i).Item("Prestito") Next ecco...volevo chiederti se non c'era un modo come in vb6 dove potevi scorrere il db,in questo caso il datatable fino alla fine dei record o fino all'inizio...BOF EOF erano le 2 proprietà...io prima di applicare questo piccolo ciclo volevo scorrere i record dell'array che mi aveva restituito la select, quindi l'array Resultrow...spero di essermi spiegato... |
![]() |
![]() |
![]() |
#7 | ||
Member
Iscritto dal: Jul 2002
Città: TV
Messaggi: 125
|
Quote:
Se la prendi da li ottieni,anche a parità di nome,una e una sola riga. In teoria,da quello che immaginavo,hai la lista degli impiegati sulla listbox e man mano che scorri gli elementi ti mostra,uno alla volta,i dati estesi per ciascun impiegato.E'cosi?Perche' se si questo For i = 0 To i - 1 txtPrestito.Text = ResultRow(i).Item("Prestito") Next ha poco senso..significa assegnare alla textbox tutti i valori della colonan prestito(sovrascrivendo man mano) delle righe che hanno più occorrenze per singolo nome! Quote:
Dim Row As DataRow ResultRows = ds.Tables("ArcImpiegati").Select(<criterio>) For Each Row In ResultRows msgbox Row.Item("Prestito") Next oppure,come hai fatto tu,via indice(preferisco la soluz. sopra) For i as integer= 0 To ResultRow.Length()- 1 txtPrestito.Text = ResultRow(i).Item("Prestito") Next idem se applicato a tutta la datatable For Each Row In ds.Tables("ArcImpiegati").Rows msgbox Row.Item("Prestito") Next |
||
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Sep 2003
Messaggi: 1025
|
Quote:
per quanto riguarda questo mi sembra di capire che non esiste una proprietà che mi porti all'ultimo o al primo record di un datarow con quello che mi hai scritto tu mi scorro tutto il datarow fino alla fine e per ogni riga mi scrive in una msgbx il contenuto di quel specifico campo...io volevo associarlo ad un altro controllo della form per visualizzare ogni record dell'array...e poi mi serviva sapere la fine e l'inizio per posizionarmi sul primo e sull'ultimo record del datarow.... ah un'altra cosa che non centra niente...volevo sapere come faccio ad importare i controlli di un form all'interno di un modulo...un giorno c'ero riuscito ma non mi ricordo più...perchè se non dichiari niente non ti vede nessun controllo...mentre in vb6 te li vede subito... |
|
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Sep 2003
Messaggi: 1025
|
Cerrrto che c'è
Dim Row As DataRow ResultRows = ds.Tables("ArcImpiegati").Select(<criterio>) For Each Row In ResultRows msgbox Row.Item("Prestito") Next idem se applicato a tutta la datatable For Each Row In ds.Tables("ArcImpiegati").Rows msgbox Row.Item("Prestito") Next [/quote] mi da un errore...dice che row non è un menbro dell'array |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Sep 2003
Messaggi: 1025
|
mi da un errore...dice che row non è un menbro dell'array [/quote]
funziona sbagliavo io....se mi puoi risp a quello che ti ho scritto sopra mi fai un enorme piacere... |
![]() |
![]() |
![]() |
#11 | ||
Member
Iscritto dal: Jul 2002
Città: TV
Messaggi: 125
|
Quote:
Dim FirsRow,LastRow As DataRow FirstRow = ds.Tables("ArcImpiegati").Rows(0) LastRow=ds.Tables("ArcImpiegati").Rows(ds.Tables("ArcImpiegati").Rows.Count-1) Quote:
|
||
![]() |
![]() |
![]() |
#12 | |
Senior Member
Iscritto dal: Sep 2003
Messaggi: 1025
|
Quote:
infatti è quello che volevo fare io...pensavo esistesse una proprietà specifica cmq grazie... Intendo quando in un modulo devi richiamare il controllo di un form...io ho aggiunto un modulo nel mio progetto dove intendo mettere tutte le funzioni e le sub, come il "popola tabella" volevo sapere come posso rendere visibili i controlli del form all'interno del modulo...se io all'interno del modulo scrivo txtImpiegato.text non me lo riconosce come controllo del mio form...devo dichiarare qualcosa all'inizio??? |
|
![]() |
![]() |
![]() |
#13 |
Member
Iscritto dal: Jul 2002
Città: TV
Messaggi: 125
|
L'ambito predefinito di visibilità del controllo e' solo la form quindi ,logicamente,non puoi accedere al controllo direttamente.
La soluzione più semplice(e applicabile nella maggior parte dei casi) e' passare alla funzione il controllo stesso. Altrimenti bisogna ricavarsi la form interessata,fare una verifica su che form e' e,infine,ciclare nella controlcollections della form. Ho affrontato lo stesso "problema" e ti consiglio il primo metodo,non grava granchè sulle prestazioni ed e' molto semplice |
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Sep 2003
Messaggi: 1025
|
In pratica lo devo passare come argomento...passo come argomento il form...ma mi ricordo che avevo scoperto un metodo...ma poi perchè hanno fatto una boiata simile??era così comodo avere i controlli anche sui moduli, anche se davanti dovevi mettere il nome del form...
sei un guru...vedo che rispondi a mille discussioni...sei diventato il mio idolo...ho chiamato un mio programma di prova "geen" grazie come sempre |
![]() |
![]() |
![]() |
#15 |
Member
Iscritto dal: Jul 2002
Città: TV
Messaggi: 125
|
Non e' una boiata,prima la form e tutti i suoi controlli erano bel che istanziati da subito permettendoti quindi di avere la visibilità diretta.Ora,con il passaggio a un ambiente completamente object oriented,anche le form sono classi e istanziate solo a runtime..per questo sei obbligato a passare i controlli come argomenti della funzione.E' un piccolo svantaggio..ma con il passaggio a un ambiente O.O. ne abbiamo guadagnato millemila volte di più!
Cmq non passerei la form intera,per questione di comodità di lavoro e per rendere quanto più generico il codice.Quindi in un ipotetica funzione PopolaTabella,passerei solo la grid e restituirei magari un bool o il numero di righe caricate Public function PopolaTabella(Grid as <TipoTabella>,DataTable)as boolean end function Ps: Ti ringrazio del guru,anche se un pelo esagerato..magari esserlo! |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:22.