[GB.REPORT]

* OPT: BE CAREFFULL, Now if ReportObject Width and Height are not
  set, then the ReportObject si autoResized. This will help
  a lot new users to understand the report layout.
* BUG: Some bugs corrected on the reportPreview.
* NEW: Begin to implement a Shadow for ReportFrame Objects.
  It have the same way to work than the CSS3 box shadow.
  XOffset, YOffset, Spread, Color. Actually only the class 
  have been implemented... I need to say to the engine how to use
  it :-)
  


git-svn-id: svn://localhost/gambas/trunk@6148 867c0c6c-44f3-4631-809d-bfa615b0a4ec
This commit is contained in:
Fabien Bodard 2014-02-12 14:09:24 +00:00
parent da8305456c
commit b1078f7ae8
23 changed files with 556 additions and 180 deletions

View file

@ -373,6 +373,10 @@ ToString
m
s
_SetUnifiedValues
m
#ReportBrush
C
@ -817,6 +821,10 @@ Border
p
ReportBorder
BoxShadow
p
ReportBoxShadow
BackGround
p
ReportBrush
@ -1085,6 +1093,21 @@ Text
p
s
#ReportShadowStyle
C
None
C
i
0
Solid
C
i
1
Gradient
C
i
2
#ReportSvgImage
ReportFrame
C
@ -1386,3 +1409,11 @@ Round2
v
s
_Width
v
f
_SetUnifiedValues
m

View file

@ -16,6 +16,7 @@ ReportPadding
ReportPageBreak
ReportPanel
ReportSection
ReportShadowStyle
ReportSvgImage
ReportTextLabel
ReportUnits

View file

@ -1,7 +1,7 @@
# Gambas Project File 3.0
# Compiled with Gambas 3.5.90
Title=Report designer
Startup=Report9
Startup=myReport1
Icon=printer1.png
Version=3.5.90
VersionFile=1
@ -15,6 +15,7 @@ Component=gb.map
Component=gb.report
Description="Report engine for gambas"
Authors="Fabien Bodard"
Environment="GB_GUI=gb.gtk3"
TabSize=2
Translate=1
Language=fr

View file

@ -4,20 +4,21 @@ Private $aModeButtons As New ToolButton[]
'Static Private $hReport As Report
Private bFlag As Boolean
Private $hPrinter As New Printer As "Printer"
Private $iCurPrinterResolution As Integer
Static Public Function Run(hReport As Report)
Dim hFPreview As FPreview
Dim hFPreview As FPreview
hFpreview = New FPreview
hFPreview.SetReport(hReport)
hFpreview.ShowModal()
End
Public Sub _new()
Dim s As String
'View.Report = New MyReport1
'SetReport(View.Report)
@ -29,8 +30,9 @@ Public Sub _new()
Next
SelectPrinter
Button1.Tag = False
' Panel4.Layout = [7, 2]
' Panel4.Layout = [7, 2]
'ToggleButton1_Click
End
Private Sub SelectPrinter(Optional sName As String)
@ -54,30 +56,27 @@ Private Sub SelectPrinter(Optional sName As String)
End
Public Sub SetReport(hReport As Report)
'View.Report = hReport
View.Report = hReport
GetValuesFromReport()
'View.Report = hReport
View.Report = hReport
GetValuesFromReport()
End
Private Sub GetValuesFromReport()
cmbPaper.Index = View.Report.Paper
$hPrinter.Orientation = View.Report.Orientation
If View.Report.Paper = Printer.Custom Then
pnlCustom.Enabled = True
$hPrinter.PaperWidth = TSizeParse[View.Report.Width].ToCm() * 10
$hPrinter.PaperHeight = TSizeParse[View.Report.Height].ToCm() * 10
pnlCustom.Enabled = True
$hPrinter.PaperWidth = TSizeParse[View.Report.Width].ToCm() * 10
$hPrinter.PaperHeight = TSizeParse[View.Report.Height].ToCm() * 10
Else
$hPrinter.Paper = View.Report.Paper
Endif
cmbOrientation.Index = $hPrinter.Orientation
cmbDuplex.Index = $hPrinter.Duplex
cmbPaper.Index = $hPrinter.Paper
@ -87,101 +86,107 @@ Private Sub GetValuesFromReport()
Object.Lock(spHeight)
spHeight.Value = $hPrinter.PaperHeight
Object.Unlock(spHeight)
End
Public Sub Slider1_Change()
Dim hButton As ToolButton
Dim hButton As ToolButton
View.Scale = Slider1.Value / 100
lblZoom.Text = Str(Slider1.Value) & " %"
bFlag = True
bFlag = True
For Each hButton In $aModeButtons
hButton.Value = False
Next
bFlag = False
End
Public Sub View_Change()
Object.Lock(Slider1)
Slider1.Value = View.Scale * 100
Slider1.Value = View.Scale * 100
Object.Unlock(Slider1)
lblZoom.Text = Str(Slider1.Value) & " %"
lblZoom.Text = Str(Slider1.Value) & " %"
End
Public Sub Mode_Click()
Dim hButton As ToolButton
Dim hCurButton As ToolButton
If bFlag Then Return
bFlag = True
hCurButton = Last
For Each hButton In $aModeButtons
'Object.Lock(hButton)
'Print hButton, hCurButton, hButton = hCurButton
If hButton = hCurButton Then
hButton.Value = True
Else
hButton.Value = False
Endif
'Object.Unlock(hButton)
Next
bFlag = False
View.ScaleMode = hCurButton.Tag
Dim hButton As ToolButton
Dim hCurButton As ToolButton
If bFlag Then Return
bFlag = True
hCurButton = Last
For Each hButton In $aModeButtons
'Object.Lock(hButton)
'Print hButton, hCurButton, hButton = hCurButton
If hButton = hCurButton Then
hButton.Value = True
Else
hButton.Value = False
Endif
'Object.Unlock(hButton)
Next
bFlag = False
View.ScaleMode = hCurButton.Tag
End
Public Sub tgbGrayScale_Click()
Last.Background = IIf(Last.Value, Color.Gray, Color.Default)
$hPrinter.GrayScale = Last.Value
View._GrayScale = Last.Value
End
Public Sub tgbFullPage_Click()
Public Sub tgbFullPage_Click()
Last.Background = IIf(Last.Value, Color.Gray, Color.Default)
$hPrinter.FullPage = Last.Value
End
Public Sub tgbReverseCopies_Click()
Last.Background = IIf(Last.Value, Color.Gray, Color.Default)
$hPrinter.ReverseOrder = Last.value
End
Public Sub tgbCollateCopies_Click()
Last.Background = IIf(Last.Value, Color.Gray, Color.Default)
$hPrinter.CollateCopies = Last.Value
End
Public Sub PictureBox2_MouseDown()
End
Public Sub cmbOrientation_Change()
End
Public Sub cmbOrientation_Click()
If View.Report.Orientation = Last.Index Then Return
View.Report.Orientation = Last.Index
'View.Report.Refresh
View.Refresh
GetValuesFromReport
End
Public Sub cmbPaper_Click()
Dim i As Integer = Last.Index
Dim i As Integer = Last.Index
'Print "id "; View.Report.paper
If View.Report.Paper = i Then Return
View.Report.Paper = i
@ -189,111 +194,134 @@ Dim i As Integer = Last.Index
pnlCustom.Enabled = True
Else
pnlCustom.Enabled = False
View.Refresh
GetValuesFromReport
View.Refresh
GetValuesFromReport
Endif
End
Public Sub cmbDuplex_Click()
$hPrinter.Duplex = Last.index
End
Public Sub ButtonBox1_Click()
Dialog.Path = User.Home
Dialog.Filter = ["*.pdf", "Pdf", "*.ps", "Postscript"]
If Not Dialog.OpenFile() Then
Last.Text = Dialog.Path
ButtonBox1.Text = Dialog.Path
$hPrinter.OutputFile = Dialog.Path
Endif
End
Public Sub Form_Activate()
End
Public Sub TabPanel1_Click()
If TabPanel1.Index = 0 Then
$hPrinter.OutputFile = ""
$hPrinter.Name = cmbPrinter.Text
$iCurPrinterResolution = $hPrinter.Resolution
Else
$hPrinter.OutputFile = ButtonBox1.Text
$hPrinter.Resolution = 600
Endif
End
Public Sub TextBox1_Change()
View.Range = Last.Text
End
Public Sub TextBox1_Click()
Last.Text = ""
End
Public Sub spWidth_Change()
View.Report.Width = Str(Last.Value) & "mm"
View.Refresh
View.Report.Width = Str(Last.Value) & "mm"
View.Refresh
End
Public Sub spHeight_Change()
View.Report.Height = Str(Last.Value) & "mm"
View.Refresh
View.Report.Height = Str(Last.Value) & "mm"
View.Refresh
End
Public Sub Button2_Click()
View._ForceLayout
End
Public Sub cmbPrinter_Click()
SelectPrinter(Last.Text)
End
Public Sub Button1_Click()
Dim iReturn As Integer
If Button1.Tag Then
'Button1.Picture = Picture["icon:/22/exec"]
'Button1.Picture = Picture["icon:/22/exec"]
$hPrinter.Cancel
Button1.Tag = False
Else
If Not View.Report Then Return
If TabPanel1.Index = 1 Then
If $hPrinter.OutputFile Then
If Exist($hPrinter.OutputFile) Then
iReturn = Message.Warning("This file already exist.\nDo you want to replace it ?", "Yes", "No")
If iReturn = 2 Then
ButtonBox1.SetFocus
'ButtonBox1.se
Return
Endif
Endif
Else
ButtonBox1_Click
Return
Endif
Endif
Button1.Tag = True
Button1.Picture = Picture["icon:/22/cancel"]
Button1.Text = ("Cancel")
Print $hPrinter.Resolution
$hPrinter.Print
Endif
End
Public Sub Printer_Begin()
hbZoom.Hide
hbPrinting.Show
Inc Application.Busy
ProgressBar1.Value = 0
ProgressBar1.Pulse = True
lblPrint.Text = ("Layout...")
End
Public Sub Printer_Paginate()
'View._ForceLayout
If View.Report._LayoutNotFinished Then
View.LockLayout
View.Report._Layout(View.Report.PageCount)
@ -303,22 +331,23 @@ Public Sub Printer_Paginate()
lblPrint.Text = ("Printing...")
View.UnlockLayout
Endif
'View.LockLayout
'View.LockLayout
End
Public Sub Printer_Draw()
If View._RangePages.Count = 0 Then
View.Report.Paint($hPrinter.Page)
Else
View.Report.Paint(View._RangePages[$hPrinter.Page - 1])
Endif
ProgressBar1.Value = $hPrinter.Page / View.PageCount
End
Public Sub Printer_End()
'View.UnlockLayout
hbPrinting.Hide
hbZoom.Show
@ -326,19 +355,21 @@ Public Sub Printer_End()
Button1.Picture = Picture["icon:/22/print"]
Button1.Text = ("Print")
Button1.Tag = False
End
Public Sub View_Layout(LayoutInProgress As Boolean)
'Button1.Enabled = Not LayoutInProgress
End
Public Sub Panel12_MouseDown()
End
Public Sub ButtonBox1_Change()
$hPrinter.OutputFile = Last.Text
End

View file

@ -121,6 +121,7 @@ Public Sub _Layout(Optional iPage As Integer = -1)
Dim CSection As ReportContainer
Dim CBaseSection As ReportContainer
Dim i As Integer
'Print Paint.ResolutionX
'If iPage < 0 Then Return
If Not $bLayoutIsDirty Then Return
If _bInExec Then Return
@ -208,6 +209,9 @@ Public Sub Paint(Page As Integer)
'ReportUnits.DrawCount = 0
'Paint.Reset
' If Paint.Device Is Printer Then
' Paint.Scale(Paint.ResolutionX / 1200, Paint.ResolutionY / 1200)
' Endif
Paint.Scale($fScale, $fScale)
' With Paint.ClipExtents

View file

@ -4,12 +4,15 @@ Export
Static Public Const None As Integer = 0
Static Public Const Solid As Integer = 1
Static Private $aShadowStyle As String[] = ["none", "solid", "gradiant"]
Static Private $aAlign As String[] = Classes["Align"].Symbols
Private hTop As New _ReportBorderSide
Private hBottom As New _ReportBorderSide
Private hLeft As New _ReportBorderSide
Private hRight As New _ReportBorderSide
Private hRCorner As New _ReportRoundCorner
Public _Left As Float
Public _Right As Float
Public _Top As Float
@ -30,6 +33,7 @@ Property Brush As ReportBrush
Public Style As Integer
' Static Private Sub ResetBorder(hReportBorder As ReportBorder) As Boolean
'
' With hReportBorder
@ -44,18 +48,17 @@ Public Style As Integer
' End
Static Public Function _get(sValue As String) As ReportBorder
Dim hReportBorder As New ReportBorder
Dim sBorder As String
Dim aScan As String[]
If Not sValue Then Return hReportBorder
hReportBorder.Style = ReportBorder.Solid
hReportBorder.RoundCorner._Active = False
For Each sBorder In Split(sValue, ";")
aScan = Scan(sBorder, "*:*")
Select Case LCase(Trim(aScan[0]))
Case "border"
@ -77,21 +80,23 @@ Static Public Function _get(sValue As String) As ReportBorder
Case "bottomrightcorner"
hReportBorder.RoundCorner.BottomRight = aScan[1]
End Select
Next
Finally
Return hReportBorder
End
Static Private Sub FillObject(hObj As Object, sValue As String)
Dim sBrush As String
For Each sBrush In Split(sValue, " ")
If IsDigit(Left(sBrush)) Then
Try hObj.Width = sBrush
Else
@ -99,13 +104,15 @@ Static Private Sub FillObject(hObj As Object, sValue As String)
If hObj.Brush = Null Then hObj.Brush = ReportBrush["&H0"]
Endif
Next
End
Public Function ToString() As String
Dim aValue As New String[]
If Me.Style = ReportBorder.None Then Return 'aValue.Add("None")
'If Me.Style = ReportBorder.Solid Then aValue.Add("Solid")
aValue.Add(Me.Width)
@ -115,65 +122,88 @@ Public Function ToString() As String
If Me.Right Then aValue.Add("Right")
aValue.Add("#" & Hex(Me.Color, 6))
Return aValue.Join()
End
Private Function Top_Read() As _ReportBorderSide
Return hTop
End
Private Function Left_Read() As _ReportBorderSide
Return hLeft
End
Private Function bottom_Read() As _ReportBorderSide
Return hBottom
End
Private Function Width_Read() As String
Return hLeft.Width
End
Private Sub Width_Write(Value As String)
hLeft.Width = Value
hTop.Width = Value
hBottom.Width = Value
hRight.Width = Value
End
Private Function Brush_Read() As ReportBrush
Return hLeft.Brush
End
Private Sub Brush_Write(Value As ReportBrush)
hLeft.Brush = Value
hTop.Brush = Value
hBottom.Brush = Value
hRight.Brush = Value
End
Private Function Right_Read() As _ReportBorderSide
Return hRight
End
Private Function RoundCorner_Read() As _ReportRoundCorner
Return hRCorner
End
Public Sub _SetUnifiedValues()
Dim hSizeParse As TSizeParse
hSizeParse = New TSizeParse(hLeft.Width)
_Left = hSizeParse.GetValue()
hSizeParse = New TSizeParse(hRight.Width)
_Right = hSizeParse.GetValue()
hSizeParse = New TSizeParse(hTop.Width)
_Top = hSizeParse.GetValue()
hSizeParse = New TSizeParse(hBottom.Width)
_Bottom = hSizeParse.GetValue()
hRCorner._SetUnifiedValues()
End

View file

@ -0,0 +1,213 @@
' Gambas class file
Private $aBoxShadow As New _ReportBoxShadow[]
Property RelX As String
Property RelY As String
'Property Blur As String
Property Spread As String
Property Inset As Boolean
Property Color As Integer
Property Read Count As Integer
Property Read Max As Integer
Property Read _RelX As Integer
Property Read _RelY As Integer
'Property Read _Blur As Integer
Property Read _Spread As Integer
Public Sub _new()
Dim hBoxShadow As New _ReportBoxShadow
$aBoxShadow.Add(hBoxShadow)
End
Static Public Function _get(sValue As String) As ReportBoxShadow
Dim hBoxShadow As New ReportBoxShadow
Dim s As String
Dim i As Integer
For Each s In Split(sValue, " ")
If IsDigit(Left(s)) Then
Select Case i
Case 0
hBoxShadow.RelX = s
Case 1
hBoxShadow.RelY = s
Case 2
hBoxShadow.Blur = s
Case 3
hBoxShadow.Spread = s
End Select
Inc i
Continue
Endif
If LCase(s) = "inset" Then
hBoxShadow.Inset = True
Continue
Endif
Try hBoxShadow.Color = Val(s)
Next
Return hBoxShadow
End
' Public Function _get(Index As Integer) As _ReportBoxShadow
'
' Return $aBoxShadow[Index]
'
' End
Public Sub Add(Optional RelX As String, RelY As String, iColor As Integer, Spread As String, Blur As String, Inset As Boolean)
Dim hBoxShadow As New _ReportBoxShadow
If RelX Then hBoxShadow.RelX = RelX
If RelY Then hBoxShadow.RelY = RelY
If iColor Then hBoxShadow.Color = iColor
If SPread Then hBoxShadow.Spread = Spread
If Blur Then hBoxShadow.Blur = Blur
hBoxShadow.Inset = Inset
$aBoxShadow.Add(hBoxShadow)
End
Public Sub Remove(Index As Integer)
$aBoxShadow.Remove(Index)
End
Private Function RelX_Read() As String
Return $aBoxShadow[0].RelX
End
Private Sub RelX_Write(Value As String)
$aBoxShadow[0].RelX = Value
End
Private Function RelY_Read() As String
Return $aBoxShadow[0].RelY
End
Private Sub RelY_Write(Value As String)
$aBoxShadow[0].RelY = Value
End
Private Function Blur_Read() As String
Return $aBoxShadow[0].Blur
End
Private Sub Blur_Write(Value As String)
$aBoxShadow[0].Blur = Value
End
Private Function Spread_Read() As String
Return $aBoxShadow[0].Spread
End
Private Sub Spread_Write(Value As String)
$aBoxShadow[0].Spread = Value
End
Private Function Inset_Read() As Boolean
Return $aBoxShadow[0].Inset
End
Private Sub Inset_Write(Value As Boolean)
$aBoxShadow[0].Inset = Value
End
Private Function Color_Read() As Integer
Return $aBoxShadow[0].Color
End
Private Sub Color_Write(Value As Integer)
$aBoxShadow[0].Color = Value
End
Private Function Count_Read() As Integer
Return $aBoxShadow.Count
End
Private Function Max_Read() As Integer
Return $aBoxShadow.Max
End
Public Sub _SetUnifiedValues()
Dim i As Integer
Dim SizeParse As TSizeParse
For i = 0 To $aBoxShadow.Max
With $aBoxShadow[i]
._Relx = TSizeParse[.RelX].GetValue()
._RelY = TSizeParse[.RelY].GetValue()
._Spread = TSizeParse[.Spread].GetValue()
'._Blur = TSizeParse[.Blur].GetValue()
End With
Next
End
Private Function _RelX_Read() As Integer
Return $aBoxShadow[0]._Relx
End
Private Function _RelY_Read() As Integer
Return $aBoxShadow[0]._RelY
End
Private Function _Blur_Read() As Integer
Return $aBoxShadow[0]._Blur
End
Private Function _Spread_Read() As Integer
Return $aBoxShadow[0]._Spread
End

View file

@ -289,7 +289,7 @@ Private Function GetHSizeInt((AvailableW) As Float, (AvailableH) As Float, (Tota
hMyHints = Super._GetSizeHints(AvailableW, AvailableH, TotalWidth, TotalHeight, DataIndex)
'Puis si besoins voir le besoin des enfants
If Me.Autoresize Then
If Me.Autoresize Or If (Me._Width = 0 And Me._Height = 0) Then
fSpacing = IIf(Me._RelativeSpacing, TotalWidth * Me._Spacing / 100, Me._Spacing)
For Each hChild In Me.Children
hChildHints = hchild._GetSizeHints(AvailableW - fWidth, AvailableH, AvailableW, AvailableH, DataIndex)
@ -339,7 +339,7 @@ Private Function GetVSizeInt((AvailableW) As Float, (AvailableH) As Float, (Tota
'On ajoute la taille des objets fixes précédents
fHeight = $fFixedSize
If Me.Autoresize Then
If Me.Autoresize Or If (Me._Width = 0 And Me._Height = 0) Then
'On définit la taille au besoins des enfants
For i = Me._CurItem To Me.Children.Max
hChild = Me.Children[i]

View file

@ -16,7 +16,9 @@ Private $hBorder As New ReportBorder
Private $hBackGround As ReportBrush
Property Border As ReportBorder
Property BoxShadow As ReportBoxShadow
Private $hBoxShadow As New ReportBoxShadow
Property BackGround As ReportBrush
'Property Read _BorderWidth As Float
@ -59,9 +61,10 @@ Public Sub _PaintBefore((Page) As Integer, (X) As Float, (Y) As Float, (hControl
Paint.Stroke
Else
'If $hBorder.Shadow.Style > ReportShadowStyle.None Then PaintShadow(X1, Y1, hControl.RealWidth, hControl.RealHeight, $hBorder.RoundCorner._Active)
If $hBorder.RoundCorner._Active Then
RoundRect(X1, Y1, hControl.RealWidth, hControl.RealHeight,
RoundRect(X1, Y1, hControl.RealWidth, hControl.RealHeight,
[ReportUnits._ReportUnitsToPixels($hBorder.RoundCorner._TopLeft1),
ReportUnits._ReportUnitsToPixels($hBorder.RoundCorner._TopRight1),
ReportUnits._ReportUnitsToPixels($hBorder.RoundCorner._BottomRight1),
@ -70,8 +73,13 @@ Public Sub _PaintBefore((Page) As Integer, (X) As Float, (Y) As Float, (hControl
ReportUnits._ReportUnitsToPixels($hBorder.RoundCorner._TopRight2),
ReportUnits._ReportUnitsToPixels($hBorder.RoundCorner._BottomRight2),
ReportUnits._ReportUnitsToPixels($hBorder.RoundCorner._BottomRight2)])
Else
Paint.Rectangle(X1, Y1, X2 - X1, Y2 - Y1)
If $hBoxShadow._RelX <> 0 Then
Endif
Paint.Rectangle(X1, Y1, X2 - X1, Y2 - Y1)
Endif
If Me.BackGround = Null Then
@ -87,6 +95,15 @@ Public Sub _PaintBefore((Page) As Integer, (X) As Float, (Y) As Float, (hControl
Endif
End
Private Sub PaintBoxShadow(X As Integer, Y As Integer, Width As Integer, Height As Integer)
End
Public Sub _PaintFrame((Page) As Integer, (X) As Float, (Y) As Float, (hControl) As TControl, (DataIndex) As Integer)
@ -112,6 +129,7 @@ Public Sub _PaintAfter((Page) As Integer, (X) As Float, (Y) As Float, (hControl)
Y2 = (y + hControl.RealTop + hControl.RealHeight)
'If Me.Tag = "**" Then Stop
If $hBorder.RoundCorner._Active Then
Paint.AntiAlias = True
fLeftWidth = ReportUnits._ReportUnitsToPixels($hBorder._Left) / 2
paint.LineWidth = fLeftWidth * 2
paint.Brush = $hBorder.Left.Brush._PaintBrush(X1, Y1, X2, Y2)
@ -128,6 +146,7 @@ Public Sub _PaintAfter((Page) As Integer, (X) As Float, (Y) As Float, (hControl)
paint.Stroke
Else
'Paint.AntiAlias = False
fLeftWidth = ReportUnits._ReportUnitsToPixels($hBorder._Left)
fRighWidth = ReportUnits._ReportUnitsToPixels($hBorder._Right)
fTopWidth = ReportUnits._ReportUnitsToPixels($hBorder._Top)
@ -159,6 +178,7 @@ Public Sub _PaintAfter((Page) As Integer, (X) As Float, (Y) As Float, (hControl)
paint.Rectangle(X1, Y1, fLeftWidth, Y2 - Y1)
paint.Fill
Endif
'Paint.AntiAlias = True
Endif
'Dec iLevel
'Print String(iLevel, " ") & "restoré"
@ -181,22 +201,9 @@ End
Public Sub _SetUnifiedValues()
Dim hSizeParse As TSizeParse
Super._SetUnifiedValues()
hSizeParse = New TSizeParse($hBorder.Left.Width)
$hBorder._Left = hSizeParse.GetValue()
hSizeParse = New TSizeParse($hBorder.Right.Width)
$hBorder._Right = hSizeParse.GetValue()
hSizeParse = New TSizeParse($hBorder.Top.Width)
$hBorder._Top = hSizeParse.GetValue()
hSizeParse = New TSizeParse($hBorder.Bottom.Width)
$hBorder._Bottom = hSizeParse.GetValue()
$hBorder.RoundCorner._SetUnifiedValues()
Super._SetUnifiedValues()
$hBorder._SetUnifiedValues
$hBoxShadow._SetUnifiedValues
End
Public Sub _GetSizeHints((AvailableW) As Float, (AvailableH) As Float, (TotalWidth) As Float, (TotalHeight) As Float, DataIndex As Integer) As TSizeHint
@ -280,3 +287,16 @@ Static Private Sub RoundRect(x As Float, y As Float, w As Float, h As Float, Rad
'Paint.closepath()
End
Private Function BoxShadow_Read() As ReportBoxShadow
Return $hBoxShadow
End
Private Sub BoxShadow_Write(Value As ReportBoxShadow)
$hBoxShadow = Value
End

View file

@ -30,7 +30,7 @@ Public Sub _GetSizeHints((AvailableW) As Float, (AvailableH) As Float, (TotalWid
hMyHints = Super._GetSizeHints(AvailableW, AvailableH, TotalWidth, TotalHeight, DataIndex)
If Me.Autoresize Then
If Me.Autoresize Or If (Me._Width = 0 And Me._Height = 0) Then
If $hpic Then
hpic = $hpic
Else

View file

@ -65,7 +65,7 @@ Public Sub _GetSizeHints((AvailableW) As Float, (AvailableH) As Float, (TotalWid
'if the size choosed by the user is less than the font height, set the object to the font height
If Me.Autoresize Then
If Me.Autoresize Or If (Me._Width = 0 And Me._Height = 0) Then
If Not IsNull(Me.Font) Then Paint.Font = Me.Font
If Not $sText Then
Raise Data(DataIndex)

View file

@ -0,0 +1,4 @@
' Gambas class file
Export
Public Enum None, Solid, Gradient

View file

@ -25,7 +25,7 @@ Public Sub _GetSizeHints((AvailableW) As Float, (AvailableH) As Float, (TotalWid
hMyHints = Super._GetSizeHints(AvailableW, AvailableH, TotalWidth, TotalWidth, DataIndex)
If Me.Autoresize Then
If Me.Autoresize Or If (Me._Width = 0 And Me._Height = 0) Then
If $hpic Then
hpic = $hpic
Else

View file

@ -48,7 +48,7 @@ Public Sub _GetSizeHints((AvailableW) As Float, (AvailableH) As Float, (TotalWid
hMyHints = Super._GetSizeHints(AvailableW, AvailableH, TotalWidth, TotalWidth, DataIndex)
If Me.Autoresize Then
If Me.Autoresize Or If (Me._Width = 0 And Me._Height = 0) Then
If Not $sText Then
Raise Data(DataIndex)
sTmp = Data

View file

@ -1,6 +1,6 @@
' Gambas class file
Fast
'Fast
Public Value As Float
Public Unit As String
@ -10,7 +10,7 @@ Public Sub _new(Size As String, Optional bAllowRelative As Boolean)
Dim I As Integer
Dim sCar As String
Size = Trim(Size)
If Not Size Then
@ -25,7 +25,7 @@ Public Sub _new(Size As String, Optional bAllowRelative As Boolean)
Value = CFloat(Left$(Size, I - 1))
Unit = Trim(Mid$(Size, I))
If Not Unit Then Unit = "%"
If Not ReportUnits.AllowedUnits.Exist(Unit) Then
@ -49,7 +49,8 @@ Public Sub IsRelative() As Boolean
End
Public Sub GetValue() As Float
If IsRelative() Then
Return Value
Else

View file

@ -1,13 +1,2 @@
' Gambas class file
Public Sub ReportLabel1_Data()
End
Public Sub ReportDrawingArea1_Draw()
Paint.MoveTo(0, 0)
Paint.LineTo(Paint.Width, Paint.Height)
Paint.Stroke
End

View file

@ -4,11 +4,14 @@
#MoveScaled(0,0,64,64)
Index = 0
Text = ("")
{ ReportLabel1 ReportLabel
#MoveScaled(2,2,58,9)
AutoResize = True
Border = ReportBorder["Top:1mm #000000;Bottom:1mm #000000;Left:1mm #000000;Right:1mm #000000"]
Text = ("coucou")
{ ReportPanel1 ReportPanel
#MoveScaled(4,5,59,31)
Padding = ReportPadding["Top:1mm;Bottom:1mm;Left:1mm;Right:1mm"]
{ ReportLabel1 ReportLabel
#MoveScaled(2,4,53,20)
Padding = ReportPadding["Top:2cm;Bottom:2cm;Left:2cm;Right:2cm"]
Text = ("ReportLabel1")
}
}
Index = 0
}

View file

@ -0,0 +1,11 @@
' Gambas class file
Public Sub ReportDrawingArea1_Draw()
Paint.MoveTo(0, 0)
Paint.LineTo(Paint.Width, Paint.Height)
Paint.Stroke
End

View file

@ -0,0 +1,16 @@
# Gambas Form File 3.0
{ Report Report
#MoveScaled(0,0,64,64)
Padding = ReportPadding["Top:6cm;Bottom:6cm;Left:6cm;Right:6cm"]
Index = 0
Text = ("")
{ ReportLabel1 ReportLabel
#MoveScaled(2,2,58,9)
Height = "7cm"
AutoResize = True
Border = ReportBorder["Top:2px #000000;Bottom:2px #000000;Left:2mm LinearGradient(0.74,0.7,0,0,[#000000,#FFFFFF],[0,1]);Right:2px #000000"]
Text = ("coucou")
}
Index = 0
}

View file

@ -7,7 +7,7 @@ Public Sub _new()
hMap.AddTile("gg", "https://khms{s}.google.fr/kh/v={version}&src=app&x={x}&y={y}&z={z}&s=Galile", ["version": "145"]).SubDomains = ["0", "1", "2"]
hmap.Zoom = 17
ReportPanel1.DataCount = 200
'ReportPanel1.DataCount = 200
End
@ -16,9 +16,10 @@ Public Sub ReportDrawingArea1_Draw(width As Integer, Height As Integer, Index As
'Print width, Height
'hMap.Resize(Width, Height)
'If Paint.Device Is Printer Then Stop
hMap.Center = MapPoint(Geo.SexToDec(Str(CInt(Rnd(30, 45))) & "°31'33,33''N"), Geo.SexToDec("0°18'43,50''W"))
hMap.Center = MapPoint(Geo.SexToDec("45°31'33,33''N"), Geo.SexToDec("0°18'43,50''W"))
'hMap.Center = MapPoint(Geo.SexToDec(Str(CInt(Rnd(30, 45))) & "°31'33,33''N"), Geo.SexToDec("0°18'43,50''W"))
'If Not hImgCache Then
hImgCache = hMap.Grab(hMap.Bounds, width / ReportUnits.DesktopScale, Height / ReportUnits.DesktopScale, 0, 12)
hImgCache = hMap.Grab(hMap.Bounds, width / ReportUnits.DesktopScale, Height / ReportUnits.DesktopScale, 0, 18)
Draw.Image(hImgCache, 0, 0, width, Height)
End

View file

@ -17,10 +17,10 @@
#MoveScaled(6,12,53,31)
AutoResize = True
{ ReportDrawingArea1 ReportDrawingArea
#MoveScaled(0,0,52,30)
#MoveScaled(2,0,52,30)
Width = "7mm"
Height = "6cm"
Border = ReportBorder["Top:2mm #000000;Bottom:2mm #000000;Left:2mm #000000;Right:2mm #000000;TopLeftCorner:16mm;TopRightCorner:16mm;BottomRightCorner:16mm;BottomLeftCorner:16mm"]
Border = ReportBorder["Top:2mm LinearGradient(0.84,0.67,0,0,[#000000,#FFFFFF],[0,1]);Bottom:2mm LinearGradient(0.84,0.67,0,0,[#000000,#FFFFFF],[0,1]);Left:2mm LinearGradient(0.84,0.67,0,0,[#000000,#FFFFFF],[0,1]);Right:2mm LinearGradient(0.84,0.67,0,0,[#000000,#FFFFFF],[0,1])"]
Cached = True
}
}

View file

@ -5,5 +5,12 @@ Public Width As String
Public Brush As New ReportBrush
Public Round1 As String
Public Round2 As String
Public _Width As Float
Public Sub _SetUnifiedValues()
Dim hSizeParse As New TSizeParse(Width)
_Width = hSizeParse.GetValue()
End

View file

@ -0,0 +1,13 @@
' Gambas class file
Public RelX As String = "2mm"
Public RelY As String = "2mm"
Public Spread As String
Public Inset As Boolean
Public Color As Integer
'Public Blur As String
Public _Relx As Integer
Public _RelY As Integer
Public _Spread As Integer
'Public _Blur As Integer