AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi In einem DBGrid andere Dinge anzeigen als drinstehen

In einem DBGrid andere Dinge anzeigen als drinstehen

Ein Thema von Der schöne Günther · begonnen am 3. Dez 2014 · letzter Beitrag vom 4. Dez 2014
Antwort Antwort
Seite 1 von 3  1 23   
Der schöne Günther

Registriert seit: 6. Mär 2013
6.093 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

In einem DBGrid andere Dinge anzeigen als drinstehen

  Alt 3. Dez 2014, 17:42
Delphi-Version: XE7
Ihr Profis habt das ja schon alle x mal gemacht : Ich lasse den Benutzer mit einem TDBGrid in einer Ergebnismenge wühlen. Ich möchte ihm allerdings in einer Spalte (Zahl) nicht das anzeigen was drinsteht, sondern den zehnfachen Wert.

Wo muss ich ansetzen? Ich kenne mich mit Datenbanken nicht aus, irgendwo habe ich den Terminus "Berechnete Felder" im Hinterkopf.

Ich finde auf dem TDBGrid nichts und nicht auf dem TDataSource nichts. Was übersehe ich?
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
640 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

AW: In einem DBGrid andere Dinge anzeigen als drinstehen

  Alt 3. Dez 2014, 17:50
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;
Gruss Otto
Wenn du mit Gott reden willst, dann bete.
Wenn du ihn treffen willst, schreib bei Tempo 220 eine SMS
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: In einem DBGrid andere Dinge anzeigen als drinstehen

  Alt 3. Dez 2014, 17:53
select wert*10 from irgendwo oder

Pseudocode:xx.Cells[x,y].Text=inttostr(myquery.field[z].asinteger*10; (das geht natürlich mit TDBGrid nicht)

aber ich befürchte Du meinst etwas anderes.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#4

AW: In einem DBGrid andere Dinge anzeigen als drinstehen

  Alt 3. Dez 2014, 17:57
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).
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.093 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: In einem DBGrid andere Dinge anzeigen als drinstehen

  Alt 3. Dez 2014, 18:11
aber ich befürchte Du meinst etwas anderes.
Richtig, ich will ja nur die Anzeige anpassen. Arbeiten möchte ich natürlich mit den "echten" Daten.

Bin zwar kein Profi...aber vielleicht reicht's trotzdem:
Danke für die Idee. Das wird sicher funktionieren, wäre aber mein letzter Ausweg. Es ist im Endeffekt genau was ich will, aber zwingt einem zum "Malen".

Berechnete Felder erstellen. [...]
Das wird es wohl werden. Was mich, so als Amateur, daran jetzt stört ist: Warum blähe ich die Ergebnismenge hier künstlich auf? Klar, das wird wahrscheinlich auf Client-Seite erst nachträglich drangedichtet werden (hoffe ich), aber mir ist das unsympathisch, dass da jetzt jeder drankommt.

Ich wollte eigentlich nur die Werte im DBGrid anpassen. Blöd dass der da nichts anbietet.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#6

AW: In einem DBGrid andere Dinge anzeigen als drinstehen

  Alt 3. Dez 2014, 18:16
(das geht natürlich mit TDBGrid nicht)
Dafür gibt es dort die Unterscheidung zwischen Value, EditValue und DisplayValue, wobei man den DisplayValue beliebig ändern kann.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.093 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: In einem DBGrid andere Dinge anzeigen als drinstehen

  Alt 3. Dez 2014, 18:28
Was? Erkläre dich!
DisplayValue hört sich gut an, aber was hat es mit einem TDBGrid zu tun?
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#8

AW: In einem DBGrid andere Dinge anzeigen als drinstehen

  Alt 3. Dez 2014, 18:30
Warum blähe ich die Ergebnismenge hier künstlich auf?
Tust Du ja nicht.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.093 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: In einem DBGrid andere Dinge anzeigen als drinstehen

  Alt 3. Dez 2014, 18:32
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.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#10

AW: In einem DBGrid andere Dinge anzeigen als drinstehen

  Alt 3. Dez 2014, 18:42
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz