Punto informatico Network
Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

[VB6] Effetto trasparenze sui form

Il forum per tutti i developer. Leggere attentamente il regolamento di sezione prima di postare.

[VB6] Effetto trasparenze sui form

Messaggioda DilanDog » mar apr 18, 2006 8:53 am

Qualcuno di voi sa se e come è possibile gestire questi effetti assolutamente inutili ma ormai di "gran moda" utilizzando vb6? Più che altro per creare un form con effetto trasparenza, ovvero che lasci intravedere quello che c'è sotto...se conoscente un activex già esistente (magari free o a basso prezzo ancora meglio) oppure immagino si debba ricorrere alle solite API...giusto? [sbigot]
Avatar utente
DilanDog
Senior Member
Senior Member
 
Messaggi: 208
Iscritto il: ven apr 15, 2005 9:13 am
Località: Milano

Messaggioda Silver Black » mar apr 18, 2006 11:03 am

Ho trovato questo codice in uno dei miei esempi:

Codice: Seleziona tutto
Option Explicit

Private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Long) As Long

Public Sub GlassifyForm(frm As Form)
Const RGN_DIFF = 4
Const RGN_OR = 2

Dim outer_rgn As Long
Dim inner_rgn As Long
Dim wid As Single
Dim hgt As Single
Dim border_width As Single
Dim title_height As Single
Dim ctl_left As Single
Dim ctl_top As Single
Dim ctl_right As Single
Dim ctl_bottom As Single
Dim control_rgn As Long
Dim combined_rgn As Long
Dim ctl As Control

    If WindowState = vbMinimized Then Exit Sub

    ' Create the main form region.
    wid = ScaleX(Width, vbTwips, vbPixels)
    hgt = ScaleY(Height, vbTwips, vbPixels)
    outer_rgn = CreateRectRgn(0, 0, wid, hgt)

    border_width = (wid - ScaleWidth) / 2
    title_height = hgt - border_width - ScaleHeight
    inner_rgn = CreateRectRgn( _
        border_width, _
        title_height, _
        wid - border_width, _
        hgt - border_width)

    ' Subtract the inner region from the outer.
    combined_rgn = CreateRectRgn(0, 0, 0, 0)
    CombineRgn combined_rgn, outer_rgn, _
        inner_rgn, RGN_DIFF

    ' Create the control regions.
    For Each ctl In Controls
        If ctl.Container Is frm Then
            ctl_left = ScaleX(ctl.Left, frm.ScaleMode, vbPixels) _
                + border_width
            ctl_top = ScaleX(ctl.Top, frm.ScaleMode, vbPixels) _
                + title_height
            ctl_right = ScaleX(ctl.Width, frm.ScaleMode, vbPixels) _
                + ctl_left
            ctl_bottom = ScaleX(ctl.Height, frm.ScaleMode, vbPixels) _
                + ctl_top
            control_rgn = CreateRectRgn( _
                ctl_left, ctl_top, _
                ctl_right, ctl_bottom)
            CombineRgn combined_rgn, combined_rgn, _
                control_rgn, RGN_OR
        End If
    Next ctl

    ' Restrict the window to the region.
    SetWindowRgn hWnd, combined_rgn, True
End Sub

Private Sub Form_Load()
    Me.ScaleMode = 3
End Sub

Private Sub Form_Resize()
    GlassifyForm Me
End Sub


Non so se è proprio il risultato che vuoi ottenere tu...
Sergio Pappalardo aka Silver Black
CyberInstaller - www.silvercybertech.com - http://silvercybertech-labs.com/cyberblog
Avatar utente
Silver Black
Silver Member
Silver Member
 
Messaggi: 1147
Iscritto il: gio gen 06, 2005 8:50 pm
Località: Bassano del Grappa (VI)

Messaggioda Robby78 » mar apr 18, 2006 11:09 am

Silver Black ha scritto:(...)

sempre interessanti i tuoi interventi, aggiungo anche questa alla mia "collezione" di codice [applauso]
Povera patria! Schiacciata dagli abusi del potere di gente infame, che non sa cos'è il pudore - Franco Battiato
ricordati di pensare! - mia mamma
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna


Messaggioda DilanDog » mer apr 19, 2006 11:16 am

Silver Black ha scritto:Ho trovato questo codice in uno dei miei esempi:

Codice: Seleziona tutto
...


Non so se è proprio il risultato che vuoi ottenere tu...


Grazie per l'esempio Silver, avevo trovato anche io qualcosa di simile girovagando quà e là per la rete, ma non è esattamente quello che cercavo, forse mi sono spiegato male. L'effetto trasparenza di cui parlavo forse è più qualcosa tipo "effetto vetro opaco", ovvero il corpo del form si dovrebbe vedere ma, in sottofondo con colori più tenui, si dovrebbe vedere anche quello che c'è "sotto", o meglio, dietro al form. L'ho visto ad esempio su un softwerino che monitorizza le risorse di rete (DuMeter, forse qualcuno lo conosce), si può anche regolare l'intensità della trasparenza [applauso]
Avatar utente
DilanDog
Senior Member
Senior Member
 
Messaggi: 208
Iscritto il: ven apr 15, 2005 9:13 am
Località: Milano

Messaggioda Silver Black » mer apr 19, 2006 11:28 am

DilanDog ha scritto:Grazie per l'esempio Silver, avevo trovato anche io qualcosa di simile girovagando quà e là per la rete, ma non è esattamente quello che cercavo, forse mi sono spiegato male. L'effetto trasparenza di cui parlavo forse è più qualcosa tipo "effetto vetro opaco", ovvero il corpo del form si dovrebbe vedere ma, in sottofondo con colori più tenui, si dovrebbe vedere anche quello che c'è "sotto", o meglio, dietro al form. L'ho visto ad esempio su un softwerino che monitorizza le risorse di rete (DuMeter, forse qualcuno lo conosce), si può anche regolare l'intensità della trasparenza [applauso]


In Delphi sarebbe davvero banale... in VB più di così non posso aiutarti. [boxed]
Sergio Pappalardo aka Silver Black
CyberInstaller - www.silvercybertech.com - http://silvercybertech-labs.com/cyberblog
Avatar utente
Silver Black
Silver Member
Silver Member
 
Messaggi: 1147
Iscritto il: gio gen 06, 2005 8:50 pm
Località: Bassano del Grappa (VI)

Messaggioda DilanDog » mer apr 19, 2006 1:45 pm

Silver Black ha scritto:
In Delphi sarebbe davvero banale... in VB più di così non posso aiutarti. [boxed]


Capito, è ora di comprare un buon manuale di Delphi, visto che sono riuscito finalmente ad avere l'ambiente di sviluppo della versione 2006 da provare....qualche consiglio su qualche valido testo? [fischio]
Avatar utente
DilanDog
Senior Member
Senior Member
 
Messaggi: 208
Iscritto il: ven apr 15, 2005 9:13 am
Località: Milano

Messaggioda Silver Black » mer apr 19, 2006 3:21 pm

DilanDog ha scritto:Capito, è ora di comprare un buon manuale di Delphi, visto che sono riuscito finalmente ad avere l'ambiente di sviluppo della versione 2006 da provare....qualche consiglio su qualche valido testo? [fischio]


Senza dubbio "Mastering Delphi 2006" di Marco Cantù. Anche il 2005 dovrebbe andare più che bene se non trovi quello aggiornato alla nuova versione (anche perché alcuni passi non sono ancora stati aggiornati, specialmente il codice, alla nuova versione).

Inoltre puoi iniziare con i libri "Essentials" sempre di Marco Cantù, che trovi in versione GRATUITA in PDF sul suo sito (www.marcocantu.com), anche in italiano: "Essential Pascal" ed "Essential Delphi". Prendili tutti e due, il primo si sofferma sulle basi del linguaggio, il secondo sul BDE. Tieni però presente che per gli argomenti fondamentali quali OOP e gestione delle eccezioni dovrai avvalerti del libro da acquistare.
Sergio Pappalardo aka Silver Black
CyberInstaller - www.silvercybertech.com - http://silvercybertech-labs.com/cyberblog
Avatar utente
Silver Black
Silver Member
Silver Member
 
Messaggi: 1147
Iscritto il: gio gen 06, 2005 8:50 pm
Località: Bassano del Grappa (VI)

Messaggioda DilanDog » mer apr 19, 2006 3:33 pm

Silver Black ha scritto:
Senza dubbio "Mastering Delphi 2006" di Marco Cantù. Anche il 2005 dovrebbe andare più che bene se non trovi quello aggiornato alla nuova versione (anche perché alcuni passi non sono ancora stati aggiornati, specialmente il codice, alla nuova versione).

Inoltre puoi iniziare con i libri "Essentials" sempre di Marco Cantù, che trovi in versione GRATUITA in PDF sul suo sito (www.marcocantu.com), anche in italiano: "Essential Pascal" ed "Essential Delphi". Prendili tutti e due, il primo si sofferma sulle basi del linguaggio, il secondo sul BDE. Tieni però presente che per gli argomenti fondamentali quali OOP e gestione delle eccezioni dovrai avvalerti del libro da acquistare.


Mi soffermo ancora un attimo su questa cosa, anche se in effetti andiamo un po' OT rispetto al titolo del post...cihedo venia in anticipo [fischio]

Tornando a Delphi, leggendo qua e là ho trovato pareri contrastanti di entusiasti e di pessimisti...i secondi in particolare mi lasciano perplesso in quanto parlano di "linguaggio dal futuro incerto e dalla scarsa rivendibilità" in quanto poco utilizzato, abbandonato da Borland e poco ricercato negli annunci di lavoro....e queste premesse non mi invogliano sinceramente ad intraprendere una "fatica" così grande come quella di imparare un nuovo linguaggio che podrebbe andare a morire da qui a pochi anni....il tuo pensiero al riguardo, possibilmente il più "obiettivo" possibile?
Avatar utente
DilanDog
Senior Member
Senior Member
 
Messaggi: 208
Iscritto il: ven apr 15, 2005 9:13 am
Località: Milano

Messaggioda Robby78 » mer apr 19, 2006 3:38 pm

Per quel che ne so i linguaggi più richiesti sono le varianti di Visual Basic e di C; il primo è più richiesto e più facile da usare, il secondo è più potente e versatile.

P.S. ne avevamo parlato anche qui -> http://www.MegaLab.it/forum/viewtopic.php?t=15000
Povera patria! Schiacciata dagli abusi del potere di gente infame, che non sa cos'è il pudore - Franco Battiato
ricordati di pensare! - mia mamma
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna

Messaggioda Silver Black » mer apr 19, 2006 5:09 pm

Beh, allora se il problema è la paura di trovarsi tra le mani un linguaggio morto, VB è GIA' ADESSO MORTO, visto che MS con .Net ha cambiato tutto, e anche VB.NET è completamente incompatibile col precedente.

Sei invogliato a usare un linguaggio in cui non sai se in futuro MS cambierà nuovamente le carte in gioco e dovrai, per l'ennesima volta, riscrivere tutti i tuoi programmi, sudati in anni di duro lavoro?

Io preferisco puntare su Delphi. Anche se Borland lo vende (ma finchè non c'è un acquirente non lo abbandona), il prossimo possessore lo supporterà tantissimo visto che è uno dei migliori linguaggi in circolazione.
La politica di Delphi rispetto a Win32 e .Net? Beh, tu hai il tuo progetto Win32, lo importi in un progetto Delphi.Net e... come per magia hai subito il tuo progetto .Net! Tutto nuovo.

Pensa la compatibilità, quanto lavoro risparmiato... E pensa che un programma in Delphi 1, che se non sbaglio risale a 12 anni fa, è ancora ricompilabile adesso in Delphi 2006.

Sapete che Borland Delphi 2006 supporta VB.Net, C#, C++, Delphi Win32 e Delphi.Net? Infatti l'ambiente si chiama Borland Developer Studio (BDS). tutte queste personalità in un unico ambiente.

Ognuno segua le sue necessità e le sue certezze, questo è quello che ho visto io. E se volete ve la dico tutta: sto investendo molto in Delphi (che ho abbracciato da quando MS ha abbandonato VB a una morte precoce).
Sergio Pappalardo aka Silver Black
CyberInstaller - www.silvercybertech.com - http://silvercybertech-labs.com/cyberblog
Avatar utente
Silver Black
Silver Member
Silver Member
 
Messaggi: 1147
Iscritto il: gio gen 06, 2005 8:50 pm
Località: Bassano del Grappa (VI)

Messaggioda Robby78 » gio apr 20, 2006 7:47 am

Silver Black ha scritto:Beh, allora se il problema è la paura di trovarsi tra le mani un linguaggio morto, VB è GIA' ADESSO MORTO, visto che MS con .Net ha cambiato tutto, e anche VB.NET è completamente incompatibile col precedente.

è vero che VB.NET c'entra poco col VB (daltr'onde anche C# c'entra poco col C), l'unica cosa simile è la sintassi... tuttavia vedo che è ancora uno dei linguaggi più richiesti, forse il più richiesto in assoluto... probabilmente morirà, ma credo non prima di 5/6 anni.
Non conoscevo tutte le qualità di Delphi che hai indicato, interessante!
Riguardo alla compatibilità all'indietro, anche i vecchi progetti VB3 possono senza particolari stravolgimenti essere convertiti in VB6.
Io sto guardando un po' C#, ma visto il tuo entusiasmo per Delphi, tempo permettendo, ci darò un'occhiata!
Povera patria! Schiacciata dagli abusi del potere di gente infame, che non sa cos'è il pudore - Franco Battiato
ricordati di pensare! - mia mamma
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti

cron
Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising