Fnzionalità Autohide

giovedì 13 maggio 2004 - 11.57

Tambu Profilo | Newbie

Ciao a tutti,

Ho cominciato a usare da pochissimo Vb.net per cui perdonate la domanda da niubbone.
Mi piacerebbe creare un form 'a scomparsa',
implementando cioè una funzionalità simile all'autohide delle finestre dell'ide di VS.NET.
Quindi cliccando un bottone, vorrei aprire un form facendolo 'scorrere' fino al raggiungimento dell'ampiezza voluta.
Alla chiusura, procedimento inverso.

Avete qualche suggerimento da darmi?

Grassie!
Ciao

Tambu

Brainkiller Profilo | Guru

Allora la finestra è dotata di proprietà che indicano la sua posizione nello schermo
.Top e .Left ti indicano le coordinate dello spigolo superiore a sinistra e poi sommando a queste due .Height e .Width trovi le corrispondenti dello spigolo inferiore destro.
Praticamente è necessario fare un ciclo da 100 per esempio a -100 e assegnare i valori man mano alla proprietà .Top in questo modo otterrai l'effetto desiderato cioè la finestra si sposta man mano sopra lo schermo fino a scomparire fino ad arrivare a -100 (cioè fuori schermo).
La stessa cosa la puoi fare con il .Left per farla sparire a destra o a sinistra.

ciao
david

Tambu Profilo | Newbie

Perfetto!
Allora è come lo avrei fatto in VB.
Pensavo ci fossero oggetti/proprietà già pronti all'uso.

Grazie mille!
CIAO!

Tambu

Andy Profilo | Senior Member

..ehm..scusate l'intrusione e la domanda niubba...io ho provato x curiosità ma, come già prevedevo, l'esecuzione è talmente veloce che non noto l'effetto...cosa si usa x perdere tempo tra un ciclo e l'altro?
Io in c conoscevo la "Sleep()", ma qui nn trovo nulla..
Grazie in anticipo
Ciao

alextyx Profilo | Expert

Mai avuto il problema di rallentare l'esecuzione....magari!!!! :-)))
Cmq, ho sentito anch'io paralare di sleep, ma nn ho mai verificato se ci sia su VB.NET.
Di sicuro puoi usare un Timer, magari facendo partire la scomparsa con un incremento ogni 200msec., per i primi 2 o tre passi, poi velocizzando, cioè diminuendo i ms. ogni tanti cicli, fino ad arrivare al minimo (una 35 ina di ms.) sotto il quale il Timer nn è più affidabile. Otterresti l'effetto accelerazione. Invertendo la logica, avresti un Form che entra come un razzo e poi rallenta avvicinandosi alla meta. Tieni presente, se invece vuoi usare un ciclo che testa il tempo per dirigere le operazioni, che puoi recuperare Tick di 100ns l'uno (se nn sbaglio) e senza usare API, solo con le dormali dotazioni dell'universo DATETIME.

Tambu Profilo | Newbie

Ciao!

Anche in Vb 6 si poteva usare la funzione sleep, ma bisognava priva dichiarare
l' API realtiva.
Non so come funzionano le cose in net, però se ti può servire
la dichiarazione dell'api (in Vb 6) si faceva così:

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Dopodichè nel codice bastava scrivere

Sleep (TempoInMillisecondi)

Magari funzia anche in net....

Ciao!
Tambu

Brainkiller Profilo | Guru

Si tambu può funzionare anche in .NET.
La cosa migliore è usare un Thread.
E all'interno del Thread dove c'è il ciclo che fa spostar la finestra inserire :

Thread.Sleep(1000)

Così avrai scatti di un secondo (1000 ms.) più riduci questo tempo e più l'effetto sarà più fluido.
La stessa cosa cmq. la puoi fare più semplicemente usando un Timer con un lasso di tempo di qualche millisecondo.

ciao
david

Andy Profilo | Senior Member

grazie mille..proverò la soluzione Timer...

Ciao

Tambu Profilo | Newbie

Ciao!

Per tornare alla mia domanda originale, ovvero come fare per ottenere un effetto simile alla funzionalità autohide delle finestre di Visual Studio.NET,
ho trovato una libreria che tra le altre cose permette proprio di creare form "a scomparsa".

Tale libreria (dotnetmagic) ora è a pagamento ma su internet si riescono ancora a trovare le release precedenti
le quali erano free.

Tale libreria è corredata da sorgenti.
Se qualcun'altro fosse interessato a creare form di questo tipo, fatemi sapere così vi do maggiori info su dove reperire tale
libreria.

Ciao!
Tambu

Andy Profilo | Senior Member

Eccomi!!!!

Di sicuro non sarebbe male, se riesci a "sharare" la libreria, o ad indicarmi dove trovarla mi faresti un grande favore..adoro sbizzarrirmi nella programmazione..

Grazie mille

Ciao

Brainkiller Profilo | Guru

Ciao,
anche io tempo fa avevo provato dotnetmagic e l'avevo anche installato su un PC ora però non la trovo più. In ogni caso se è diventata a pagamento c'è poco da fare. Integrando le sue funzionalità in un'applicazione poi se la si distribuisce è necessario pagare le fees se no non si è in regola... non so quanto convenga rischiare anche perchè i componenti dotnetmagic sono molto conosciuti.

ciao
david

Tambu Profilo | Newbie

Ciao!

X andy : appena arrivo a casa cerco il link da cui ho scaricato la libreria, ora sono in ufficio e non lo ho sottomano.
Al max se non lo trovo ti mando una mail con il setup di installazione, tanto è piccolo (800 k mi pare).

X Brain: si, ora è a a pagamento (299 $) quindi in un applicazione commerciale non la si può distribuire, per fare due prove però
viene benissimo.
Poi essendo compresa di sorgenti, è una buona occasione (per chi come me ne sa ancora poco di .NET) per imparare
a fare cose un po più complesse.

Ciao.
Tambu

Andy Profilo | Senior Member

Ok, intanto grazie mille..non era comunque mia intenzione usarla a scopi commerciali, però mi incuriosiscono tutti gli effetti e le particolarità che si possono fare o da cui prendere spunto..

A presto.

Tambu Profilo | Newbie

Ciao!

Allora, io la libreria (versione 1.7.4, una delle ultime free a quanto ne so) l'ho scaricata da qui

http://dev.cdrnet.net/download/ThirdParty/MagicUI/1.7.4/default.aspx

Se dovessi avere problemi con il download fammi sapere che te la invio!

Ciao!
Tambu

Andy Profilo | Senior Member

Fatto, nessun problema.. ora ci gioco un po...grazie mille ancora una volta..

Ciao
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5