Newsgroup: it.comp.lang.visual-basic
Titolo: Help. Dilemma VB5 che mi distrugge





Salve.


Stò realizzando un programma con una 
TextBox.


In questa TextBox ho inserito la 
Multiline.


Sono presenti due Command. Il primo per registrare 
il contenuto


della TextBox in un  database in forma 
memo.


L'altra per la sessione di stapam del contenuto 
della TextBox.


Mandando in esecuzione il programma l'inserimento 
dei dati sulla


textbox avviene regolarmente, quando si arriva a 
fine riga il


sistema va a capo automaticamente. I problemi mi 
sono sorti però


quando voglio stampare il contenuto della txt. La 
stampante scrive


come se il contenuto della txt fosse tutta in un 
rigo quindi arrivando al termine


della riga questa effettua il troncamente. Ho 
notato che effettua questa 


operazione solo quando è il sistema va a capo 
durante la scrittura nella textbox


mentre se sono io che ritorno a capo con enter la 
stampante effettua anch'essa


un ritorno. Per risolvere il dilemma sto impazzendo 
da svariati giorni e spero


che qualche amico mi possia aiutare. Come posso 
quindi nello scrivere nella textbox


arrivato al termine della riga e quindi ritorna a 
capo questo possa essere capito e registrato


nel Db e che poi in fase di stampa venga anch'esso 
seguito. Spero di essere stato chiaro


nello spiegare il mio problema.


Qui riporto un esempio. Consideriamo che la textbox 
sia il quadraro tra i punti.


Se io scrivo nella casella. Arrivato a "funziona 
in" non entrando la parola "visualbasic" questa


..........................................................................


.  Questa è una prova per capire 
come funziona  in .


. 
visualbasic                                                        .


.                                                                         .


                                                                    
.


viene scritta con ritorno a capo. In fase di stampa 
peò viene considerata come se la frase fosse contenuta   in un 
solo rigo, quindi considerando che la larghezza della textbox fosse uguale al 
quella di un modello A4 non avremo il ritorno a capo come nella text ma 
apparirà la seguente scrittura "Questa è una prova per capire come funziona 
in" 


mentre il seguto non viene scritto. Occorrerà 
inserire un contatore che arrivato alla fine della riga questo registri il 
ritorno a capo.


Anticipatamente ringrazio


SIlvio                                                                   
.


 


 



...
[SNIP]
Devi leggere il contenuto della textbox multiline riga per riga e
gestire tu la stampa. Puoi usare l'api SendMessage.
Prova cosě, crea un prog nuovo con un form, una textbox multilinea e
un command button; aggiungi un modulo.
Nel modulo incolla queste dichiarazioni e la funzione:
-----
Option Explicit
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
        (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
        ByRef lParam As Byte) As Long
Public Const EM_GETLINE = &HC4
Public Const EM_GETLINECOUNT = &HBA
Public Buffer As String
Public Const MaxCaratteri = 256  ' Questo va scalato alla misura della
TextBox
Public buff(MaxCaratteri) As Byte
Function fGetLine(Scatola As TextBox, NumeroDiRiga As Long) As String
    ' Questa funzione riempie Il buffer con la linea di testo
    ' presa dalla TextBox Scatola e alla linea specificata
    ' La prima linea č zero.
    Dim byteBasso As Integer
    Dim byteAlto As Integer
    Dim x As Integer
    Dim k As Integer
    byteBasso = MaxCaratteri And (255)
    byteAlto = Int(MaxCaratteri / 256)
    Buffer$ = Chr$(byteBasso) + Chr$(byteAlto) + Space(MaxCaratteri - 2)
    For k = 0 To 100
        buff(k) = 255
    Next k
    x% = SendMessage(Scatola.hwnd, EM_GETLINE, NumeroDiRiga, buff(0))
    fGetLine = ""
    For k = 0 To 100
        If buff(k) = 255 Then Exit For
        fGetLine = fGetLine & Chr$(buff(k))
    Next k
End Function
-----
Nel Command1_click incolla questa procedura:
-----
    Dim NumLinee As Long
    Dim RigaDiTesto As String
    Dim N As Long ' variabile contatore
    ' Leggi il numero di righe della TextBox
    NumLinee = SendMessage(Text1.hwnd, EM_GETLINECOUNT, 0&, 0&)
    For N = 0 To NumLinee
        RigaDiTesto = fGetLine(Text1, N)
        Debug.Print RigaDiTesto
    Next N
-----
Scrivi qualcosa nella textbox e premi il tasto, dovrebbe stamparti
le righe una per una nella finestra di debug.
Spero di esserti stato d'aiuto !
Bye, G.
--
---------------------------------------------
    Le risposte alle tue domande le trovi sul
    Sito Comune di questo NewsGroup:
 
http://www.murialdo.it/it_lang_vb
---------------------------------------------
Real E-address: 
gaet...@hotmail.com