Newsgroup: it.comp.lang.visual-basic
Titolo: ridimensionamento flexgrid

salve a tutti.
dovrei dare la possibilità all'utilizzatore del programma di produrre una
"tabella" per disporre in modo simpatico una serie di dati. ho scartato
l'opzione di lavorare direttamente in rtf, perchè non dà la possibilità di
modificare l'allineamento delle singole celle (o comunque io non ci sono
riuscito :-)
avevo pensato di dirigermi verso la flexgrid, la quale non gestisce l'input
da utente, ma la cosa sarebbe risolvibile sovvrapponendo un textbox sulla
cella attiva della flex. però... se l'utente ridimensiona una colonna della
flex, come faccio a modificare le dimnsioni della textbox per riadattarle a
quelle della flex?
che evento dovrei intercettare?
thanks in advance
--
Salutoni
Sergio
per rispondere... togli il group dall'indirizzo

 dimnsioni della textbox per riadattarle a quelle della flex?
Ad ogni editing ridimensioni la textbox alla misura della cella.
Io uso questa sub. Griglia è la FlexGrid, txtDatEntry è la TextBox.
'************
Private Sub Griglia_Click()
    If AbilitaEditing Then ' è una bool, se l'editing è disabilitato esce
        If CampoEditabile(Griglia.Col) Then ' se quella particolare
colonna...
' in questo programma alcune colonne devono essere bloccate, altre
' sono editabili.
            With Griglia
                txtDataEntry.BackColor = &HFFFFBB
                txtDataEntry.Text = .TextMatrix(.Row, .Col)
                txtDataEntry.Move .CellLeft + .Left, .CellTop + .Top, _
                        .CellWidth, .CellHeight ' <---questa è la riga
fondamentale.
                txtDataEntry.Visible = True
                DoEvents
                txtDataEntry.SetFocus
            End With
        Else
            txtDataEntry.Visible = False
        End If
    End If
End Sub
'************
Bye, G.

 Io uso questa sub. Griglia č la FlexGrid, txtDatEntry č la TextBox.
(snip)
grazie per l'hint, perň cosě a prima botta non sembra fare al caso mio. io
ridimensiono la textbox ogni volta che si sposta la cella attiva della grid,
sia che ciň avvenga per un click che per altri motivi. il problema č
ridimensionarla (e sposarla) quando viene modificata l'altezza della riga o
la larghezza della colonna. non so che evento venga generato in questo caso:
quando ridimensioni con il mouse non viene generato neanche il mouseup!


 la larghezza della colonna. non so che evento venga generato in questo
caso:
Vado a memoria (sono di passaggio in ditta, e mi aspettano fuori),
nel momento in cui la textbox perde il focus, io assegno il valore
alla cella e la faccio scomparire. Quindi, quando clicchi sulla griglia,
anche per ridimensionare...
Bye, G.

 C'era un altro sistema basato sulle API (la solita SendMessage).
Trovato (è per le text ma funzia anche per le RTB):
http://www.mvps.org/vbnet/index.html?code/textapi/txboxtabs.htm
guarda anche il ink contenuti.
Se invece per tabella intendi una _vera_ tabella, con i fili come
quelle di Word :-), si può fare anche quella, ma devi avere la RTB
sicuramente aggiornata, e devi inserire direttamente i codici RTF,
ma non so quali :-). La maniera più semplice sarebbe di creare
una tabella in Word, salvere in RTF e leggerli da lì.
Bye, G.

 una tabella in Word, salvere in RTF e leggerli da lì.
già... in realtà è stato il primo tentativo... ed è quello che mi ha fatto
desistere dal continuare. se in word faccio una tabella (mettiamo 5 colonne
per tre righe) e imposto che la quarta e la quinta colonna debbano avere il
testo centrato, se salvo in rtf perdo questa formattazione. ora mi fai
ricordare che ho provato solo con word 97, adesso provo il 2000 e ti faccio
sapere...
(dopo qualche tempo)
provato anche con word 2000: rtf pare proprio non gestire la formattazione
di cella, e per quello che devo fare è indispensabile.
Mi spiace molto, ma dovrò abbandonare il formato rtf...


 Mi spiace molto, ma dovrň abbandonare il formato rtf...
Sě, il supporto non č completo, ma... hai letto il link di un paio di
post sopra ? Per avere quelle funzioni avanzate, devi avere una
determinata versione delle DLL _e_ attivarle con una SendMessage.
Segui le istruzioni sotto. Se non va neanche cosě probabilmente
č davvero una funzione non supportata.
Se vuoi, mandami un RTF di esempio e te lo provo io. :-)
**********
In breve, controlla le versioni:
richtx32.ocx  versione: 6.00.8804
riched20.dll  versione:  5.40.11.2210
Se corrispondono, prova questo codice:
'*********************
Private Const WM_USER = &H400
Private Const EM_SETTYPOGRAPHYOPTIONS = (WM_USER + 202)
Private Const EM_GETTYPOGRAPHYOPTIONS = (WM_USER + 203)
Private Const TO_ADVANCEDTYPOGRAPHY = &H1
Private Declare Function SendMessageLong Lib "user32" Alias _
"SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
Sub AttivaFunzioniAvanzateRTB(Scatola As RichTextBox)
    Dim hWndr As Long
    hWndr = Scatola.hwnd
    Dim lngRet As Long
    lngRet = SendMessageLong(hWndr, EM_SETTYPOGRAPHYOPTIONS, _
TO_ADVANCEDTYPOGRAPHY, TO_ADVANCEDTYPOGRAPHY)
    If lngRet <> 1 Then    'funziona solo con la versione >= 3.0
        Debug.Print "Versione non corretta di DLL", lngRet
    End If
End Sub
'*********************
Attiva le funzioni avanzate, poi prova ad incollare o aprire un RTF.
Se va cosě, c'č un paio di altri trucchetti carini da poter fare :-).
Bye, G.

 determinata versione delle DLL _e_ attivarle con una SendMessage.
(snip)
sorry, continua a non funzionare. evidentemente in rtf non č consentito
avere formattazioni diverse tra le varie celle di una tabella.
grazie per l'aiuto.


 sorry, continua a non funzionare.
acc... prova non esaustiva: la versione della dll non è quella corretta.
sto provando a cercarla, ma al momento non la trovo. adesso devo andare via,
ci sentiamo poi.
ma tu, sabato, vieni al meeting?
perchè se fai lo scherzo di rimanere a casa, dopo aver votato per farlo a
roma, giuro che faccio in modo di tranciarti tutte le comunicazioni con
l'esterno. anche quelle di backup.


 comunicazioni con l'esterno. anche quelle di backup.
...e logicamente saro' al tuo fianco a tranciargli quelle di backup dei
backup ! ^_-
-- 
-Gigio@Work(?)-

 comunicazioni con l'esterno. anche quelle di backup.
Attento che devi chiudere anche le finestre e insonorizzare la casa,
altrimenti potrei usare il TCP Over Avian Carrier come da RFC 1149:
http://www.rfc-editor.org/rfc/rfc1149.txt
Implementazione in:
http://slashdot.org/articles/01/04/30/0555218.shtml
http://www.blug.linux.no/rfc1149/
oppure il TCP Over Bongos:
http://eagle.auc.ca/~dreid/
...e se mi lasci un rubinetto, ho sempre il TCP/H2O:
http://www.mle.ie/~jonah/projects/streamingmedia.html
        =:-P
Bye, G.

 Attento che devi chiudere anche le finestre e insonorizzare la casa,
le difficoltŕ non mi spaventano <eg>


 daniele di portare un po' dei suoi mostri :-)
:-)
Bye, G.

> non ho un rtf di prova :-)
Ora ce l'ho io :-)
Copia e incolla il testo fra asterischi in un file, nominalo qualcosa.RTF
e prova ad aprirlo. A me questo si vede con la cella centrata anche
con WordPad, e si vede regolarmente in una RTBox.
************
{\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fnil
\fcharset0 Courier New;}}
{\*\generator Riched20 5.40.11.2210;}\viewkind4\uc1\trowd
\trgaph115\trleft-158
\trbrdrl\brdrs\brdrw15
\trbrdrt\brdrs\brdrw15
\trbrdrr\brdrs\brdrw15
\trbrdrb\brdrs\brdrw15
\trpaddl115\trpaddr115\trpaddfl3\trpaddfr3
\clbrdrl\brdrw15\brdrs\clbrdrt\brdrw15\brdrs
\clbrdrr\brdrw15\brdrs\clbrdrb\brdrw15\brdrs
\cellx4132\pard\intbl\lang1033\f0\fs24\cell
\row\trowd\trgaph115\trleft-158\trbrdrl\brdrs\brdrw15
\trbrdrt\brdrs\brdrw15\trbrdrr\brdrs\brdrw15
\trbrdrb\brdrs\brdrw15\trpaddl115\trpaddr115
\trpaddfl3\trpaddfr3
\clbrdrl\brdrw15\brdrs\clbrdrt\brdrw15\brdrs
\clbrdrr\brdrw15\brdrs\clbrdb\brdrw15\brdrs
\cellx4132\pard\intbl\cell\row\trowd\trgaph115
\trleft-158\trbrdrl\brdrs\brdrw15
\trbrdrt\brdrs\brdrw15\trbrdrr\brdrs\brdrw15
\trbrdrb\brdrs\brdrw15
\trpaddl115\trpaddr115\trpaddfl3\trpaddfr3
\clbrdrl\brdrw15\brdrs\clbrdrt\brdrw15\brdrs
\clbrdrr\brdrw15\brdrs\clbrdrb\brdrw15\brdrs
\cellx4132\pard\intbl
\qc CELLA CENTRATA\par
SU DUE RIGHE\cell\row\trowd\trgaph115
\trleft-158\trbrdrl\brdrs\brdrw15
\trbrdrt\brdrs\brdrw15 \trbrdrr\brdrs
\brdrw15 \trbrdrb\brdrs\brdrw15
\trpaddl115\trpaddr115\trpaddfl3\trpaddfr3
\clbrdrl\brdrw15\brdrs\clbrdrt\brdrw15\brdrs
\clbrdrr\brdrw15\brdrs\clbrdrb\brdrw15\brdrs
\cellx4132\pard\intbl ACCOSTATA A SX\cell\row\trowd
\trgaph115\trleft-158\trbrdrl
\brdrs\brdrw15
\trbrdrt\brdrs\brdrw15 \trbrdrr\brdrs\brdrw15
\trbrdrb\brdrs\brdrw15
\trpaddl115\trpaddr115\trpaddfl3\trpaddfr3
\clbrdrl\brdrw15\brdrs\clbrdrt\brdrw15\brdrs
\clbrdrr\brdrw15\brdrs\clbrdrb\brdrw15\brdrs
\cellx4132\pard\intbl\qr ACCOSTATA A DX\cell\row
\trowd\trgaph115
\trleft-158\trbrdrl\brdrs\brdrw15
\trbrdrt\brdrs\brdrw15 \trbrdrr\brdrs\brdrw15
\trbrdrb\brdrs\brdrw15
\trpaddl115\trpaddr115\trpaddfl3\trpaddfr3
\clbrdrl\brdrw15\brdrs\clbrdrt\brdrw15\brdrs
\clbrdrr\brdrw15\brdrs\clbrdrb\brdrw15\brdrs
\cellx4132\pard\intbl\cell\row\pard Quella qui sopra
 e 2 in alto sono vuote\par
}
************
Bye, G.

 con WordPad, e si vede regolarmente in una RTBox.
bene: se lo apro con word il comportamento è quello auspicato. se lo apro
con wordpad perdo la formattazione.
sembrerebbe quindi che il formato rtf supporti quanto richiesto, ma la dll
presente sui miei due pc non riesce a gestire correttamente il tutto.
sul pc dove ho fatto quest'ultima prova la versione della riched20.dll è
5.30.23.1215, richtx32.ocx non è presente.


 riched20.dll è 5.30.23.1215, richtx32.ocx non è presente.
Un dubbio... sul DLL database non risulta una .1215, esiste
però una .1205. Errore di sbaglio, o versione "strana" ?
Comunque dovrebbe essere una 3.0, data con W2K SP2.
Prova ad aggiornarla.
Legalmente puoi ottenere il tutto dal sito MS, scaricando, se già
non ce l'hai, l'OCX aggiornato da qui:
http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q193366&ID=KB;EN-US;Q193366&
e le DLL sono nel Microsoft Installer; se non ce l'hai, puoi
tirarli giù da Installengine. Per Windows 95/98/ME:
http://www.installengine.com/Msiengine/instmsia.exe
Per Windows NT4.x SP6/2000/ XP
http://www.installengine.com/Msiengine/instmsiw.exe
Oppure cercarli sul sito MS (credo siano più aggiornati):
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdkredist.htm
In alternativa, se vuoi te la mando io, che ho scoperto con gran
vergogna di non aver mai risposto ad una certa tua mail :-(((
Bye, G.

 vergogna di non aver mai risposto ad una certa tua mail :-(((
no se preocupe. ci vediamo domani :-)
