Visualizzazione dei risultati da 1 a 3 su 3

Discussione: [VB]inputbox

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    115

    [VB]inputbox

    ciao a tutti
    vorrei sapere se è possibile mettere la passwordchar sull'inputbox
    praticamente vorrei che al posto dei caratteri vorrei che si visualizzassero
    gli asterischi come nel textbox.
    grazie anticipatamente..

  2. #2
    No, non si può (indipendentemente dalla versione di VB - che andrebbe specificata nel titolo). Devi realizzarti da te un form che abbia queste caratteristiche.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Con il subclassing (con rischi annessi VVoVe: ) credo si possa fare:
    codice:
    'Codice da inserire in un modulo
    Option Explicit
    '////////////////////////////////////////////////////////////////////
    'Password masked inputbox
    'Allows you to hide characters entered in a VBA Inputbox.
    '
    'Code written by Daniel Klann
    'March 2003
    '////////////////////////////////////////////////////////////////////
    
    
    'API functions to be used
    Private Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, _
    ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
    
    Private Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long
    
    Private Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" _
    (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, _
    ByVal dwThreadId As Long) As Long
    
    Private Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
    
    Private Declare Function SendDlgItemMessage Lib "user32" Alias "SendDlgItemMessageA" _
    (ByVal hDlg As Long, ByVal nIDDlgItem As Long, ByVal wMsg As Long, _
    ByVal wParam As Long, ByVal lParam As Long) As Long
    
    Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, _
    ByVal lpClassName As String, _
    ByVal nMaxCount As Long) As Long
    
    Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long
    
    'Constants to be used in our API functions
    Private Const EM_SETPASSWORDCHAR = &HCC
    Private Const WH_CBT = 5
    Private Const HCBT_ACTIVATE = 5
    Private Const HC_ACTION = 0
    
    Private hHook As Long
    
    Public Function NewProc(ByVal lngCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Dim RetVal
    Dim strClassName As String, lngBuffer As Long
    
    If lngCode < HC_ACTION Then
    NewProc = CallNextHookEx(hHook, lngCode, wParam, lParam)
    Exit Function
    End If
    
    strClassName = String$(256, " ")
    lngBuffer = 255
    
    If lngCode = HCBT_ACTIVATE Then 'A window has been activated
    
    RetVal = GetClassName(wParam, strClassName, lngBuffer)
    
    If Left$(strClassName, RetVal) = "#32770" Then 'Class name of the Inputbox
    
    'This changes the edit control so that it display the password character *.
    'You can change the Asc("*") as you please.
    SendDlgItemMessage wParam, &H1324, EM_SETPASSWORDCHAR, Asc("*"), &H0
    End If
    
    End If
    
    'This line will ensure that any other hooks that may be in place are
    'called correctly.
    CallNextHookEx hHook, lngCode, wParam, lParam
    
    End Function
    
    Public Function InputBoxDK(Prompt, Optional Title, Optional Default, Optional XPos, _
    Optional YPos, Optional HelpFile, Optional Context) As String
    Dim lngModHwnd As Long, lngThreadID As Long
    
    lngThreadID = GetCurrentThreadId
    lngModHwnd = GetModuleHandle(vbNullString)
    
    hHook = SetWindowsHookEx(WH_CBT, AddressOf NewProc, lngModHwnd, lngThreadID)
    
    InputBoxDK = InputBox(Prompt, Title, Default, XPos, YPos, HelpFile, Context)
    UnhookWindowsHookEx hHook
    
    End Function
    Sostituisci "InputBox" con "InputBoxDK" nel tuo codice, i parametri sono i medesimi dell'InputBox classica.

    Quoto comunque pienamente l'opinione di MItaly secondo cui è molto meglio crearsi un form "ad hoc" (anche perchè l'InputBox non è che sia il massimo dell'eleganza)

    Ciauz

    Chico
    <a target="_blank" href="http://forum.masterdrive.it" title="MasterDrive.it"><img src="http://forum.masterdrive.it/banner/88x31/v1.gif" border="0" alt="MasterDrive.it" /></a>

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.