+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 8 su 8

spostare elementi nel form

  1. #1
    Sn0rky non è in linea Scolaretto
    Post
    337
    Like Inviati  
    1
    Like Ricevuti  
    0
            Dim posizione As Double = Panel1.Left
            Do
                Panel1.Width = Panel1.Width - 1
            Loop Until Panel1.Width = 50
            Do
                Panel1.Height = Panel1.Height - 1
            Loop Until Panel1.Height = 50
            For i = 1 To 250
                Panel1.Left = posizione + i
            Next
            Application.DoEvents()
    
    con questo codice "rimpicciolisco" un panel e lo sposto "parcheggiandolo" in alto a destra del form
    avete un codice migliore o più performante di questo?
    soprattutto il ciclo for... ho pensato di farlo così semplicemente perché non ho controllo sulla dimensione del form ma sono fisse le "dimensioni" dello spostamento
    in realtà la mia form può assumere solo 2 dimensioni: finestra fissa o tutto schermo, ma non conosco la dimensione dello schermo [a parte Screen.WorkingArea]

    dite che si può far meglio? accetto consigli!
    grazie

  2. #2
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Post
    3,084
    Like Inviati  
    2
    Like Ricevuti  
    4
    Ma che differenza c'è tra
    Quote Originariamente inviato da Sn0rky Visualizza il messaggio
            Do
           Panel1.Width = Panel1.Width - 1
           Loop Until Panel1.Width = 50
    
    e un semplice
    Panel1.Width = 50
    
    ?
    Lo stesso vale per l'altezza.
    Poi, perché la variabile posizione è Double?
    Comunque, anche se non si capisce bene cosa vuoi fare, potresti usare la proprietà Anchor.
    ℹ️ Leggi di più su Brontolo ...

  3. #3
    Sgrubak non è in linea Scribacchino
    Post
    513
    Like Inviati  
    9
    Like Ricevuti  
    2
    Oltre al consiglio di Brontolo, ti lascio anche il link ai metodi Control.SuspendLayout e Control.ResumeLayout che ottimizzano la modifica a proprietà che costringono il ridisegno di qualsiasi controllo.

  4. #4
    Sn0rky non è in linea Scolaretto
    Post
    337
    Like Inviati  
    1
    Like Ricevuti  
    0
    Quote Originariamente inviato da Brontolo Visualizza il messaggio
    Ma che differenza c'è tra

    e un semplice
    Panel1.Width = 50
    
    ?
    Lo stesso vale per l'altezza.
    Poi, perché la variabile posizione è Double?
    Comunque, anche se non si capisce bene cosa vuoi fare, potresti usare la proprietà Anchor.
    semplicemente crea una sorta di animazione, ho messo double, potevo mettere integer... in questo caso poco importa
    per l'anchor... cambia poco che sia ancorato a sinistra o destra, il controllo si adatta, certo, ma io devo variarne la dimensione "totale" e la posizione sempre riferendomi a top e left (in questo caso solo left)

    Quote Originariamente inviato da Sgrubak Visualizza il messaggio
    Oltre al consiglio di Brontolo, ti lascio anche il link ai metodi Control.SuspendLayout e Control.ResumeLayout che ottimizzano la modifica a proprietà che costringono il ridisegno di qualsiasi controllo.
    ho letto... in questo mio caso particolare però non credo faccia al caso mio, no?

  5. #5
    Sgrubak non è in linea Scribacchino
    Post
    513
    Like Inviati  
    9
    Like Ricevuti  
    2
    No, non ti servono se vuoi ottenere l'animazione. Non lo avevo colto dal messaggio di apertura. Avevo inteso che tu, per ottimizzazione, intendessi proprio l'esatto contrario.

    Quindi cosa intendi?

  6. #6
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Post
    3,084
    Like Inviati  
    2
    Like Ricevuti  
    4
    Quote Originariamente inviato da Sn0rky Visualizza il messaggio
    semplicemente crea una sorta di animazione
    Lo sospettavo, ma non credo che tu riesca a vederla considerando il tempo di esaurimento del Loop. Casomai il DoEvents andrebbe all'interno del Loop, ma se non introduci un piccolo ritardo non vedrai nessuna animazione.

    Quote Originariamente inviato da Sn0rky Visualizza il messaggio
    ho messo double, potevo mettere integer... in questo caso poco importa
    Ma sì, certo. Chi ha inventato tutti quei tipi di dato lo ha fatto solo per farci perdere tempo !
    ℹ️ Leggi di più su Brontolo ...

  7. #7
    L'avatar di SirJo
    SirJo non è in linea Scolaretto
    Post
    50
    Like Inviati  
    5
    Like Ricevuti  
    2
    Quote Originariamente inviato da Brontolo Visualizza il messaggio
    Ma sì, certo. Chi ha inventato tutti quei tipi di dato lo ha fatto solo per farci perdere tempo !

  8. #8
    Sn0rky non è in linea Scolaretto
    Post
    337
    Like Inviati  
    1
    Like Ricevuti  
    0
    Quote Originariamente inviato da Brontolo Visualizza il messaggio
    Ma sì, certo. Chi ha inventato tutti quei tipi di dato lo ha fatto solo per farci perdere tempo !
    eeeeeehhhhhhh dai... in questo caso nulla cambia, seriamente!
    in effetti l'animazione è così repentina che ha poso senso... (ovviamente hai ragione sul doevents...)
    meglio? :P
    Dim posizione As Integer = Panel1.Left
            Do
                Panel1.Height = Panel1.Height - 1
                Application.DoEvents()
            Loop Until Panel1.Height = 50
            Do
                For i = 1 To 250
                    Panel1.Left = posizione + i
                    Panel1.Width = Panel1.Width - 1
                    Application.DoEvents()
                Next
            Loop Until Panel1.Width = 50
    
    Ultima modifica di Sn0rky; 15-12-2020 10:45 

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Spostare form
    Da @rlo nel forum Visual Basic 6
    Risposte: 2
    Ultimo Post: 16-01-2009, 01:15
  2. Spostare il form
    Da k17 nel forum Visual Basic .Net
    Risposte: 7
    Ultimo Post: 21-04-2008, 15:29
  3. Spostare il form con un click
    Da k17 nel forum Visual Basic .Net
    Risposte: 4
    Ultimo Post: 19-01-2008, 18:14
  4. Spostare FORM lentamente
    Da Cis nel forum Visual Basic 6
    Risposte: 8
    Ultimo Post: 31-07-2007, 16:33
  5. spostare il form
    Da nemesis-87 nel forum Visual Basic 6
    Risposte: 2
    Ultimo Post: 01-02-2006, 17:24