Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > it.comp.lang.visual-basic > #19103 > unrolled thread
| Started by | Greg <greg@alicie.com> |
|---|---|
| First post | 2017-07-31 13:09 +0200 |
| Last post | 2017-08-01 08:05 +0200 |
| Articles | 9 — 3 participants |
Back to article view | Back to it.comp.lang.visual-basic
VB6 usare le forme Greg <greg@alicie.com> - 2017-07-31 13:09 +0200
Re: VB6 usare le forme SB <stNOOObenevSPAM@tin.it> - 2017-07-31 19:39 +0200
Re: VB6 usare le forme Greg <greg@alicie.com> - 2017-07-31 21:46 +0200
Re: VB6 usare le forme SB <stNOOObenevSPAM@tin.it> - 2017-08-01 19:22 +0200
Re: VB6 usare le forme Paperino <non_te@lo.dico.invalid> - 2017-08-02 15:25 +0200
Re: VB6 usare le forme SB <stNOOObenevSPAM@tin.it> - 2017-08-02 19:10 +0200
Re: VB6 usare le forme Paperino <non_te@lo.dico.invalid> - 2017-08-02 19:23 +0200
Re: VB6 usare le forme Paperino <non_te@lo.dico.invalid> - 2017-08-01 01:09 +0200
Re: VB6 usare le forme Greg <greg@alicie.com> - 2017-08-01 08:05 +0200
| From | Greg <greg@alicie.com> |
|---|---|
| Date | 2017-07-31 13:09 +0200 |
| Subject | VB6 usare le forme |
| Message-ID | <oln34g$hg7$1@solani.org> |
C'è un modo di usare, o costruire, una forma sullo stile di quelle contenute in word? Nello specifico mi servirebbe avre un rettanfolo dove ci possa scrivere dentro e impostare il colore di sfondo - e mi andrebbe bene una labl - ma anche che assomigli ad una freccia. Merci e buone vacanze a tutti :) -- Greg
[toc] | [next] | [standalone]
| From | SB <stNOOObenevSPAM@tin.it> |
|---|---|
| Date | 2017-07-31 19:39 +0200 |
| Message-ID | <ubpunctn7q4snndu9hgtjt5uj4uves3v4d@4ax.com> |
| In reply to | #19103 |
Il giorno Mon, 31 Jul 2017 13:09:03 +0200, Greg <greg@alicie.com> ha scritto:
>C'è un modo di usare, o costruire, una forma sullo stile di quelle contenute in word?
>Nello specifico mi servirebbe avre un rettanfolo dove ci possa scrivere dentro e impostare il
>colore di sfondo - e mi andrebbe bene una labl - ma anche che assomigli ad una freccia. Merci e
>buone vacanze a tutti :)
Quelle cose si fanno velocemente con le API, disegnando su un Form o una
Picturebox.
Si usa la FillRect un paio di volte per il bordo e lo sfondo e poi la DrawText
per il testo.
Esempio al volo, sono in ferie, non ho molto tempo
e non ho nemmeno il vb per provare :-)
Comunque ho accesso web al mio software VB
Crea un form con una PictureBox di nome Pic
Le API che ti servono sono queste:
____________________________________________-
Private Declare Function DrawText Lib "user32" Alias "DrawTextA" (ByVal hdc As
Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As RECT, ByVal wFormat
As Long) As Long
Private Declare Function SetRect Lib "user32" (lpRect As RECT, ByVal X1 As Long,
ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function FillRect Lib "user32" (ByVal hdc As Long, lpRect As
RECT, ByVal hBrush As Long) As Long
Private Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As
Long
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Dim R As RECT, hBrush as Long, Flgs as Long, TxB as String
Const DT_SINGLELINE As Long = &H20&
Const DT_NOCLIP As Long = &H100&
Const DT_CENTER As Long = &H1&
Const C_DT_FLAGS = DT_SINGLELINE Or DT_NOCLIP Or DT_CENTER
hBrush = CreateSolidBrush(vbBlack)
SetRect R, 0, 0, 100, 100
FillRect Pic.hdc, R, hBrush 'DISEGNA RETTANGOLO NERO
SetRect R, 10,10, 90, 90
hBrush = CreateSolidBrush(vbCyan)
FillRect Pic.hdc, R, hBrush 'DISEGNA RETTANGOLO SFONDO CIANO
TxB ="PROVA"
Flgs = C_DT_FLAGS
SetRect R, 20,20, 80, 80
i = DrawText(Pic.hdc, TxB, Len(TxB), R, Flgs)
Chiaramente la DrawText userà il font della Pic con tutti i suoi attributi.
Non posso provare niente qui adesso ma ti dovrebbe bastare come spunto.
--
ciao
Stefano
[toc] | [prev] | [next] | [standalone]
| From | Greg <greg@alicie.com> |
|---|---|
| Date | 2017-07-31 21:46 +0200 |
| Message-ID | <olo1ee$6pg$1@solani.org> |
| In reply to | #19105 |
Il 31/07/2017 19:39:10 SB ha scritto: > Quelle cose si fanno velocemente con le API, disegnando su un Form o una > Picturebox. > Si usa la FillRect un paio di volte per il bordo e lo sfondo e poi la DrawText > per il testo. > > Esempio al volo, sono in ferie, non ho molto tempo > e non ho nemmeno il vb per provare :-) > > Comunque ho accesso web al mio software VB > > Crea un form con una PictureBox di nome Pic Ciao SB, grazie per avermi risposto, anhe se in vacanza :) Il suggerimento è ottimo e lo terrò in considerazione per usarlo in altri punti, ma in questo caso non posso usare la picture ma devo disegnare su una flexgrid, colpa mia non ho specificato subito :( grazie ancora -- Greg
[toc] | [prev] | [next] | [standalone]
| From | SB <stNOOObenevSPAM@tin.it> |
|---|---|
| Date | 2017-08-01 19:22 +0200 |
| Message-ID | <aqd1oc1s4knpo8b1nu0l9stcjue846k513@4ax.com> |
| In reply to | #19106 |
Il giorno Mon, 31 Jul 2017 21:46:21 +0200, Greg <greg@alicie.com> ha scritto: >Ciao SB, grazie per avermi risposto, anhe se in vacanza :) Solo alla sera e dopo una doccia :-) >Il suggerimento è ottimo e lo terrò in considerazione per usarlo in altri punti, ma in questo caso >non posso usare la picture ma devo disegnare su una flexgrid Puoi usare qualunque cosa abbia l'handle, qiundi anche la flexgrid che ha la proprietà hWnd. E' buona anche l'idea di usare le Region, alla fine il risultato è migliore. -- ciao Stefano
[toc] | [prev] | [next] | [standalone]
| From | Paperino <non_te@lo.dico.invalid> |
|---|---|
| Date | 2017-08-02 15:25 +0200 |
| Message-ID | <olsjmt$19ha$1@gioia.aioe.org> |
| In reply to | #19119 |
SB ha scritto: > Greg ha scritto: >>Ciao SB, grazie per avermi risposto, anhe se in vacanza :) > Solo alla sera e dopo una doccia :-) > >>Il suggerimento è ottimo e lo terrò in considerazione per usarlo in altri punti, ma in questo caso >>non posso usare la picture ma devo disegnare su una flexgrid > > Puoi usare qualunque cosa abbia l'handle, qiundi anche la flexgrid che ha la > proprietà hWnd. > > E' buona anche l'idea di usare le Region, alla fine il risultato è migliore. Mi hai dato un'idea. Stavo pensando di applicare una Region a una Flexgrid... non per qualche motivo serio, giusto per vedere che succede e com'è una Flex ritagliata a forma di freccia O:-) Sarà il caldo che mi fa male... vado a buttarmi un po' d'acqua fresca in testa :-) Bye, G.
[toc] | [prev] | [next] | [standalone]
| From | SB <stNOOObenevSPAM@tin.it> |
|---|---|
| Date | 2017-08-02 19:10 +0200 |
| Message-ID | <3m14oc5gp9u1l1gfseqjhrq7ecv8nnb94d@4ax.com> |
| In reply to | #19124 |
Il giorno Wed, 2 Aug 2017 15:25:16 +0200 (CEST), Paperino <non_te@lo.dico.invalid> ha scritto: >SB ha scritto: >> Greg ha scritto: >>>Ciao SB, grazie per avermi risposto, anhe se in vacanza :) >> Solo alla sera e dopo una doccia :-) >> >>>Il suggerimento è ottimo e lo terrò in considerazione per usarlo in altri punti, ma in questo caso >>>non posso usare la picture ma devo disegnare su una flexgrid >> >> Puoi usare qualunque cosa abbia l'handle, qiundi anche la flexgrid che ha la >> proprietà hWnd. >> >> E' buona anche l'idea di usare le Region, alla fine il risultato è migliore. > >Mi hai dato un'idea. >Stavo pensando di applicare una Region a una Flexgrid... non per >qualche motivo serio, giusto per vedere che succede e com'è >una Flex ritagliata a forma di freccia O:-) Verrà fuori una cosa artistica... >Sarà il caldo che mi fa male... vado a buttarmi un po' d'acqua >fresca in testa :-) Fa davvero caldo qui oltre 2000 metri, non oso pensare come sia giù. -- ciao Stefano
[toc] | [prev] | [next] | [standalone]
| From | Paperino <non_te@lo.dico.invalid> |
|---|---|
| Date | 2017-08-02 19:23 +0200 |
| Message-ID | <olt1r3$3ep$1@gioia.aioe.org> |
| In reply to | #19128 |
SB ha scritto: > Paperino ha scritto: >> Mi hai dato un'idea. >> Stavo pensando di applicare una Region a una Flexgrid... non per >> qualche motivo serio, giusto per vedere che succede e com'è >> una Flex ritagliata a forma di freccia O:-) > Verrà fuori una cosa artistica... Beh, funziona, tutto qui :-D La ritaglia a forma di freccia; sotto funziona uguale, tranne che ovviamente si vedono solo le parti all'interno del ritaglio. >> Sarà il caldo che mi fa male... vado a buttarmi un po' d'acqua >> fresca in testa :-) > Fa davvero caldo qui oltre 2000 metri, non oso pensare come sia giù. 37 gradi reali adesso. Percepiti non lo so, perché ho attaccato l'aria condizionata e mi sono chiuso in casa :-D, ma se fai il conto che è una città di mare e l'umidità è quel che è... =8-( Bye, G.
[toc] | [prev] | [next] | [standalone]
| From | Paperino <non_te@lo.dico.invalid> |
|---|---|
| Date | 2017-08-01 01:09 +0200 |
| Message-ID | <olodb7$p79$1@gioia.aioe.org> |
| In reply to | #19103 |
Greg ha scritto:
> C'è un modo di usare, o costruire, una forma sullo stile di quelle
> contenute in word? Nello specifico mi servirebbe avre un rettanfolo
> dove ci possa scrivere dentro e impostare il colore di sfondo - e mi
> andrebbe bene una labl - ma anche che assomigli ad una freccia. Merci
> e buone vacanze a tutti :)
Il sistema del drawing suggerito da SB non solo è ottimo in sé,
ma può essere usato anche sulle Region, che hanno il vantaggio
di avere i margini trasparenti.
Il concetto è creare una region (cioè una forma "astratta")
usando una o più API, poi assegnarla a un oggetto che abbia
un .hWnd (Picturebox, Form o altro) per "ritagliarlo".
Ho fatto un po' di copia e incolla da degli esempi che ho
preso in rete. (Da qualche parte avevo un programma più
complesso già fatto, ma è roba di svariati anni fa :-(
e ritrovarlo è un po' un casino, ho fatto prima così)
Segui le istruzioni:
Crea un form, mettici sopra un command.
Metti qualche controllo, per esempio una Filelistbox, poi
aggiungi una Picturebox non enorme, ma abbastanza grande,
che la copra parzialmente.
Alla Picturebox metti un .BackColor diverso dal grigio,
diciamo blu,
Nelle dichiarazioni del Form incolla questo:
'***************
Option Explicit
Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd _
As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Private Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 _
As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) _
As Long
Private Declare Function CreateRoundRectRgn Lib "gdi32" (ByVal X1 _
As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, _
ByVal X3 As Long, ByVal Y3 As Long) As Long
Private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 _
As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) _
As Long
Private Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint _
As POINTAPI, ByVal nCount As Long, ByVal nPolyFillMode As Long) _
As Long
'nPolyFillMode
'Exactly one of the following flags specifying the polygon
' filling mode to use:
Const ALTERNATE = 1
' The device alternates between filling and not filling
' contiguous sections whose boundaries are determined by
' the edge(s) of the polygon crossing through the polygon's
' interior.
Const WINDING = 2
' Any section inside the polygon is filled, regardless of
' any intra-polygonal boundaries and edges.
'Will hold the handle to the new region.
Dim hRegion As Long
Private Type POINTAPI
X As Long
Y As Long
End Type
'*******************
Nel command metti questo:
'*******************
Dim Punti() As POINTAPI
Dim NumeroPunti As Integer
NumeroPunti = 8
ReDim Punti(1 To NumeroPunti)
Punti(1).X = 100
Punti(1).Y = 10
Punti(2).X = 10
Punti(2).Y = 100
Punti(3).X = 100
Punti(3).Y = 200
Punti(4).X = 100
Punti(4).Y = 120
Punti(5).X = 200
Punti(5).Y = 120
Punti(6).X = 200
Punti(6).Y = 80
Punti(7).X = 100
Punti(7).Y = 80
Punti(8).X = 100
Punti(8).Y = 10
hRegion = CreatePolygonRgn(Punti(1), NumeroPunti, ALTERNATE)
'Change the Form to the new region shape.
SetWindowRgn Freccia.hWnd, hRegion, True
'*******************
Lancia e clicca :-)
Bye, G.
[toc] | [prev] | [next] | [standalone]
| From | Greg <greg@alicie.com> |
|---|---|
| Date | 2017-08-01 08:05 +0200 |
| Message-ID | <olp5mq$q5l$1@solani.org> |
| In reply to | #19112 |
Il 01/08/2017 01:09:32 Paperino ha scritto: > Il sistema del drawing suggerito da SB non solo è ottimo in sé, > ma può essere usato anche sulle Region, che hanno il vantaggio > di avere i margini trasparenti. Funziona alla grande :) Merci -- Greg
[toc] | [prev] | [standalone]
Back to top | Article view | it.comp.lang.visual-basic
csiph-web