Newsgroup: it.comp.lang.visual-basic
Titolo: [?] MouseDown su un controllo Line

Immaginando di disporre di vari controlli Line sul form, vorrei gestirli
(dimensionarli, trascinarli, etc.) anche in obliquo, non solo in orizzontale
o verticale (molti problemi in meno).
Ora sappiamo che il controllo Line non espone eventi, quindi hai voglia di
cliccarlo per, ad esempio, ridimensionarlo e spostarlo in fase di runtime.
E' evidente che devo basarmi su X e Y dell'evento MouseDown del form che
ospita il controllo Line.
Il punto è che dovrei scoprire quali sono tutti i pixels (o quel che sono)
del form "occupati" da un controllo Line, giusto per sapere (pur con
adeguata tolleranza nelle vicinanze) se ne sto "cliccando" uno.
Avete qualche idea (tranne Pitagorare per una vita) se esiste qualche
formuletta magica? Grazie.

ciao Lupo
avevo anch'io lo stesso problema e mi sono fatto un piccolo controllo cosi'
potevo ridimensionarlo spostarlo , colorarlo ecc....
ciao
Ilario

Lupo ha scritto:





potrebbe andar bene la funzione Point(x, y) o l'API GetPixel() che
restituisce il colore del pixel ? Ovviamente ogni controllo Line dovrà
avere un colore diverso dall'altro.
Ciao,
*Roby*
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 formuletta magica? Grazie.
quando ho fatto una cosa del genere, oltre a dover spostare la linea (usavo
.net, il controllo line non c'è) dovevo anche poter modificare dimensioni e
orientamento. ho risolto disegnando dei quadratini agli estremi e al centro
della linea, se si trascinava un estremo si modificava la posizione del
medesimo, se si trascinava quello centrale si spostava la linea mantenendola
parallela a se stessa (mi sembra che sia paro paro il comportamento del
controllo line al design time).
in 
vb.net
 il concetto non cambiava, in quanto dovevo ad ogni mousedown
verificare se le coordinate del punto erano comprese in quelle di uno dei
quadratini, ma se fai i quadratini con delle piccole label, forse puoi
sfruttare gli eventi del controllo.
-- 
Salutoni
Sergio
per rispondere... togli il group dall'indirizzo

 design time).
Mi sembra un'idea, lasciare degli appigli "sensibili" agli eventi anche in
fase di runtime per la gestione e toglierli a richiesta per pulire il
disegno. Grazie.

 avere un colore diverso dall'altro.
Ovviamente?

 Ovviamente?
credo che sia per riconoscere su quale linea è stato effettuato il click


 pulire il disegno
peccato che ti dovrai gestire una sorta di "focus" in manuale.


 click
Ho capito, ma per me le line possono essere, ovviamente (!), di tutti i
possibili colori, anche tutte uguali, e ci mancherebbe pure che ogni line
debba essere di colore diverso solo per poterla beccare...

 peccato che ti dovrai gestire una sorta di "focus" in manuale.
Non l'ho capita, ma ho già fatto: Abbino a ogni Line (tramite Tag) due
maniglie (no, quella centrale, pensando all'obliquo, non la metto) con
indice univoco, le lascio sempre esposte in testa e in coda alla Line di
competenza. Quando clicco su una qualsiasi maniglia ne riconosco l'Index e
lo vado a cercare nella Tag di tutte le Line che ho, scoprendo quale sia
l'esatta Line di cui ho cliccato una delle due maniglie. Un bel For e sono a
posto.

 o verticale (molti problemi in meno).
we lupacchiotto
vedi un po' se ti serve
http://www.gbcweb.com/free/vb_routines/line_clickonalinecontrol_distln2.zip
caldoooooooooooooooooooooooooooooooooooooooo
ci vorrebbe proprio un po' di lambruschino fresco...
-> GbC|
www.gbcweb.com


http://www.gbcweb.com/free/vb_routines/line_clickonalinecontrol_distln2.zip
Grazie, ci guardo.

 Grazie, ci guardo.
Carino, leggero e funzionante. Me lo studio. Grazie.

 formuletta magica? Grazie.
metti sopra ogni linea una label trasparente delle stesse dimensioni della
linea e intercetti l'evento generato su di essa.
CIAO