Ciao!
Sono fermo da giorni (ai neofiti capita di aprire per giorni il codice, guardarlo per ore, e poi richiudere senza aver aggiunto neanche una riga di codice) cercando di capire come si usa la classe graphics. In sostanza devo creare delle linee sull'oggetto time_base che è un panel. Questo panel, insieme a molti altri, e all'interno di un'altro panel (timetable) che funge un pò come contenitore (ho scelto il panel come contenitore perchè mette la barra di scorrimento in automatico). Tuttavia se faccio le line da progettazione con lineshape sull'oggetto timetable, le linee non vengono coperte dall'oggetto time_base, ma nel momento in cui ci draggo e ci muovo un oggetto è come se passassi una gomma da cancellare. Allora dico, le disegno in fase di programmazione sull'oggetto time_base.. ma non compare neanche un pixel. Il mio obbiettivo sarebbe quella di far scivolare l'oggetto che draggo su time_base, sotto le linee che dovrebbero essere visibili anche sopra l'oggetto che sposto. Penso di non essermi spiegato bene.. devo fare una griglia orario tipo la guida tv di sky; solo che ci devono essere delle righe che, per ogni ora, solcano tutti gli oggetti presenti! posto il link..
http://guidatv.sky.it/guidatv/grid.html
codice:
Sub obj_creator()
Dim y As Int16
Dim k As Int16
Dim z As Int16
z = 5
k = 0
y = 30
'costruisco tanti oggetti per quante sono le sale. Un texbox (num_posti) per il numero dei posti;
'delle label per evidenziare il numero della sala (obj)
'è3d e èDgt sono dei chekbox per definire se la sala è solo digitale o anche 3d. in mancanza di check
'significa che la sala è in 35mm
For i = 1 To cinema.Length
'dichiarazione oggetti
Dim obj As New Label()
Dim num_posti As New TextBox
Dim è3d As New CheckBox()
Dim èDgt As New CheckBox()
Dim labsal As New Label
Dim time_base As New Panel
Dim pansal As New Panel
'costruzione oggetti sul controllo voluto: in questo caso panel1
Me.Panel1.Controls.Add(obj)
Me.Panel1.Controls.Add(num_posti)
Me.Panel1.Controls.Add(è3d)
Me.Panel1.Controls.Add(èDgt)
Me.timetable.Controls.Add(time_base)
Me.timetable.Controls.Add(labsal)
'definizione delle proprietà degli oggetti
num_posti.Left = num_posti.Left + 130
num_posti.Name = "num_posti" & i
num_posti.Width = 50
num_posti.Text = cinema(i - 1).capienza
num_posti.Top = y
'chiamata della funzione necessaria nel momento in cui l'utente compila gli oggetti
AddHandler num_posti.TextChanged, AddressOf inputposti_change
'label con numero sale
obj.Top = y
obj.Left = obj.Left + 10
obj.BackColor = Color.Orange
obj.Name = "obj" & i
obj.Text = "sala " & i
obj.TextAlign = ContentAlignment.MiddleCenter
'checkbox se è 3D
è3d.Top = y
è3d.Width = 50
è3d.Left = 250
è3d.Name = "è3d" & i
è3d.Text = "3D"
è3d.Checked = cinema(i - 1).s3d
AddHandler è3d.Click, AddressOf verifica3d_click
'checkbox se è Dgt
èDgt.Top = y
èDgt.Left = 350
èDgt.Text = "Dgt"
èDgt.Name = "èDgt" & i
èDgt.Checked = cinema(i - 1).sdg
AddHandler èDgt.Click, AddressOf verificaDgt_click
'time_base
With time_base
.Top = k
.Left = 60
.Name = "time_base" & i
.BackColor = Color.LightYellow
.BorderStyle = BorderStyle.FixedSingle
.Width = 1490
.Height = 50
.AllowDrop = True
Dim p As New Pen(Brushes.Black, 2)
time_base.CreateGraphics.DrawLine(p, 25, 25, 1490, 25)
AddHandler time_base.DragEnter, AddressOf time_base_DragEnter
AddHandler time_base.DragDrop, AddressOf time_base_DragDrop
End With
'numero di sala della time table
With labsal
.Top = k
.Left = 0
.Height = 50
.Name = "labsal" & i
.BorderStyle = BorderStyle.FixedSingle
.BackColor = Color.Azure
.Text = "SALA " & i & vbCr & "posti: " & cinema(i - 1).capienza
If cinema(i - 1).s35mm = True Then
.BackColor = Color.Violet
ElseIf cinema(i - 1).s3d = True Then
.BackColor = Color.Gold
ElseIf cinema(i - 1).sdg = True Then
.BackColor = Color.Cyan
End If
End With
'panel per area sala
With pansal
.Top = z
.Left = 60
.AutoScroll = True
.Height = 40
.Width = 220
.AllowDrop = True
.Name = "pansal" & i
.BackColor = Color.Lavender
End With
k = k + 50
y = y + 30
z = z + 50
Next i
MessageBeep(0)
End Sub
ringrazio tutte le anime pie che sono arrivate a leggere fin qui