Projekt

Allgemein

Profil

410 Sonderspalten in Grids- F2-Fenstern » Historie » Version 15

[E] Frank S, 22.02.2023 11:45

1 9 [E] Frank S
h1. Sonderspalten in Grids- / F2-Fenstern
2 1 [X] Lutz G
3
h1. CimColor per SQL
4
5 7 [E] Frank S
Auflistung weiterer Steuerfelder : [[prodat-v-x:Sonderfelder im SQL]]
6
bekannte CimFarb-Konstanten : [[prodat-v-x:CimColor]] (z.B. CimRed)
7 1 [X] Lutz G
Entwicklungs-Tickets : {{collapse(Aufklappen)
8
#6977 Weitere Farben zur Hervorhebung: CimColor in Grids
9
#5495 CIM-Farben in Assistenten und dynam. Oberflächen verfügbar machen
10
#6109 Joined Columns in CimColumnHandler integrieren
11
}} 
12
13
Farben per SQL in Prodat werden per Spaltenname und BOOL an bestimmten Oberflächen erzeugt.
14
Mehrere gleichartige Spaltenbezeichnungen werden interpretiert und bei True dargestellt.
15
-Gelb gewinnt vor Grün, Rot gewinnt vor Gelb und Grün.- Feldreihenfolge: der Erste mit True gewinnt
16
17
Verfügbare Farben:
18
* CimRed CimYellow CimGreen CimBlue CimBrown CimGray
19
20
Verfügbare Oberflächen:
21 4 [E] Frank S
* F2 und F4
22 1 [X] Lutz G
* tabellarische Oberflächen (EditTable)
23
* Assistenten (Stand 06.2016: bei Einigen schon vorhanden, aber soll demnächst bei Allen dran > http://redmine.prodat-sql.de/issues/5495)
24
* SQL - abfragen
25 2 [X] Daniel S
* und überall, wo der *TCimColumnHandler* angebunden ist
26 3 [E] Frank S
** TCimColumnHandler in Oberfläche, Propertie zuweisen, EnableColor
27 10 [X] Jens M
** *TCimColumnHandler.InitColumns* nach dem Öffnen des DataSet aufrufen
28 3 [E] Frank S
** Grid.OnCustomDrawCell mit "CimColumnHandlerFSL.RowStyle(ACanvas, AViewInfo);" "Bestücken"
29
30
In weiter Oberflächen einbauen:
31
* [[prodat-v-x:CimColumnHandler]] auf Form legen
32
** GridView und Query angeben
33
** in Options das EnableColor aktivieren
34
* Events anhängen
35
** nach Query.Load > @CimColumnHandler1.InitColumns;@
36
** in GridView.OnCustomDrawCell > @CimColumnHandler1.RowStyle(ACanvas, AViewInfo);@
37 11 [X] Jens M
* ggf. die Spalte (z.B.: @abc_cimred@) mit *ins Grid* aufnehmen (Visibles false)
38 1 [X] Lutz G
39 12 [X] Daniel S
Beispiel: ganze Zeile wird gefärbt
40 1 [X] Lutz G
<pre><code class="sql">
41
SELECT 1, true AS CimGreen, false AS CimYellow, false AS CimRed  -- Grün
42
UNION
43
SELECT 2, false, true, false  -- Gelb
44
UNION
45
SELECT 3, false, false, true  -- Rot
46
UNION
47
SELECT 4, true, true, false  -- Grün (Gelb überstimmt)
48
UNION
49
SELECT 5, true, true, true  -- Grün (Gelb und Rot überstimmt)
50
51
ORDER BY 1
52
</code></pre>
53 12 [X] Daniel S
54
55
Beispiel: ganze einzelne Spalte wird gefärbt
56
<pre><code class="sql">
57
SELECT ld_auftg, true AS ld_auftg_CimGreen, ld_pos FROM auftg LIMIT 1
58
</code></pre>
59
60 1 [X] Lutz G
61
62
63
h1. Ausführliche Beschreibung
64
65
h2. mögliche Felder
66
67
<pre>
68
CimRed CimYellow CimGreen CimBlue CimBrown CimGray
69
CimColor
70 6 [E] Frank S
CimBold CimItalic CimUnterline CimStrikeOut
71 13 [E] Frank S
CimFontRed CimFontGreen CimFontGray
72 1 [X] Lutz G
CimFormat
73
</pre>
74
75
* Gültigkeit: ganzzeilig
76
* Gültigkeit: Spalte oder Zelle mit Feldname als Präfix "field_format" (z.B. ak_nr_cimred)
77
* Auswertung: das erste Vorkommen (ungleich NULL, FALSE und '') hat immer Vorrang
78
** es gilt die Erstellungsreihenfolge der Columns -> stimmt aber meistens mit der Reihenfolge der SQL-Felder überein (Daten aus Cache des Grids)
79
* doppelt gejoint möglich (cimred, cimred_1, cimred_2 bis cimred_3)
80
81
82 14 [E] Frank S
83
{{collapse(Aufklappen)
84 1 [X] Lutz G
85
h2. Parameter für CimFormat (das Präfix "Cim" kann entfallen)
86
87
<pre>
88 15 [E] Frank S
CimRed CimDarkRed CimBrown CimOrange CimDarkOrange CimYellow CimGreen CimBlue CimLightBlue CimDarkBlue CimGray CimInfoBk CimInfoBkGreen CimStyleRed
89 1 [X] Lutz G
clBlack clMaroon clGreen clOlive clNavy clPurple clTeal clGray clSilver clRed clLime clYellow clBlue clFuchsia clAqua clLtGray clDkGray clWhite clMoneyGreen clSkyBlue clCream clMedGray clInfoBk clHotLight
90
CimColor
91 6 [E] Frank S
CimBold CimItalic CimUnterline CimStrikeOut
92 13 [E] Frank S
CimFontRed CimFontGreen CimFontGray
93 1 [X] Lutz G
CimFontName/Font
94
CimFontSize/Size
95
</pre>
96
97
* Mehrere Angaben per *Komma* getrennt.
98
* @'cimred=True'@, @'cimred'@ (nur für Booleanwerte und gilt als True) oder @'cimred=:ag_done'@ (Referenz auf Booleanspalte)
99
* ebefalls ganzzeilig und zellenweise möglich ("field_format -> ak_nr_cimred=True)
100
* ungültige/unbekannte Formatnamen werden ignoriert (nichts ins Log geschrieben, da je ein Aufruf pro gezeichneter Zelle)
101
102
103
104
h2. Werte für CimColor
105
106 15 [E] Frank S
* @CimRed CimDarkRed CimBrown CimOrange CimDarkOrange CimYellow CimGreen CimBlue CimLightBlue CimDarkBlue CimGray CimInfoBk CimInfoBkGreen CimStyleRed@
107 1 [X] Lutz G
* @clBlack clGreen clGray clSilver clRed@ uvm. (siehe http://docwiki.embarcadero.com/Libraries/XE7/de/Vcl.Graphics.TColor)
108
* @'#RRGGBB'@ oder @'#RGB'@ (HTML/CSS, siehe Tabelle mit RGB-Farbwerten https://meta.wikimedia.org/wiki/Wiki_color_formatting_help http://html-color-codes.info/webfarben_hexcodes/)
109
* @'$BBGGRR'@, @'Dezimal'@ oder @Dezimal@ (TColor/Integer/Float)
110
* @x'BBGGRR'::INT@ = DB-seitig HEX zu INT konvertiert
111
112
113
114
h2. Datentypen der DB-Felder
115
116
* CimColor/Color = Integer oder Text
117
* CimFormat = Text
118
* CimFontName = Text (z.B. Arial oder Microsoft Sans Serif -> siehe charmap.exe)
119
* CimFontSize = Integer (Default = 9)
120
* alles Andere = Boolean oder ':field' (verlinkung mit anderem Booleanfeld)
121
122
123
124
h2. Beispiele
125
126
* Reihenfolge
127
128
<pre><code class="sql">
129
SELECT 'rot ' AS a, true AS cimred, true AS cimgreen;
130
131
SELECT 'grün' AS a, true AS cimgreen, true AS cimred;
132
</code></pre>
133
134
* Zeile oder Zelle/Spalte
135
136
<pre><code class="sql">
137
SELECT 1 AS a, 2 AS b, 3 AS c, true AS cimred, false AS b_cimred  -- ganze Zeile
138
UNION
139
SELECT 1 AS a, 2 AS b, 3 AS c, false AS cimred, true AS b_cimred  -- nur B
140
</code></pre>
141
142
* Konkatenieren für CimFormat
143
144
<pre><code class="sql">
145
SELECT 1 AS a, concat_ws(',',
146
  'cimgreen',
147
  IfThen(true, 'bold', null),
148
  IfThen(false, 'fontsize=4', null)
149
) AS CimFormat --'cimgreen,bold' AS CimFormat
150
</code></pre>
151
152
* Alles das Gleiche (mehrere Varianten zur Übergabe von CimRed)
153
154
<pre><code class="sql">
155
SELECT 1 AS aaa, true AS xxx,
156
  true AS cimred, --xxx AS cimred,
157
  ':xxx' AS cimred,
158
  concat_ws(',',
159
    'red',
160
    'cimred',
161
    'cimred=True',
162
    'cimred=:xxx',
163
    IfThen(true, 'cimred', null) --IfThen(xxx, 'cimred', null)
164
  ) AS cimformat
165
</code></pre>
166
167
* Definition der Farbwerte
168
169
<pre><code class="sql">
170
SELECT
171
  'A' AS a, '$0000FF' AS a_cimcolor, 
172
  'B' AS b, x'0000FF'::INT AS b_cimcolor,  -- 255 AS b_cimcolor
173
  'C' AS c, '#FF0000' AS c_cimcolor,
174
  'D' AS d, 'clRed' AS d_cimcolor,
175
  'E' AS e, 'CimRed' AS e_cimcolor,
176
  'Z' AS z, NULL::INT AS z_cimcolor
177
</code></pre>
178
179
* Megademo
180
!CCHMegademo.png!
181
182
<pre><code class="sql">
183
SELECT
184
  a, b, c, a=1 AS CimRed, 'Size=5' AS a_CimFormat,
185
  b=5 AS b_CimBlue, IfThen(b=8, x'FFAAFF'::INT, null)::INT AS b_CimColor,  --IfThen macht aus dem INT ein DECIMAL
186
  'cimgreen,bold' AS c_CimFormat
187
FROM (
188
  SELECT 1 AS a, 2 AS b, 3 AS c
189
  UNION
190
  SELECT 4, 5, 6
191
  UNION
192
  SELECT 7, 8, 9
193
) AS x
194
ORDER BY a
195
</code></pre>
196
197
* Megademo (vollständig)
198
199
<pre><code class="sql">
200
SELECT
201
  a, b, c,
202
203
  a=1 AS CimRed, a=1 AS CimYellow, false AS CimGreen, false AS CimBlue, false AS CimGray, null::INT AS CimColor,
204
  false AS CimBold, false AS CimItalic, false AS CimFontRed, false AS CimFontGreen,
205
  null::VARCHAR AS CimFormat,
206
207
  false AS a_CimRed, false AS a_CimYellow, false AS a_CimGreen, false AS a_CimBlue, false AS a_CimGray, null::INT AS a_CimColor,
208
  false AS a_CimBold, false AS a_CimItalic, false AS a_CimFontRed, false AS a_CimFontGreen,
209
  'Size=5' AS a_CimFormat,
210
211
  false AS b_CimRed, false AS b_CimYellow, false AS b_CimGreen, b=5 AS b_CimBlue, b=5 AS b_CimGray, IfThen(b=8, x'FFAAFF'::INT, null) AS b_CimColor,
212
  false AS b_CimBold, false AS b_CimItalic, false AS b_CimFontRed, false AS b_CimFontGreen,
213
  null AS b_CimFormat,
214
215
  false AS c_CimRed, false AS c_CimYellow, false AS c_CimGreen, false AS c_CimBlue, false AS c_CimGray, null::INT AS c_CimColor,
216
  false AS c_CimBold, false AS c_CimItalic, false AS c_CimFontRed, false AS c_CimFontGreen,
217
  concat_ws(',', 'cimgreen', IfThen(true, 'bold', null)) AS c_CimFormat --'cimgreen,bold' AS c_CimFormat
218
FROM (
219
  SELECT 1 AS a, 2 AS b, 3 AS c
220
  UNION
221
  SELECT 4, 5, 6
222
  UNION
223
  SELECT 7, 8, 9
224
) AS x
225
ORDER BY a
226
</code></pre>
227
228
}}
229
230
---