Gambas France BETA


Pas de compte ? Incription

Totaux en ligne et colonne d'un TablView

À propos de ce code

C'est la suite du GridLoad

pTableView est le TableView de la form
pTotalRow si True fait le total des lignes
pTotalColumn si true fait le total des colonnes
Optional pTotalRowStart commence à la ligne ...
Optional pTotalColStart commence à la colonne ...

Petite explication sur la ligne :
If TabVu.Rows.Height <> 0 Then 'les lignes et colonnes à height ou width à 0 sont lles lignes et colnnes filtrées, les totaux ne doivent donc pas être fait

Je publierai le petit bout de code qui simule un filtre sur un TableView, celui-ci met à 0 rows.height ou columns.width si la colonne est filtré

A+

Code source

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
PUBLIC SUB GridCalcTot(pTableView AS TableView, pTotalRow AS BOOLEAN, pTotalColumn AS BOOLEAN, OPTIONAL pTotalRowStart AS INTEGER = 0, OPTIONAL pTotalColStart AS INTEGER = 0) AS BOOLEAN

DIM i, x, TotalCol AS INTEGER
DIM TotalColS AS STRING
DIM TabVu AS TableView
DIM RowCount, ColCount AS INTEGER

TabVu = pTableView
RowCount = TabVu.Rows.Count
ColCount = TabVu.Columns.Count - 1 '-1 a cause de la derniere colonne total, voir GridLoad

''totaux de bas de colonne à partir de la colonne totalcolstart
IF pTotalColumn THEN
Tabvu.Rows.Insert(RowCount)
Tabvu.Rows[RowCount].Title = "TOTAUX :"
FOR x = pTotalColStart TO ColCount - 1
TotalCol = 0
FOR i = 0 TO RowCount - 1
IF TabVu.Rows[i].Height <> 0 THEN 'les lignes et colonnes à height ou width à 0 sont lles lignes et colnnes filtrées, les totaux ne doivent donc pas être fait
IF TabVu[i, x].Text = "" THEN TotalColS = "0" ELSE TotalColS = Replace(TabVu[i, x].Text, ",", ".")
TotalCol = TotalCol + CFloat(TotalColS)
ENDIF
NEXT
TabVu[RowCount, x].Text = TotalCol
TabVu[RowCount, x].Background = Color.LightBackground
NEXT
ENDIF

'totaux de fin de ligne
IF pTotalRow THEN
FOR i = pTotalRowStart TO RowCount - 1
TotalCol = 0
FOR x = 10 TO ColCount - 1
IF TabVu[i, x].Text = "" THEN TotalColS = "0" ELSE TotalColS = Replace(TabVu[i, x].Text, ",", ".")
TotalCol = TotalCol + CFloat(TotalColS)
NEXT
TabVu[i, ColCount].Text = TotalCol
NEXT
TabVu.Columns[ColCount].Background = Color.LightBackground
ELSE
TabVu.Columns[ColCount].Width = 0
ENDIF
RETURN TRUE

CATCH
'Message.Error(Error.Text & " " & Error.Where)
RETURN FALSE

END

Commentaires