Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - posizione form
Forum - Visual Basic 6 - posizione form

Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 1:00
Giovedì, 01/01/1970
salve ragazzi....
oggi sono alle prese con un problemino di per se' piuttosto banale....rilevare la posizione del form ( height, top )mano a mano che lo sposti....rilevare la posizione del form e' cosa di per se' piuttosto semplice, basta creare un timer con intervallo piuttoosto corto che di volta in volta verifichi la posizione del form,....pero' io non vorrei usare un timer, allor mi son creato un ciclo do while con una variabile booleana....

Codice sorgente - presumibilmente VB.NET

  1. Dim posizione As Boolean
  2.  posizione = True
  3.   Do While posizione = True
  4.     Pause 0.2
  5.     Text(0).Text = Form1.Top
  6.     Text(1).Text = Form1.Left
  7.   Loop



pero' cosi' facendo mi rileva la posizione solo dopo lo spostamento , invece io avrei bisogno di sapere i valori man a mano che il form viene spostato......

qualcuno ha qualche idea?.....

PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 9:09
Lunedì, 19/05/2008
Non c'e' un modo per farlo a parte il timer ... non capisco perche' non devi usarlo ...

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 14:41
Lunedì, 19/05/2008
non e' che' non possa usarlo, non voglio usare un timer..e' semplicemente una scelta programmatica..nei programmi fatti in passato di timer ne ho usati parecchi a iosa, questa volta ho deciso di sviluppare  questa chat senza nenahce un timer, ed a dire il vero  con il ciclo do while e quella famosa pausa sta' andando alla grande, ho evitato tutti i timer( che di per se' e' un eccellente componenete ).....

l base di tutto questo giochetto e' riuscire a muovere du form contemporaneamente e non posso usare un setpatrent altrimenti l'effetto grafico svanisce....
praticamente metto un form sotto con una immagine e al form sopra gli do' la trasparenza cosi' vien fuori un trucchetto per il traslucido.....aime' con il set parent non funziona piu' , perche' far diventere trasparente un form non e' difficile fare diventare trasparente un componente del form   e' difficilissimo e con il setparent un form diventa un componenete dell'altro form....

morale della favola ( che mi son dilungato assai ) e' trovare una tecnica per spostare due form contemporaneamente, anche il timer di per s'e' non e' immediato e lascia uno strascinamento....

  

PM Quote
Avatar
Shutdown (Founder Member)
Guru


Messaggi: 1212
Iscritto: 10/09/2005

Segnala al moderatore
Postato alle 15:59
Lunedì, 19/05/2008
"iosa"? "strascinamento"? :-|

Mah..

Spero tu sappia essere più chiaro.
Credo che avrai difficoltà nell'ottenere risposte.

Mi dispiace ma io non capisco questa tua scelta "programmatica". Non capisco davvero dove sia il tuo problema.

Scusa.

Ultima modifica effettuata da Shutdown il 19/05/2008 alle 16:03
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 18:10
Martedì, 20/05/2008
e' una scelta programmatica forse ho  usato una parolona pero' credo sia quella piu' adatta.....
volevo dire che in passato nei miei progetti di timer ne ho sempre usati molti....questa volta volevo sviluppare un programma senza metterne neanche uno....non c'e' un motivo logico dietro e' solo una decisione che ho preso....

il mio interrogativo che mi ponevo e' se c'e' un modo per fare muovere 2 forms senza usare il setparet o un timer....

ma credo che la cosa non si possa fare....

grazie a tutti che hanno partecipato alla discussione

PM Quote
Avatar
Overflow (Normal User)
Expert


Messaggi: 334
Iscritto: 11/01/2008

Segnala al moderatore
Postato alle 19:03
Martedì, 20/05/2008
ciao, ho provato a fare qualcosa ma.. non è fattibile. Ti posto quello che sono riuscito a fare..  e se riesci ad aggiustare qualcosa. A renderlo più "agilbile"
Allora in un form metti due textbox e un commandbutton e poi:
Codice sorgente - presumibilmente VB.NET

  1. 'te lo spiego un po
  2. const TRASCINAMENTO = 161
  3. Private Type POINTAPI
  4.         x As Long
  5.         y As Long
  6. End Type
  7.  
  8.  
  9. Private Type MSG
  10.     hwnd As Long
  11.     message As Long
  12.     wParam As Long
  13.     lParam As Long
  14.     time As Long
  15.     pt As POINTAPI
  16. End Type
  17.  
  18.  
  19. Private Sub Command1_Click()
  20. Dim c As MSG
  21. Dim d As Long
  22.  
  23. 'qui faccio un ciclo infinto per controllare gli eventi quando trovo il 161 che sarebbe il trascinamento della finestra mi salvo i valore della nuiocva posizione della finestra, dopodiche li rimetto in coda.
  24. While 1 = 1
  25. d = GetMessage(c, Form1.hwnd, 0, 0)
  26. If c.message = TRASCINAMENTO  Then
  27. Text1.Text = Form1.Top
  28. Text2.Text = Form1.Left
  29. End If
  30.  
  31. DispatchMessage c
  32. DoEvents
  33. Wend
  34.  
  35.  
  36. End Sub
  37.  
  38. Private Sub Form_Load()
  39.  
  40. End Sub



stavo pensando a come poi fermare il ciclo while..
comunque se questo ti può servire a qualcosa...
Ciao.
... forse c'è un po di codice inutile. Comunque ripensandoci potresti usare una SetTimer e KillTimer.

Ultima modifica effettuata da Overflow il 21/05/2008 alle 7:36
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 22:09
Giovedì, 22/05/2008
ho provato ma non riesco ad ottenere quello che pensavo, mi restituisce si il valore delle posizioni ma allo stesso modo del ciclo che avevo postato inizialmente....mi sa' che saro' costretto ad usare il timer....

grazie della partecipazione ragazzi, qui' non si finisce mai di imparare.....

PM Quote