Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    45

    [VB6] Menu con label & textbox

    Ciao a tutti, devo creare un form nel quale ci siano 3 colonne, una di label (con le descrizioni) e le altre due di textbox (per l'inserimento dei dati)...diciamo 40 voci per ogni colonna. Ovviamente dovrei poter gestirle con la scrollbar. Come dovrei procedere per fare una lavoro decente?
    Non so se mi son spiegato bene...

  2. #2
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    una soluzione relativamente semplice, consiste nell'utilizzo di 2 PictureBox nidificate.

    nella prima (quella più interna) viene dimensionata alla misura che serve per visualizzare tutti i controlli che vi disporrai dentro (le Label e i TextBox)
    la seconda verrà dimensionata sulla misura che ti serve per la visualizzazione sul Form.
    poi la prima (quella contenente i controlli) viene posizionata *dentro* la seconda, e accanto a quest'ultima dovrai disporre le 2 ScrollBars che ti servono.

    a questo punto devi impostare i valori Min e Max delle ScrollBars, che dovrebbero essere:

    codice:
    ScrollVerticale.Min = 0
    ScrollVerticale.Max = Pic2.Height - Pic1.Height 
    ScrollOrizzontale.Min = 0
    ScrollOrizzontale.Max = Pic2.Width - Pic1.Width
    adesso, per spostare la PictreBox interna (Pic1) basta che nell'evento Scroll o Change delle ScrollBars si assegna il valore della Proprietà Value, rispettivamente alla Top e alla Left della Pic1.

    Boolean

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    45
    Grazie tante della risposta ma forse anche così non risolvo il mio problema. Che ne pensi ivnece di usare la MSFlexGrid? In colonna le descrizioni e nelle altre due da inserire i dati. E' una cosa fattibile? Non ho mai usato questo oggetto visto che da poco uso il visual basic

  4. #4
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    sicuramente una griglia è il metodo migliore per rappresentere dei dati incolonnati.

    Boolean

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    45
    Originariamente inviato da Boolean
    sicuramente una griglia è il metodo migliore per rappresentere dei dati incolonnati.

    Boolean
    Mi sa di si, ho creato la griglia e sto sovrapponendo tante textbox sulle celle che mi servono per l'inserimento dei dati...credo si proceda così vero? Come faccio a far funzionare lo scroll della griglia con le mie textbox?

  6. #6
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    Originariamente inviato da ELF
    ho creato la griglia e sto sovrapponendo tante textbox sulle celle che mi servono per l'inserimento dei dati...credo si proceda così vero?
    no... non credo sia la cosa più intelligente da fare

    in fin dei conti, l'inserimento puoi farlo solo in una cella per volta... quindi ti basta un solo textbox, che cambierà posizione a seconda della cella che si dovrà editare.

    Originariamente inviato da ELF
    Come faccio a far funzionare lo scroll della griglia con le mie textbox?
    la flexgrid espone la proprietà TopRow che restituisce l'indice della riga più in alto, puoi controllare questa proprietà per sapere la posizione relativa del tuo textbox e spostarlo di conseguenza quando viene rilasciato l'evento Scroll della FlexGrid, facendolo sparire se la riga in cui si trova il TextBox e fuori dal range di celle visualizzate.

    Boolean

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    45
    Originariamente inviato da Boolean
    no... non credo sia la cosa più intelligente da fare

    in fin dei conti, l'inserimento puoi farlo solo in una cella per volta... quindi ti basta un solo textbox, che cambierà posizione a seconda della cella che si dovrà editare.



    la flexgrid espone la proprietà TopRow che restituisce l'indice della riga più in alto, puoi controllare questa proprietà per sapere la posizione relativa del tuo textbox e spostarlo di conseguenza quando viene rilasciato l'evento Scroll della FlexGrid, facendolo sparire se la riga in cui si trova il TextBox e fuori dal range di celle visualizzate.

    Boolean
    Grazie tante
    Ti illusto cosa dovrei creare: Una griglia con 90 righe per 3 colonne...la 1° colonna viene popolata dalle descrizioni mentre nella 2° e nella 3° colonna deve apparire questa textbox che si attiva al click del mouse e che va a scrivere dentro il valore. Dopo di che in un altro form devopoter rendere disponibili i dati immessi nella griglia per effettuare successivi calcoli.
    Sinceramente non so come fare ad usare una sola textbox e a farla girare...

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    45
    Sono riuscito a creare la griglia con la texbox che si sposta dove nel punto dove clikko con il mouse ma non riesco a capire come far scrivere dentro la cella il valore che di volta in volta vado a modificare cella per cella...qualcuno puoi aiutarmi?

    questo è il codice:

    Private Sub griglia_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
    With griglia
    'colonna 1
    Dim n As Integer
    If .MouseCol = 1 And Button = 1 Then
    Text1.Left = .Left + .ColPos(1) + 30
    Text1.Top = .Top + .RowPos(.MouseRow) + 25
    Text1.Width = .CellWidth + 30
    Text1.Height = .CellHeight
    Text1.Visible = True
    Text1.SetFocus
    Text1.ZOrder
    Next
    End If
    'colonna 2
    If .MouseCol = 2 And Button = 1 Then
    Text1.Left = .Left + .ColPos(2) + 30
    Text1.Top = .Top + .RowPos(.MouseRow) + 25
    Text1.Width = .CellWidth + 30
    Text1.Height = .CellHeight
    Text1.Visible = True
    Text1.SetFocus
    Text1.ZOrder
    End If
    End With
    End Sub

  9. #9
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    usa la proprietà TextMatrix della FlexGrid, passandogli il valore contenuto nel TextBox.

    volendo potresti sfruttare l'evento RowColChange per aggiornare il valore sulla Flex, e l'evento MouseDown per riportare il valore della cella corrente sul TextBox

    TheTruster

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    45
    Originariamente inviato da Boolean
    usa la proprietà TextMatrix della FlexGrid, passandogli il valore contenuto nel TextBox.

    volendo potresti sfruttare l'evento RowColChange per aggiornare il valore sulla Flex, e l'evento MouseDown per riportare il valore della cella corrente sul TextBox

    TheTruster
    Grazie per l'ennesima risposta
    dove posso guardare per informarmi meglio sul RowColChange? Non saprei come usare l'evento...

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.