Oppure

Loading
18/05/08 21:42
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....

 Dim posizione As Boolean
 posizione = True
  Do While posizione = True
    Pause 0.2
    Text(0).Text = Form1.Top
    Text(1).Text = Form1.Left
  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?.....
19/05/08 7:09
gantonio
Non c'e' un modo per farlo a parte il timer ... non capisco perche' non devi usarlo ...
aaa
19/05/08 12:41
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....

19/05/08 13:59
Shutdown
"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 19/05/08 14:03
aaa
20/05/08 16:10
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
20/05/08 17:03
Overflow
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:
'te lo spiego un po
const TRASCINAMENTO = 161
Private Type POINTAPI
        x As Long
        y As Long
End Type


Private Type MSG
    hwnd As Long
    message As Long
    wParam As Long
    lParam As Long
    time As Long
    pt As POINTAPI
End Type


Private Sub Command1_Click()
Dim c As MSG
Dim d As Long

'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.
While 1 = 1
d = GetMessage(c, Form1.hwnd, 0, 0)
If c.message = TRASCINAMENTO  Then
Text1.Text = Form1.Top
Text2.Text = Form1.Left
End If

DispatchMessage c
DoEvents
Wend


End Sub

Private Sub Form_Load()

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 21/05/08 5:36
aaa
22/05/08 20:09
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.....