![]() |
Delphi-Version: XE7
In einem DBGrid andere Dinge anzeigen als drinstehen
Ihr Profis habt das ja schon alle x mal gemacht 8-): Ich lasse den Benutzer mit einem
Delphi-Quellcode:
in einer Ergebnismenge wühlen. Ich möchte ihm allerdings in einer Spalte (Zahl) nicht das anzeigen was drinsteht, sondern den zehnfachen Wert.
TDBGrid
Wo muss ich ansetzen? Ich kenne mich mit Datenbanken nicht aus, irgendwo habe ich den Terminus "Berechnete Felder" im Hinterkopf. Ich finde auf dem
Delphi-Quellcode:
nichts und nicht auf dem
TDBGrid
Delphi-Quellcode:
nichts. Was übersehe ich?
TDataSource
|
AW: In einem DBGrid andere Dinge anzeigen als drinstehen
Bin zwar kein Profi...aber vielleicht reicht's trotzdem:
Delphi-Quellcode:
procedure TForm1.DBGridDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin with (Sender as TDBGrid).Canvas do begin Column.Field.AsFloat... end; |
AW: In einem DBGrid andere Dinge anzeigen als drinstehen
Delphi-Quellcode:
oder
select wert*10 from irgendwo
Pseudocode:
Delphi-Quellcode:
(das geht natürlich mit TDBGrid nicht)
xx.Cells[x,y].Text=inttostr(myquery.field[z].asinteger*10;
aber ich befürchte Du meinst etwas anderes. Gruß K-H |
AW: In einem DBGrid andere Dinge anzeigen als drinstehen
Du kannst:
1. Berechnete Felder erstellen. Dazu fügst Du in deinem TDatset-Derivar ein neues Feld ein, setzt den Modus auf 'calculated' und setzt das Feld im OnCalculate(Fields?)-Ereignis des TDataset à la 'myCalcField.AsInteger := random(20)'; 2. Du erstellst Eventhandler für OnGetText/OnSetText für das Feld (blöde Idee) 3. Du überschreibst, wie mein Vorredner geschrieben hat, das onDraw-Event des Grids (auch nicht soooo toll, finde ich) Fang mal mit calculated fields an. Ist praktisch. OnGetText/OnSetText verwendet man zum 'übersetzen' von Feldern (eher Transliteration). |
AW: In einem DBGrid andere Dinge anzeigen als drinstehen
Zitat:
Zitat:
Zitat:
Ich wollte eigentlich nur die Werte im DBGrid anpassen. Blöd dass der da nichts anbietet. :x |
AW: In einem DBGrid andere Dinge anzeigen als drinstehen
Zitat:
|
AW: In einem DBGrid andere Dinge anzeigen als drinstehen
Was? Erkläre dich!
DisplayValue hört sich gut an, aber was hat es mit einem TDBGrid zu tun? |
AW: In einem DBGrid andere Dinge anzeigen als drinstehen
Zitat:
|
AW: In einem DBGrid andere Dinge anzeigen als drinstehen
Ich formuliere es anders herum: Ich fummele am TDataSet herum. Ich hätte erwartet, direkt den TDBGrid oder wenigstens das TDataSource anfassen zu können.
Wenn ich jetzt irgendeine Logik habe, die das TDataSet auswertet kann sie auch an die berechneten Felder dran die nur für die Anzeige verwendet werden. Finde ich, spontan, doof. |
AW: In einem DBGrid andere Dinge anzeigen als drinstehen
Ich würde das wirklich im TDataset machen. Die TDataSource ist ja nur ein Verteiler für Dinge, die mit den Daten passieren (events und so). Das Grid wäre wäre noch eine Möglichkeit, aber das TDBGrid bietet hier keine komfortable Möglichkeit.
Auf der Ebene, auf der Du dich bewegst (RAD mit datensensitiven Elementen), würde ich auch die 'rapid' Lösung nehmen, also die, die am schnellsten und direktesten mit dem geringsten Aufwand zu Ziel führt. Willst Du dagegen eine nachhaltige, erweiterbare, skalierbare und schießmichtot Lösung, dann könntest Du dir natürlich ein Viewmodel bauen, aber, WTF. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz