WinTricks Forum

WinTricks Forum (http://forum.wintricks.it/index.php)
-   Programmazione (http://forum.wintricks.it/forumdisplay.php?f=21)
-   -   scroll automatico su due listbox della stessa form. (http://forum.wintricks.it/showthread.php?t=145085)

mandrak 11-08-2009 11.47.32

scroll automatico su due listbox della stessa form.
 
Salve a tutti. :)
Avrei quesito vb5 & vb6.
In una form ho inserito due listbox.
(Ho deciso così per avere due colori diversi come colonne, dato che in una listbox sola non si può fare).
Prendendo dei dati da un DB, visualizzo i dati in entrambe le listbox, e nel
particolare, nella prima una data e nella seconda una informazione relativa
alla data della listbox a fianco.
Mi servirebbe che spostandomi con il mouse o i tasti su e giu, in una listbox, automaticamente si spostasse la parte evidenziata anche nell'altra listbox

Potete aiutarmi ?

Grazie

mandrak 24-08-2009 13.55.38

Nessuno mi può essere d'aiuto ?

LoryOne 24-08-2009 18.50.00

In pratica tu vorresti che ad esempio se l'utente seleziona il secondo elemento della prima lista, il selettore della seconda si sposti automaticamente sul secondo elemento della seconda lista ?

mandrak 25-08-2009 10.17.00

Ciao
Si vorrei ottenete quello, ma non so come.

mandrak 27-08-2009 17.21.16

Nessuno mi può aiutare ?
:crying:

LoryOne 27-08-2009 21.25.51

Private Sub Form_Load()
Dim I As Long

For I = 1 To 5
List1(0).AddItem I
List1(1).AddItem I
Next
End Sub

Private Sub List1_Click(Index As Integer)
If Index = 0 Then List1(Index + 1).ListIndex = List1(Index).ListIndex
End Sub

LoryOne 27-08-2009 22.01.10

Se vuoi fare in modo che solo i tasti freccia su e giu spostino il selettore, aggiungi queste poche righe:

Private Sub List1_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyUp, vbKeyDown
Case Else: KeyCode = 0
End Select
End Sub

Ps: Era fin troppo facile ... non disperarti per così poco ;)

mandrak 28-08-2009 16.23.42

Con questo esempio ho fatto un grosso passo in avanti.
:act:
Ora mi servirebbe che cliccando sulla barra di scorrimento verticale
di una della listbox, automaticamente scrollasse anche quella nell'altra
listbox, sia in un senso che nell'altro.
:)

LoryOne 29-08-2009 12.45.37

Beh, non è poi così difficile.
Come vedi dagli esempi precedenti, è al verificarsi di un evento che il controllo sull'oggetto può essere passato all'utente affinchè possa agire su di esso.
Ad ogni oggetto possono essere assegnate proprietà, metodi ed eventi.
L'evento possiede un'interfaccia coerente con la tipologia stessa dell'evento che si verifica, in modo che l'utente possa scrivere codice d'azione referente solo a quell'evento.
Scorrendo fra i metodi e gli eventi dell'oggetto List, troverai l'evento Scroll.
All'interno di tale evento potrai scrivere il codice che a te serve: Cerca TopIndex.
Il codice lo devi scrivere tu, io ti ho già messo sulla strada giusta. ;)

mandrak 31-08-2009 17.20.12

Con il tuo grande aiuto ho risolto i miei problemi.
Le due ListBox sono sincronizzate.
per l'ultimo problema ho aggionto :

Private Sub List2_Scroll()
List1.TopIndex = List2.TopIndex
End Sub

Con queste istruzioni le due listbox si spostano in contemporanea.
Grazie di tutto.
:) :act:

mandrak 01-09-2009 17.00.05

Per completare "l'opera" nella lista delle date ho inserito la possibilità di "fleggare" la riga con checkbox.
Automaticamente si è sfalsata la lista della date rispetto all'altra lista.
In poche parole nel caso di click su di una riga, nella lista a fianco si evidenzia una riga
non nello stesso punto.
Ho provato molte combinazioni di di stile di carattere e dimensioni ma non combacia mai.
Come posso "allineare" nuovamente le due liste ?
La checkbox mi serve solamente nella lista di sinistra.

mandrak 07-09-2009 16.37.33

nessuno ha un'idea brillante di come posso allineare nuovamente la visualizzazione delle due listbox ?

LoryOne 07-09-2009 18.35.53

Probabilmente non combacia perchè la checkbox ha un'altzza in pixels superiore al carattere che ha di fianco.
List box è un controllo standard di VB ... cerca documentazione per accedere alla lista attraverso le API di sistema ...

Ps: Un buon inizio : http://www.aleax.it/TutWin32/t42.htm
Il codice è in C, ma in Vb è ancor più semplice: char è string, int è long, RECT è una struttura e al chiamata alle API di sistema avviene dopo un declare ...
Forse hai ancora parecchio da studiare prima di buttar giu qualcosa, ma almeno ti rendi conto che avere curiosità la prima regola per chi si mette a programmare ... Alimentala ;)


Orario GMT +2. Ora sono le: 07.26.49.

vBulletin 3.8.6 - Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.