Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    36

    controlli trasparenti e ciclo for

    ciao a tutti
    ho ancora bisogno del vostro aiuto
    in 1 form ho inserito 1 immagine di sfondo, 1 textbox ed 1 richtextbox
    poi ho usato queste righe di codice per rendere trasparente i 2 controlli:

    Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Const GWL_EXSTYLE = (-20)
    Const WS_EX_TRANSPARENT = &H20&

    Private Sub Form_Load()
    Dim result As Long
    result = SetWindowLong(Text1.hwnd, GWL_EXSTYLE, WS_EX_TRANSPARENT)
    result = SetWindowLong(RichTextBox1.hwnd, GWL_EXSTYLE, WS_EX_TRANSPARENT) '//set Richtext Box Backgroundstyle to transparent
    End Sub

    ilprob. è che il richtextbox diventa trasparente qualunque sia il colore di sfondo del form, mentre il text box solo con il colore white.
    cosa manca nel codice per avere anche il text box trasparente con qualunque colore e con l'immagine di sfondo?

    inoltre ho una serie di textbox, cioè un array, con i nomi:
    textbox1_pinco
    textbox1_pallino
    ....
    textbox1_caio
    come posso usare il ciclo for next oppure for each, per rendere trasparenti tutti i richtextbox oppure i text box?
    io ho provato questo ciclo, per cancellare il testo:

    Private Sub Form_Load()
    Dim Control As Control
    For Each Control In Form1.Controls

    If TypeOf Control Is RichTextBox Then
    Control.Text = "" 'cancella testo
    End If
    Next Control
    End Sub
    e cosi funziona ;
    ma se provo a modificarlo per lo scopo precedente nn funziona;
    cosa devo modificare?
    ciao e grazie

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Versione del linguaggio nel titolo ... e inserisci il codice tra i tag CODE e /CODE come da regolamento, in modo che si legga bene e si possa rispondere ...

    P.S. Per rendere trasparenti i controlli, un codice d'esempio da cui partire e'

    codice:
    Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
    Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
    
    Const LWA_COLORKEY = &H1
    Const LWA_ALPHA = &H2
    Const GWL_EXSTYLE = (-20)
    Const WS_EX_LAYERED = &H80000
    
    Private Sub Form_Load()
    
    Dim Ret As Long
    Dim ctrl As control
    Ret = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
    Ret = Ret Or WS_EX_LAYERED
    SetWindowLong Me.hWnd, GWL_EXSTYLE, Ret
    SetLayeredWindowAttributes Me.hWnd, 0, 128, LWA_ALPHA
    SetLayeredWindowAttributes Form1.hWnd, &HFFFFFF, 0, LWA_COLORKEY
    
    End Sub
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.