Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: bonmario - Novembre 09, 2012, 10:18:33 am

Titolo: Scrolling sulle TStringGrid con la rotella del mouse
Inserito da: bonmario - Novembre 09, 2012, 10:18:33 am
Ciao,
mi hanno fatto notare un comportamento strano dei programmi fatti col Lazarus.
Praticamente il òproblema è questo: andate con Esplora Risorse in una cartella che contiene tanti files e selezionatene uno. Se muovete su e giù la rotella del mouse, il file selezionato rimane sempre lo stesso, ed è l'elenco che si muove in su ed in giù.
Ho provato anche con alcuni files manager in Linux e si comportano alla stessa maniera.
Se si fa la stessa cosa su una TStringGrid in Lazarus, muovendo su e giù la rotella del mouse, viene cambiato l'elemento selezionato.

Sapete se è possibile fare in modo di avere lo stesso comportamento di Esplora risorse e degli altri files manager?

Grazie in anticipo, Mario
Titolo: Re:Scrolling sulle TStringGrid con la rotella del mouse
Inserito da: nomorelogic - Novembre 09, 2012, 03:04:37 pm
ciao Mario
vai sull'object inspector ed imposta
MouseWheelOption = mwGrid
Titolo: Re:Scrolling sulle TStringGrid con la rotella del mouse
Inserito da: bonmario - Novembre 09, 2012, 04:50:45 pm
Grande, era proprio quello !!!!!
Un'altra domanda sempre sullo stesso argomento: quando "trascino" la scrollbar in alto o in basso, la griglia non si muove fino a quando non rilascio la scrollbar. Se faccio la stessa cosa ad esempio con una ListBox, mentre trascino la scrollbar muove la ListBox, in questo modo, riesco a capire dove sono arrivato senza mollare la scrollbar.  Come faccio ad ottenere lo stesso comportamento con la TStringList?

Grazie ancora, Mario
Titolo: Re:Scrolling sulle TStringGrid con la rotella del mouse
Inserito da: nomorelogic - Novembre 09, 2012, 05:01:47 pm

in Options:
goThumbTracking = TRUE

ciao
Titolo: Re:Scrolling sulle TStringGrid con la rotella del mouse
Inserito da: bonmario - Novembre 09, 2012, 06:34:40 pm
Ottimo !!!

Per fare in modo di avere questi 2 comportamenti di default per tutte le TStringGrid, l'unica cosa che posso fare è modificare il sorgente "grids.pas" prima di ricompilare l'IDE, giusto?

Grazie ancora, Mario
Titolo: Re:Scrolling sulle TStringGrid con la rotella del mouse
Inserito da: nomorelogic - Novembre 09, 2012, 06:51:26 pm
è possibile ma non è di sicuro la strada giusta...

Secondo me l'approccio migliore è che ti fai un componente personalizzato ad esempio TMyStringGridche eredita da TSgringGrid e poi imposti tutto quello che vuoi e l'unica cosa che devi fare è usare il tuo componente.

ciao
Titolo: Re:Scrolling sulle TStringGrid con la rotella del mouse
Inserito da: bonmario - Novembre 09, 2012, 07:41:13 pm
E' fuori dalla mia portata ... non saprei come fare ad aggiungerlo ai componenti che seleziono in alto nell'IDE un nuovo componente.
Se poi grazie a qualche congiunzione astrale favorevole riuscissi a farlo, mi rimarrebbe il problema di tutte le TStrinGrid dei progetti già fatti: dovrei modificare i sorgenti per usare TSgringGrid in TMyStringGrid.

A me piace vincere facile !!!!!!

Grazie comunque dell'idea.
Ciao, Mario
Titolo: Re:Scrolling sulle TStringGrid con la rotella del mouse
Inserito da: nomorelogic - Novembre 10, 2012, 07:29:16 pm
Se poi grazie a qualche congiunzione astrale favorevole riuscissi a farlo, mi rimarrebbe il problema di tutte le TStrinGrid dei progetti già fatti: dovrei modificare i sorgenti per usare TSgringGrid in TMyStringGrid.
A me piace vincere facile !!!!!!

ciao Mario
se gli astri ti sorridono, per vincere facile basta fare un search/replace da TSgringGrid a TMyStringGrid, sia nel .pas che nel .lfm
;)

Titolo: Re:Scrolling sulle TStringGrid con la rotella del mouse
Inserito da: bonmario - Novembre 10, 2012, 07:33:40 pm
Mi hai quasi convinto ... sai se c'è in giro qualche guida, anche in inglese, su come aggiungere un componente alla barra dei componenti?

Grazie, Mario
Titolo: Re:Scrolling sulle TStringGrid con la rotella del mouse
Inserito da: nomorelogic - Novembre 11, 2012, 10:35:45 am
ho trovato questa guida
http://wiki.freepascal.org/How_To_Write_Lazarus_Component (http://wiki.freepascal.org/How_To_Write_Lazarus_Component)

non sembra una cosa complicata, nel loro esempio scrivono un nuovo componente ereditando da TComboBox, tu dovrai invece specificare TStringGrid.
La guida sembra lunga ma in realtà a te interessa fino a circa la metà e poi... ci sono un sacco di figure :D

Una volta ottenuto il tuo componente dovrai intervenire sul costruttore (Create) per impostare le proprietà che ti interessano  al valore che preferisci.

Tienici aggiornati.
Ciao
Titolo: Re:Scrolling sulle TStringGrid con la rotella del mouse
Inserito da: bonmario - Novembre 11, 2012, 12:45:11 pm
Grazie, vedo cosa riesco a tirare fuori.

Ciao, Mario