Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    23

    [VB6] gestione picture box

    Salve a tutti,
    sto consultando un'applicazione che dovrebbe consentire di cliccare su una picture box, far apparire momentaneamente un cerchio e memorizzarne la posizione su una serie di 10 CommandButton.

    Il codice :
    codice:
    Const Raggio = 20
    
    Private Sub cmdCerchio_Click(Index As Integer)
    f = FreeFile
    Open "CERCHI.TXT" For Input As #f
    For i = 1 To Index
        Input #f, cx
        Input #f, cy
    Next i
    Close #f
    picProgr.Cls
    picProgr.Circle (cx, cy), Raggio
    LabelX = cx
    LabelY = cy
    End Sub
    
    Private Sub Form_Unload(Cancel As Integer)
    Kill "CERCHI.TXT"
    End Sub
    
    Private Sub picProgr_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Static NumCerchio
    If NumCerchio = 10 Then Exit Sub
    picProgr.Cls
    picProgr.Circle (LabelX, LabelY), Raggio
    NumCerchio = NumCerchio + 1
    f = FreeFile
    Open "CERCHI.TXT" For Append As #f
    Write #f, LabelX
    Write #f, LabelY
    Close #f
    cmdCerchio(NumCerchio).Visible = True
    End Sub
    
    Private Sub picProgr_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    LabelX = X
    LabelY = Y
    End Sub
    
    Private Sub picProgr_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    picProgr.Cls
    End Sub
    Riscontro delle anomalie :
    1) dopo il clic, il cerchio non viene visualizzato;
    2) il primo CommandButton non appare;
    3) dopo 10 clic vi è un messaggio di errore di run-time 340 : 'L'elemento '10' della matrice di controlli non esiste'

    Il sorgente ha, quindi, delle imperfezioni. Quali ?

    Qualcuno può aiutarmi ad individuarle ?
    Grazie

  2. #2

    Re: [VB6] gestione picture box

    Originariamente inviato da getti
    2) il primo CommandButton non appare;
    3) dopo 10 clic vi è un messaggio di errore di run-time 340 : 'L'elemento '10' della matrice di controlli non esiste'
    Grazie
    da queste 2 voci mi viene da pensare che l'indice dei tasti va da 0 a 9, mentre tu li consideri da 1 a 10, quindi ti salta il primo (0) e ti dice che manca l'ultimo (10).
    Non ho prove per dire questo, pero' mi sembra la soluzione + logica

  3. #3
    per quel che riguarda il punto 1 dovresti verificare che, tenendo conto dell'unità di misura della picture box, il centro del cerchio non sia fuori, cioè cx deve essere + piccola di picProg.Width e cy deve essere + piccola di picProg.Height, altrimenti vedi solo una parte del cerchio oppure non vedi niente.

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    23
    Ciao Luciano79
    in primo luogo ti ringrazio per le tue risposte.
    Ho verificato l'array cmdCerchio : gli indici vanno da 0 a 9.
    Quindi non capisco : se NumCerchio parte da 0,perchè non appare il cmdCerchio(0) ?
    Cx e cy non dovrebbero corrispondere alle coordinate del cursore, che poi vengono replicate al clic su un cmdCerchio ?
    Sono agli inizi e non riesco ad analizzare in profondità.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    23
    Ciao Luciano79
    stavo riflettendo su un particolare del listato:
    forse l'istruzione NumCerchio = NumCerchio + 1 non deve precedere l'altra cmdCerchio(NumCerchio).Visible = True, perchè così si attiva il cmd con l'index incrementato di 1.
    Ho provato ad invertire l'ordine delle due istruzioni, ora il primo cmd appare.
    Tuttavia, mentre con gli altri cmd appare un punto (non un cerchio) sulla picture, col primo non avviene.
    Che ne pensi ?

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    23
    Ciao Luciano79
    Ok, ho fatto apparire anche il punto corrispondente al cmd di index 0 cambiando - nell'evento click - l'istruzione for i=1 to index in for i=0 to index
    A questo punto dovrei risolvere il problema della non apparizione dei cerchi

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    23
    Ciao Lu
    forse l'arcano si è svelato. Ho settato Const Raggio ad un valore più alto di 20, ora finalmente il cerchio appare. Dunque il valore 20 mi dava un cerchio 'non visibile' perchè assimilato ad un punto. Mi chiedo : 20 viene recepito in pixel o twips o che ? Qual è l'unità di misura ?
    Grazie

  8. #8
    ok, il punto è in realtà un cerchio mooolto piccolo, perchè devi aumentare il raggio.
    Infatti tu scrivi "raggio=20", ma nell'unità di misura di default (ScaleMode = 1, che do per scontato che non l'hai cambiata se sei agli inizi) 20 è un puntino. Prova per esempio a mettere 200 oppure cambia l'unità di misura (ScaleMode)

  9. #9
    Originariamente inviato da getti
    Ciao Lu
    forse l'arcano si è svelato. Ho settato Const Raggio ad un valore più alto di 20, ora finalmente il cerchio appare. Dunque il valore 20 mi dava un cerchio 'non visibile' perchè assimilato ad un punto. Mi chiedo : 20 viene recepito in pixel o twips o che ? Qual è l'unità di misura ?
    Grazie
    mi hai anticipitato di 1 minuto... comunque fai bene a provarci prima da solo, impari molto + in fretta

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    23
    Ciao Lu
    ti ringrazio ancora per gli ulteriori chiarimenti. Credimi, io ci provo, ma è senz'altro incentivante sentire il parere di persone più esperte : dallo scambio di informazioni si trae molto più vantaggio che non ragionando da soli.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.