Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > it.comp.lang.visual-basic > #19103 > unrolled thread

VB6 usare le forme

Started byGreg <greg@alicie.com>
First post2017-07-31 13:09 +0200
Last post2017-08-01 08:05 +0200
Articles 9 — 3 participants

Back to article view | Back to it.comp.lang.visual-basic


Contents

  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

#19103 — VB6 usare le forme

FromGreg <greg@alicie.com>
Date2017-07-31 13:09 +0200
SubjectVB6 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]


#19105

FromSB <stNOOObenevSPAM@tin.it>
Date2017-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]


#19106

FromGreg <greg@alicie.com>
Date2017-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]


#19119

FromSB <stNOOObenevSPAM@tin.it>
Date2017-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]


#19124

FromPaperino <non_te@lo.dico.invalid>
Date2017-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]


#19128

FromSB <stNOOObenevSPAM@tin.it>
Date2017-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]


#19129

FromPaperino <non_te@lo.dico.invalid>
Date2017-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]


#19112

FromPaperino <non_te@lo.dico.invalid>
Date2017-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]


#19113

FromGreg <greg@alicie.com>
Date2017-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