ciao ragazzi, mi sto facendo la mia lavagna grafica dove contiene obiect a secondo della nota che voglio inserire, come si mettono le ancore a codice?
Last edited:
infatti ho usato il codice e ho ottenuto il risultato.Per un layout come quello, gli ancoraggi non sono utili, dovrai usare lo script.
(anche se capisco che non lo è, a prima vista mi ha fatto pensare ai bei tempi, quando esisteva il calcio ?)
Come hai fatto? Puoi spostare quei Pane (suppongo siano tali) a runtime (l'utente, col mouse) e le righe seguono...?Ecco il primo risultao con poche righe di codice
E' un vero, proprio e grande oggetto, non è una semplice proprietà.BitmapCreator contro il classico Drawline o DrawRect... chi lo conosce bene questa proprietà?
Come hai fatto? Puoi spostare quei Pane (suppongo siano tali) a runtime (l'utente, col mouse) e le righe seguono...?
E' un vero, proprio e grande oggetto, non è una semplice proprietà.
Complesso lavorarci... soprattutto se non si studia il suo funzionamento.
Sub ragnoclear(grid As Pane, cvs As Canvas)
cvs.ClearRect(0,0,cvs.Width,cvs.Height)
End Sub
Sub ragnodraw(grid As Pane, cvs As Canvas)
cvs.ClearRect(0,0,cvs.Width,cvs.Height)
If groupValue = False Then Return
For i = 0 To lavagna.NumberOfNodes-1
If grid.GetNode(i) Is Button Then
Dim ls As List = grid.GetNode(i).Tag
If ls.Get(18) = "master" Then
cvs.DrawRect(grid.GetNode(i).Left-1,grid.GetNode(i).Top-1,grid.GetNode(i).PrefWidth+2,grid.getNode(i).PrefHeight+3,ls.Get(17), True,3)
listMaster.Add(ls)
Else
cvs.DrawRect(grid.GetNode(i).Left-1,grid.GetNode(i).Top-1,grid.GetNode(i).PrefWidth+2,grid.getNode(i).PrefHeight+3,ls.Get(17), True,1)
listSlave.Add(ls)
End If
End If
Next
Dim x,y,x2,y2 As Int
For i=0 To listMaster.Size-1
Dim lsM As List = listMaster.Get(i)
x = lsM.Get(0) +( lsM.Get(2)/2)
y = lsM.Get(1) +( lsM.Get(3)/2)
For ii=0 To listSlave.Size-1
Dim lsS As List = listSlave.Get(ii)
If lsS.Get(16) = lsM.Get(16) Then
x2=lsS.Get(0) + ( lsS.Get(2)/2)
y2=lsS.Get(1) + ( lsS.Get(3)/2)
cvs.DrawLine(x, y, x2, y2, lsS.Get(17),1)
End If
Next
Next
End Sub
2) griglia (canvas)
? Di che tipo è "grid"?If grid.GetNode(i)
Non mi sembra affatto lento; inoltre, piccolo dettaglio... nel video sei in modalità Debug! In Release andrebbe ancora molto più velocemente.
? Di che tipo è "grid"?
ho guardato meglio; è un Pane, che passi come parametro.
#Region Project Attributes
#MainFormWidth: 1000
#MainFormHeight: 700
#AdditionalJar: sqlite-jdbc-3.7.2
#End Region
Sub Process_Globals
Private fx As JFX
Public MainForm As Form
Public lavagna As Pane
Public lineCanvas, ragnoCanvas As Canvas
Private scrolllavagna As ScrollPane
Private tools As ToolsLayout
Public groupValue As Boolean = False
Public listMaster, listSlave As List
End Sub
Sub AppStart (Form1 As Form, Args() As String)
MainForm = Form1
MainForm.Show
MainForm.Title = "Lavagna"
MainForm.Resizable = False
lavagna.Initialize("lavagna")
lavagna.PrefHeight = 685
lavagna.PrefWidth = 6000
lavagna.Style="-fx-background-color:#2D2D30"
scrolllavagna.Initialize("scrolllavagna")
scrolllavagna.InnerNode = lavagna
scrolllavagna.PrefHeight = 700
scrolllavagna.PrefWidth = 3000
scrolllavagna.Pannable = False
scrolllavagna.HPosition=0
scrolllavagna.Style=lavagna.Style
MainForm.RootPane.AddNode(scrolllavagna,90,0,910,700)
tools.Initialize()
Dim img As Image
img.Initialize(File.DirAssets,"Menu-01.png")
Dim imgw As ImageView
imgw.Initialize("imgw")
imgw.SetImage(img)
MainForm.RootPane.AddNode(imgw,MainForm.WindowWidth-58,10,32,32)
listMaster.Initialize()
listSlave.Initialize()
gridcanvas
End Sub
Sub Application_Error (Error As Exception, StackTrace As String) As Boolean
Return True
End Sub
public Sub gridcanvas
lineCanvas = createCanvasGrid(lavagna, 0, 0, lavagna.PrefWidth, lavagna.PrefHeight, True)
ragnoCanvas = createCanvasGrid(lavagna, 0, 0, lavagna.PrefWidth, lavagna.PrefHeight, True)
End Sub
Sub createCanvasGrid(grid As Pane, x As Int, y As Int, width As Int, height As Int, sharp As Boolean) As Canvas
Dim cvs As Canvas
cvs.Initialize("")
grid.AddNode(cvs, x, y, width, height)
For x = 0 To width Step 10
Dim x1 As Double
If sharp Then x1 = x + 0.5 Else x1 = x
cvs.DrawLine(x1, 0, x1, height, fx.Colors.Black, 1.0)
Next
For y = 0 To height Step 10
Dim y1 As Double
If sharp Then y1 = y + 0.5 Else y1 = y
cvs.DrawLine(0, y1, width, y1, fx.Colors.Black, 1.0)
Next
Return cvs
End Sub
Public Sub group(grid As Pane, cvs As Canvas)
cvs.ClearRect(0,0,cvs.Width,cvs.Height)
Dim sharp As Boolean = True
For x = 0 To grid.PrefWidth Step 10
Dim x1 As Double
If sharp Then x1 = x + 0.5 Else x1 = x
cvs.DrawLine(x1, 0, x1, grid.PrefHeight, fx.Colors.Black, 1.0)
Next
For y = 0 To grid.PrefHeight Step 10
Dim y1 As Double
If sharp Then y1 = y + 0.5 Else y1 = y
cvs.DrawLine(0, y1, grid.PrefWidth, y1, fx.Colors.Black, 1.0)
Next
End Sub
Sub ragnoclear(grid As Pane, cvs As Canvas)
cvs.ClearRect(0,0,cvs.Width,cvs.Height)
End Sub
Sub ragnodraw(grid As Pane, cvs As Canvas)
cvs.ClearRect(0,0,cvs.Width,cvs.Height)
If groupValue = False Then Return
For i = 0 To lavagna.NumberOfNodes-1
If grid.GetNode(i) Is Button Then
Dim ls As List = grid.GetNode(i).Tag
If ls.Get(18) = "master" Then
cvs.DrawRect(grid.GetNode(i).Left-1,grid.GetNode(i).Top-1,grid.GetNode(i).PrefWidth+2,grid.getNode(i).PrefHeight+3,ls.Get(17), True,3)
listMaster.Add(ls)
Else
cvs.DrawRect(grid.GetNode(i).Left-1,grid.GetNode(i).Top-1,grid.GetNode(i).PrefWidth+2,grid.getNode(i).PrefHeight+3,ls.Get(17), True,1)
listSlave.Add(ls)
End If
End If
Next
Dim x,y,x2,y2 As Int
For i=0 To listMaster.Size-1
Dim lsM As List = listMaster.Get(i)
x = lsM.Get(0) +( lsM.Get(2)/2)
y = lsM.Get(1) +( lsM.Get(3)/2)
For ii=0 To listSlave.Size-1
Dim lsS As List = listSlave.Get(ii)
If lsS.Get(16) = lsM.Get(16) Then
x2=lsS.Get(0) + ( lsS.Get(2)/2)
y2=lsS.Get(1) + ( lsS.Get(3)/2)
cvs.DrawLine(x, y, x2, y2, lsS.Get(17),1)
End If
Next
Next
End Sub
Io avrei lavorato molto ma molto di più, cercando la perfezione ?Accetto anche commenti di scambio vedute, mi raccomando non solo sbirciare e poi copiare hahahahh
Io avrei lavorato molto ma molto di più, cercando la perfezione ?
Vai avanti così; come ti ho detto, a me la velocità sembra già molto buona e, oltretutto, nel video hai lanciato il progetto in modalità Debug, mentre in Release sarà parecchio più veloce.
Dim i As Int = -1
Do While rs.NextRow
Dim imvalue As List
imvalue.Initialize
For i=0 To rs.ColumnCount-1
imvalue.Add(rs.GetString2(i))
Next
' creo object
Dim bt As Button
bt.Initialize("im")
bt.Tag = imvalue
bt.Text = imvalue.Get(13) ' company
bt.Style = "-fx-background-color:#1E1E1E"
bt.TextColor= fx.Colors.ARGB(255,200,200,200)
' creo immagine object (icona)
Dim imw As ImageView
imw.Initialize("")
imw.SetImage(imvalue.Get(14)) ' bombaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
imw.PrefHeight = 24
imw.PrefWidth = 24
SetGraphic(bt, imw)
Main.lavagna.AddNode(bt,imvalue.Get(0),imvalue.Get(1),imvalue.Get(2),imvalue.Get(3))
If Main.groupValue = True Then Main.ragnodraw(Main.lavagna,Main.ragnoCanvas)
Loop
CREATE TABLE [item] (
[left] TEXT(255),
[top] TEXT(255),
[width] TEXT(255),
[Height] TEXT(255),
[TrueFalse] TEXT(255),
[fullname] TEXT(255),
[Address] TEXT(255),
[zip] TEXT(255),
[city] TEXT(255),
[country] TEXT(255),
[phone] TEXT(255),
[mail] TEXT(255),
[url] TEXT(255),
[company] TEXT(255),
[icon] IMAGE, ' <<<<<<<<<<<<<<<<<<<<<<<<<<< campo image sqlite >>>>>>>>>>>>>>>>>>>>>>>
[id] TEXT(255),
[group] TEXT(255),
[colorgroup] TEXT(255),
[masterslave] TEXT(255));
Ci sono un paio di modi ma... sicuro di voler salvare l'immagine nel DB? Occuperà molto spazio. Se possibile, meglio salvare nel DB il percorso dei file immagine.come si gestisce l'immagine in un campo image di sqlite?
Ci sono un paio di modi ma... sicuro di voler salvare l'immagine nel DB? Occuperà molto spazio. Se possibile, meglio salvare nel DB il percorso dei file immagine.