Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente bannato
    Registrato dal
    Feb 2000
    Messaggi
    2,006

    [VB6] creare nuovi controlli

    devo inserire delle textbox in un programma.

    queste textbox saranno centinaia e TUTTE dovranno eseguire una serie di funzioni ad ogni evento.

    saranno diverse solo nelle dimensioni

    inserire ogni volta i richiami alle funzioni per ogni textbox mi pare assurdo. ho pensato così di farmi un ocx con la textbox e tutte le funzioni e di inserire l'OCX al posto di una textbox classica quando fosse necessario.

    mi rimane il problema delle dimensioni. come posso ridimensionare la textbox interna all'ocx direttamente dal form che include l'ocx?


    se avete altre soluzioni per risolvere il problema originale diverse dal crearmi un ocx apposito suggeritele pure.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Lo devi fare dinamicamente?

  3. #3
    Se ho ben capito puoi fare una cosa del genere all'interno dell'ocx:
    codice:
    Private Const UserControl_StandardHeight = xxxx
    Private Const UserControl_StandardWidth = xxxx
    Private Const TextBox_StandardHeight = xxxx
    Private Const TextBox_StandardWidth = xxxx
    
    Private Sub UserControl_Resize()
        TextBox.Height = UserControl.Height * TetxBox_StandardHeight / UserControl_StandardHeight
        TextBox.Width = UserControl.Width * TetxBox_StandardWidth / UserControl_StandardWidth
    End Sub
    Dove StandardHeight e StandardWidth indicano la dimensione "standard" (che decidi tu) sia dell'ocx che degli oggetti in esso contenuti.
    In questo modo la textbox mantiene le sempre le proporzioni dell'ocx

  4. #4
    Utente bannato
    Registrato dal
    Feb 2000
    Messaggi
    2,006
    Originariamente inviato da Luciano79
    Se ho ben capito puoi fare una cosa del genere all'interno dell'ocx:
    codice:
    Private Const UserControl_StandardHeight = xxxx
    Private Const UserControl_StandardWidth = xxxx
    Private Const TextBox_StandardHeight = xxxx
    Private Const TextBox_StandardWidth = xxxx
    
    Private Sub UserControl_Resize()
        TextBox.Height = UserControl.Height * TetxBox_StandardHeight / UserControl_StandardHeight
        TextBox.Width = UserControl.Width * TetxBox_StandardWidth / UserControl_StandardWidth
    End Sub
    Dove StandardHeight e StandardWidth indicano la dimensione "standard" (che decidi tu) sia dell'ocx che degli oggetti in esso contenuti.
    In questo modo la textbox mantiene le sempre le proporzioni dell'ocx
    vero...che domanda idiota che ho fatto.

    oggi un ci sto con la testa. gracias.

    vabbè facciamola più complicata. se volessi racchiudere in un singolo OCX più controlli differenti? stile MS Common Control

    come si fà?

  5. #5
    Originariamente inviato da s|n3
    vero...che domanda idiota che ho fatto.

    oggi un ci sto con la testa. gracias.

    vabbè facciamola più complicata. se volessi racchiudere in un singolo OCX più controlli differenti? stile MS Common Control

    come si fà?
    Nel menu "Progetto" o nella finestra "Gestione progetti" clicca col tasto destro del mouse in modo da fare uscire il menu a tendina e seleziona "Inserisci -> Controllo Utente -> Nuovo/Esistente"

  6. #6
    Utente bannato
    Registrato dal
    Feb 2000
    Messaggi
    2,006
    perfetto...ora ho un ocx con il textbox e tutte le funzioni.

    se scrivo nel textbox dell'ocx tutte le funzioni vengono eseguite correttamente...tutto ok...sarebbe perfetto se capissi come scrivere nel textbox dell'ocx....ovviamente da codice.

    UserControl11.text ovviamente non funziona.
    e allora? come faccio?


    se non si fosse capito mai fatti ocx in casa prima d'ora

  7. #7
    Originariamente inviato da s|n3
    se non si fosse capito mai fatti ocx in casa prima d'ora
    Nooooooo
    Originariamente inviato da s|n3
    UserControl11.text ovviamente non funziona.
    e allora? come faccio?
    UserControl11.TextBoxXXXX.Text

    Usa UserControl come se fosse una Form

  8. #8
    Utente bannato
    Registrato dal
    Feb 2000
    Messaggi
    2,006
    Originariamente inviato da Luciano79
    UserControl11.TextBoxXXXX.Text

    Usa UserControl come se fosse una Form
    no spetta....questo funzionerebbe se io inserissi nel progetto il controllo utente. ma in realtà l'ocx deve essere distribuito e usato su pià progetti.

    quindi io devo creare questo ocx compilarlo ed includerlo in altri progetti tramite progetto-->componenti-->controlli

    e facendo in questo modo UserControl11.nometextbox.text ovviamente non funziona.

  9. #9
    ok... qui la storia si fa + complicata, ci vorrebbe un tema per fartelo capire:
    dovresti studiarti un po' Let e Get per gli ocx (se guardi il tutorial VB di html trovi un esempio semplice e chiaro, qualche anno fa ho imparato così nel giro di un'oretta), che servono per poter leggere/scrivere le proprietà di un ocx
    buon divertimento

  10. #10
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    per utilizzare le proprietà del controllo intrinseco inserito in un OCX (nel tuo caso il textbox) devi esporre delle proprietà, come ti diceva Luciano79.
    purtroppo il controllo OCX non eredita da solo tutte le proprietà dell'oggetto incluso.

    per esporre una proprietà Text devi fare così:

    codice:
    Public Property Let Text (ByVal NewText as String)
    TextBox1.Text = NewText
    PropertyChanged "Text"
    End Property
    
    Public Property Get Text() As String
    Text=TextBox1.Text
    End Property
    
    '__________________________
    'se ti interessa che la proprietà text impostata a design-time
    'venga mantenuta anche a run-time devi scrivere e leggere le proprietà:
    
    Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
    PropBag.WriteProperty "Text", TextBox1.Text, Ambient.DisplayName
    End Sub
    
    Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
    Text = PropBag.ReadProperty("Text", Ambient.DisplayName)
    End Sub
    se devi memorizzare e di conseguenza leggere altre proprietà del tuo controllo devi inserirle nelle routines-evento WriteProperties e ReadProperties.

    Boolean

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.