Newsgroup: it.comp.appl.access
Titolo: strana richiesta con form immagini e colori

salve a tutti, un cliente mi ha chiesto la seguente opzione:
mettere in una form l'immagine di un cuore divisa nelle varie sezioni di cui
è costituito un cuore
e di permettergli di cliccare nelle varie sezioni facendole colorare del
colore selezionato in un certo punto della form e non so ancora in che modo.
avreste alcune dritte su come operare?
Grazie.


ha scritto:

Quali sono le varie sezioni del cuore: amore verso i genitori, verso i
figli, amori etero, amori omo, verso un animale, verso Access...???
Metti dei Interrutori trasparenti sotto le parti e rendi visibile una foto
colorata +ttosto che l'altra.
ciao MAssimiliano
P.S. Ah l'amore... quanti cuori divide...
--------------------------------
Inviato via 
http://usenet.libero.it

 P.S. Ah l'amore... quanti cuori divide...
grazie ma gli interruttori non vanno bene in quanto le parti sezionate del
cuore a parte gli scherzi non sono rettangolari ma irregolari quindi dovrei
riuscire a devfinire delle parti irregolari come si fą per esempio nelle
cartine geografiche in internet che spostandosi sulle varie regioni attivi
solo quella regione. perņ non so come fare.
grazie a tutti.

colore selezionato in un certo punto della form e non so ancora in che modo.
feci una cosa analoga in un prg per dentisti
si cliccava su una delle 5 parti in cui era suddiviso il
dente, e questa si colorava
lo facevo cambiando l'immagine completa (avevo tante bmp con
le varie combinazioni, questa storia l'ho gia' raccontata
recentemente...)
pero' io avevo a che fare con due soli colori!
se questo cuore puo' essere ragionevolmente schematico
(cioe' disegnabile con un certo numero di quadretti, ad
esempio) allora puoi usare la prop. tag per "raggruppare"
tutti quelli che compongono ciascuna delle sezioni, per
poter poi fare dei cicli e cambiare colore...
mi viene il latte alle ginocchia solo a pensarci :-|
gudlac
--
lorenzo coronati
---

 > "/////////   simba883   /////////":

    Beh... Diciamo che fra tutte le cose "difficili" questa e' una delle
piu' "facili" perche' e' solo questione di metodo e pazienza.
    Attacco qui sotto un esempio nella speranza che possa essere utile come
spunto in quanto mi sembra ci siano tutti gli elementi da tenere presente.
    Si tratta di una maschera con due caselle di testo per visualizzare, a
solo scopo di debug, le posizioni di x e y, e di un controllo immagine.
    L'immagine di prova che ho usato l'ho costruita con Paint. Un quadrato
di 128 x 128 pixel di colore grigio con tre cerchi di colore nero. Salvato
con nome "0.bmp". Poi salvato altre tre volte con nomi: "1.bmp", "2.bmp" e
"3.bmp". Poi ho ricaricato questi tre file ed assegnato il colore rosso ad
un cerchio diverso per ciascuna.
    Quindi ho scritto il codice seguente. Attenzione al valore 15 di
TwipsPerPixel che dovra' essere ricavato con l'apposita funzione (mi sembra
sia sul Sito comune. Nel caso non ci sia la posso postare.)
    Ovviamente in questo esempio limitato a tre elementi ho usato delle
costanti invece di impostare un array o altro. Anche perche' penso che in
questo modo il concetto risulti piu' chiaro.
' ------------------------------------------------------------
' AC00
' ------------------------------------------------------------
' Descrizione:
'
'   Esempio di "Hot Spot".
'
' ------------------------------------------------------------
' Maurizio Borrelli
' 2002-11-01
' ------------------------------------------------------------
  Option Compare Text
  Option Explicit
  Option Base 0
' ------------------------------------------------------------
  Const mc_sMyName$ = "Form_mbMHotSpots"
' ------------------------------------------------------------
' ------------------------------------------------------------
  Const mc_iTwipsPerPixelX% = 15
  Const mc_iTwipsPerPixelY% = 15
  Const mc_iWidth% = 128
  Const mc_iHeight% = 128
  Const mc_iItemsWidth% = 22
  Const mc_iItemsHeight% = 22
  Const mc_sItem0Name$ = "0.bmp"
  Const mc_sItem1Name$ = "1.bmp"
  Const mc_iItem1Left% = 15
  Const mc_iItem1Right% = mc_iItem1Left + mc_iItemsWidth
  Const mc_iItem1Top% = 64
  Const mc_iItem1Bottom% = mc_iItem1Top + mc_iItemsHeight
  Const mc_sItem2Name$ = "2.bmp"
  Const mc_iItem2Left% = 43
  Const mc_iItem2Right% = mc_iItem2Left + mc_iItemsWidth
  Const mc_iItem2Top% = 74
  Const mc_iItem2Bottom% = mc_iItem2Top + mc_iItemsHeight
  Const mc_sItem3Name$ = "3.bmp"
  Const mc_iItem3Left% = 84
  Const mc_iItem3Right% = mc_iItem3Left + mc_iItemsWidth
  Const mc_iItem3Top% = 50
  Const mc_iItem3Bottom% = mc_iItem3Top + mc_iItemsHeight
' ------------------------------------------------------------
' ------------------------------------------------------------
  Private m_oAcApp  As Access.Application
  Private m_sPath   As String
  Private m_fX      As Single
  Private m_fY      As Single
' ------------------------------------------------------------
' ============================================================
  Private Sub Form_Close()
' ------------------------------------------------------------
  Set m_oAcApp = Nothing
  End Sub
' ============================================================
' ============================================================
  Private Sub Form_Load()
' ------------------------------------------------------------
  m_sPath = Me.imgHotSpots.Picture
  m_sPath = Mid$(m_sPath, 1, InStrRev(m_sPath, "\"))
  End Sub
' ============================================================
' ============================================================
  Private Sub Form_Open( _
    ByRef Cancel As Integer)
' ------------------------------------------------------------
  Set m_oAcApp = Access.Application
  End Sub
' ============================================================
' ============================================================
  Private Sub imgHotSpots_Click()
' ------------------------------------------------------------
  Dim iX        As Integer
  Dim iY        As Integer
  Dim sPicture  As String
' ------------------------------------------------------------
  m_oAcApp.Screen.MousePointer = myHourglass
  iX = m_fX \ mc_iTwipsPerPixelX
  iY = m_fY \ mc_iTwipsPerPixelY
  Select Case True
  Case ((mc_iItem1Left <= iX) And (iX <= mc_iItem1Right)) _
       And _
       ((mc_iItem1Top <= iY) And (iY <= mc_iItem1Bottom))
    sPicture = m_sPath & mc_sItem1Name
  Case ((mc_iItem2Left <= iX) And (iX <= mc_iItem2Right)) _
       And _
       ((mc_iItem2Top <= iY) And (iY <= mc_iItem2Bottom))
    sPicture = m_sPath & mc_sItem2Name
  Case ((mc_iItem3Left <= iX) And (iX <= mc_iItem3Right)) _
       And _
       ((mc_iItem3Top <= iY) And (iY <= mc_iItem3Bottom))
    sPicture = m_sPath & mc_sItem3Name
  Case Else
    sPicture = m_sPath & mc_sItem0Name
  End Select
  Me.imgHotSpots.Picture = sPicture
  m_oAcApp.Screen.MousePointer = myDefault
  End Sub
' ============================================================
' ============================================================
  Private Sub imgHotSpots_MouseMove( _
    ByRef Button As Integer _
  , Shift As Integer _
  , X As Single _
  , Y As Single)
' ------------------------------------------------------------
  m_fX = X
  m_fY = Y
  With Me
    .cdtX.Value = m_fX
    .cdtY.Value = m_fY
  End With
  End Sub
' ============================================================
--
Ciao :-)
Maurizio
--------
?SPQR(C)
 X
--------

spunto in quanto mi sembra ci siano tutti gli elementi da tenere presente.
piu' o meno come ho fatto io
cmq mousedown ti da' gia' le coordinate...
bai
--
lorenzo coronati
---

 cmq mousedown ti da' gia' le coordinate...
    Giusto. Ed infatti e' piu' opportuno tale evento che quello click.
Considera pero' che nell'esempio volevo che nelle caselle di testo fossero
visibili i valori delle coordinate dello spostamento (mousemove) e a quel
punto...


punto...
didatticamente ineccepibile ;-)
--
lorenzo coronati
---

> "Lorenzo Coronati" 
news:3dc7f533...@news.edisontel.com
:

    Mica tanto. Avrei dovuto far meglio. :-(
