[Erledigt] Einzelne Zelle in TDBGrid ausblenden

Rund um die LCL und andere Komponenten

[Erledigt] Einzelne Zelle in TDBGrid ausblenden

Beitragvon MacWomble » 25. Mär 2018, 09:26 [Erledigt] Einzelne Zelle in TDBGrid ausblenden

Ich brauche eure Hilfe, da ich mal wieder auf dem Schlauch stehe:

Ich habe ein DBGrid in welchem bei bestimmten Zeilen einzelne Zellen nicht angezeigt werden sollen.
Wo und wie kann ich diese abschalten?

Ich denke DrawColumnCell ist der richtige Ort, aber wo kann ich visible schalten?

Oder geht das eventuell gar nicht so einfach?
Zuletzt geändert von MacWomble am 25. Mär 2018, 16:45, insgesamt 1-mal geändert.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
 
Beiträge: 566
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19 Cinnamon / CodeTyphon Generation V Plan 6.60 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon MacWomble » 25. Mär 2018, 15:33 Re: Einzelne Zelle in TDBGrid ausblenden

Da es vermutlich keine Lösung hierfür gibt, habe ich mein SQL mit IFs bestückt und gebe nun wo gewünscht "" aus der DB zurück.
Da es aber um formatierte Felder geht, bekomme ich nun 0,00 € angezeigt - anstelle eines Leerstrings. Wenn ich das Displayformat beim Feld leer lasse, erhalte ich entsprechend 0 anstelle von "".

Was ich aber benötige ist - je nach Datensatz (Zuordnung erfolgt über das Feld PosArt, welches 1,2 oder 3 sein kann)- eine der folgenden drei Varianten der Anzeige im DBGrid:
1. Feld ist leer
2. Feld hat Wert: 123,23 €
3. Feld hat Wert (123,23 €)

Hat hierzu eventuell jemand einen Vorschlag?
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
 
Beiträge: 566
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19 Cinnamon / CodeTyphon Generation V Plan 6.60 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon wp_xyz » 25. Mär 2018, 16:26 Re: Einzelne Zelle in TDBGrid ausblenden

Unabhängig von deinem Feld "PosArt" sollte hier eigentlich auch der dreiteilige Formatierungsstring funktionieren, mit jeweils einer Formatierung für positive, einer für negative Zahlen und einer für Null. Die Abschnitte werden durch ';' getrennt:
Code: Alles auswählen
  Dataset.FieldByName('x').DisplayFormat := '0.00" €";(0.00" €");""';
wp_xyz
 
Beiträge: 2616
Registriert: 8. Apr 2011, 08:01

Beitragvon MacWomble » 25. Mär 2018, 16:44 Re: Einzelne Zelle in TDBGrid ausblenden

Danke für den Tipp. Ich werde das noch versuchen.

Im Moment habe ich es über die SQL-Abfrage hin bekommen, allerdings nicht sehr übersichtlich:

Die Leerzeilen habe ich hier nur eingefügt, weil es dann besser zu lesen ist:
Code: Alles auswählen
SELECT idauftragsposition, fk_auftrag, fk_posart, artikelgruppe, apo_position, apo_nummer, apo_name, apo_beschreibung, 
IF(fk_posart=2,"",apo_mengeneinheit) AS apo_mengeneinheit,
IF(fk_posart=2,"",apo_menge) AS apo_menge,
IF(fk_posart=2,"",apo_leistungsdatum) AS apo_leistungsdatum,
apo_mitarbeiter,
IF(fk_posart=2,"",concat(format(steuersatz,2,"DE_de"),IF(fk_posart<>2,"%",""))) AS steuersatz,
fk_color, colorn, colorh, colornfont, colorhfont,
 
IF(fk_posart=2,"",concat(IF(fk_posart=3,"(",""),format(round(apo_menge *(apo_lohn + apo_service +  apo_material + apo_geraet + apo_fremdleistung),2),2,"DE_de"),IF(fk_posart=1,"€",""),IF(fk_posart=3,"€)",""))) AS SNetto,
 
IF(fk_posart=2,"",concat(IF(fk_posart=3,"(",""),format(round(apo_menge *(apo_lohn + apo_service + apo_material + apo_geraet + apo_fremdleistung) * (Steuersatz/100),2),2,"DE_de"),IF(fk_posart=1,"€",""),IF(fk_posart=3,"€)","")))  AS SSteuer,
 
IF(fk_posart=2,"",concat(IF(fk_posart=3,"(",""),format(round(apo_menge *(apo_lohn +apo_service +  apo_material + apo_geraet + apo_fremdleistung) * (1+(Steuersatz/100)),2),2,"DE_de"),IF(fk_posart=1,"€",""),IF(fk_posart=3,"€)",""))) AS SBrutto,
 
IF(fk_posart=2,"",concat(IF(fk_posart=3,"(",""),format(round(apo_lohn + apo_service +  apo_material +apo_geraet + apo_fremdleistung,2),2,"DE_de"),IF(fk_posart=1,"€",""),IF(fk_posart=3,"€)",""))) AS EPNetto 
 
FROM AuftragsPositionen LEFT JOIN Steuersaetze ON  fk_steuersatz = idsteuersatz 
LEFT JOIN ArtikelGruppen ON fk_artikelgruppe=idartikelgruppe LEFT JOIN Colors ON idcolor = fk_color
 
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
 
Beiträge: 566
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19 Cinnamon / CodeTyphon Generation V Plan 6.60 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

• Themenende •

Zurück zu Komponenten und Packages



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

porpoises-institution
accuracy-worried