PDA

Visualizza la versione completa : [Delphi] ...maledette scrollbars


ellesseddi
28-09-2002, 13:31
come posso fare in modo che muovendo la scrollbar verticale di un oggetto automaticamente si sposti anche quella di un altro oggetto presente nella stessa form?
avete sennò altri modi di risolvere il problema di far scorrere due liste (ad es. ListBox) insieme?

grazie,
Nicola.

alka
28-09-2002, 13:45
A livello teorico - poichè quello pratico andrebbe implementato e verificato - si potrebbe creare un controllo che derivi dalla ListBox originale, o dal controllo di cui vuoi ricevere le notifiche delle operazioni di "scrolling" attraverso le barre di scorrimento.

Una volta creato il discendente, puoi aggiungere dei metodi privati di intercettazione dei messaggi di Windows (non so ancora quali sono quelli relativi allo spostamento generato dalle scrollbar) e scrivere quindi codice che agisca di conseguenza, generando un evento o intraprendendo tutte le azioni specifiche del caso.

Non è una cosa immediata comunque, quindi forse potresti vedere una soluzione alternativa, oppure cercare qualche componente alternativo che implementi funzionalità simili a quelle che ti servono.

Poi, una curiosità: che senso ha far scrollare due liste contemporaneamente?? :)

Ciao! :ciauz:

ellesseddi
28-09-2002, 14:00
quello che hai detto l'ho capito ma non so se riuscirò mai a metterlo in pratica, comunque grazie.

adesso ti spiego il mio problema, forse riuscirai a propormi un valido metodo alternativo.
ho una checklistbox che prende valori da un db e, per ogni voce, creo uno spinedit che mi si deve visualizzare quando la voce è checkata. se al parent dello spinedit dò la form, quando scorro la checklist gli spinedit mi rimangono fermi; se invece al parent passo il nome della checklist gli spinedit mi si cancellano quando io seleziono la voce corrispondente della checklist. ho pensato quindi di fare due liste separate, che si muovessero entrambe contemporaneamente.

non so che fare.

grazie comunque,
ciao :ciauz: :ciauz:

alka
28-09-2002, 14:13
Credo di aver capito il tuo problema. In pratica, tu vuoi avere una serie di controlli CheckBox posizionati sul tuo form che possano scorrere e che siano tutti associati ad un determinato record della tua tabella, giusto?
Per ciascun record, deve essere presente anche un controllo SpinEdit che scorra nella visualizzazione assieme alle CheckBox relative allo stesso record, ho indovinato?

Che metodo usi per accedere al database? Se usi BDE, ADO o i componenti specifici di InterBase (insomma, un DataSet comune di Delphi), puoi sfruttare il controllo TDBCtrlGrid (pagina "Data Controls" della Palette dei Componenti).

Questo controllo ti visualizza una griglia in cui inserire controlli visuali. Quando la griglia viene associata ad una sorgente dati, l'interfaccia viene automaticamente duplicata per ogni record. Quindi, arriverai ad avere tante righe con ciascuna la tua DBCheckBox e lo SpinEdit che puoi utilizzare per editare il record corrente.

Consulta la Guida in linea di Delphi, credo sia il controllo che fa per te.

P.S.: non puoi definire tutti i controlli visuali come Parent di un altro controllo...solo quelli che supportano questa modalità, come i pannelli (TPanel), le form, ecc., possono esserlo. Se un controllo non può fare da Parent, il controllo non potrà più essere visualizzato (e infatti ti scompariva lo SpinEdit quando tentavi di inserirlo in una ListBox, che non può fare da Parent).

Ciao! :ciauz:

ellesseddi
28-09-2002, 14:31
grazie!

proverò e ti farò sapere...

Loading