AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Daten in einem DBGrid anders anzeigen (nicht TField.OnGetText)

Daten in einem DBGrid anders anzeigen (nicht TField.OnGetText)

Ein Thema von Der schöne Günther · begonnen am 30. Aug 2016 · letzter Beitrag vom 30. Aug 2016
Antwort Antwort
Der schöne Günther

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

Daten in einem DBGrid anders anzeigen (nicht TField.OnGetText)

  Alt 30. Aug 2016, 14:28
Datenbank: Datenbank • Version: Version • Zugriff über: FireDAC
Ich habe ein TDataSet . Sagen wir, es hat nur eine Text-Spalte.
Und jetzt möchte ich im linken TDBGrid den Text anzeigen während der rechte TDBGrid den Text rückwärts anzeigen soll.

Arg konstruiert, aber ich denke das reicht.

Wie tue ich das? Das OnGetText -Event des Feldes der Tabelle setzen macht ja keinen Sinn, das beinflusst ja beide DBGrids.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.793 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Daten in einem DBGrid anders anzeigen (nicht TField.OnGetText)

  Alt 30. Aug 2016, 14:30
Z.B. als berechnetes Feld
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von TRomano
TRomano

Registriert seit: 24. Nov 2004
Ort: Bochum
187 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Daten in einem DBGrid anders anzeigen (nicht TField.OnGetText)

  Alt 30. Aug 2016, 14:47
Und das berechnete Feld "machst" Du entweder im SQL-Statement oder in den Methoden des TField ...
Thomas Forget
  Mit Zitat antworten Zitat
Der schöne Günther

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

AW: Daten in einem DBGrid anders anzeigen (nicht TField.OnGetText)

  Alt 30. Aug 2016, 14:54
Gibt es keine Möglichkeit die ohne die Datenkomponente (z.B. Query) jedes mal anzufassen wenn man an der ANZEIGE etwas drehen will. Ich kann doch nicht z.B. ständig vier Felder zurückgeben, wenn ich einmal in Zentimetern, einmal in Zoll. Einmal mit Nachkommastellen, einmal ohne...
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.793 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Daten in einem DBGrid anders anzeigen (nicht TField.OnGetText)

  Alt 30. Aug 2016, 15:00
Du kannst das auch "in" der Datenbank machen oder wenn es um die Anzeige geht, bei der Anzeige.
Markus Kinzler
  Mit Zitat antworten Zitat
Der schöne Günther

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

AW: Daten in einem DBGrid anders anzeigen (nicht TField.OnGetText)

  Alt 30. Aug 2016, 15:16
Ich kenne mich mit Datenbanken nicht wirklich aus, deshalb so dumme Fragen.

Was ist denn die "Anzeige"? Ich dachte das sei mein TDBGrid .
Bei diesem komischen TDataSource -Proxy habe ich auch nichts gefunden.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.793 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Daten in einem DBGrid anders anzeigen (nicht TField.OnGetText)

  Alt 30. Aug 2016, 15:22
Man kann das Zeichnen der Spalten im Grid auch selber durchführen (Ownerdraw) bzw. wenn es nur um die Formatierung der Werte geht, dass im TField erledigen.
Oder mann macht das bei der Abfrage

SQL-Code:
select
  <Feld>, ReverseString(<Feld>) as MirrorFeld, ...
Markus Kinzler
  Mit Zitat antworten Zitat
Der schöne Günther

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

AW: Daten in einem DBGrid anders anzeigen (nicht TField.OnGetText)

  Alt 30. Aug 2016, 17:51
Nein, wenn man das im TField (z.B. OnGetText ) macht wirkt sich dass ja auch auf alle anderen Anzeigen (z.B. andere TDBGrids) aus.

Das mit dem OwnerDraw scheint genau das zu sein wonach ich gesucht habe. Zwar unnötig umständlich, aber damit komme ich ans Ziel. Vielen Dank
  Mit Zitat antworten Zitat
mm1256

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

AW: Daten in einem DBGrid anders anzeigen (nicht TField.OnGetText)

  Alt 30. Aug 2016, 18:24
Ich benutze immer den Canvas des DBGrid um abweichende Anzeigen zu realisieren. "OnDrawColumnCell" ist dein Freund:

Delphi-Quellcode:
procedure TMyGrid.GridDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
  if (Column.FieldName = 'MeinSpeziellesTextFeld') then
  with (Sender as TDBGrid).Canvas do begin
    . . .
  end;
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
Der schöne Günther

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

AW: Daten in einem DBGrid anders anzeigen (nicht TField.OnGetText)

  Alt 30. Aug 2016, 18:33
Ganz genauso (nur ohne das with ) habe ich es auch gemacht, wieder etwas gelernt


Delphi-Quellcode:
   TDBGridHelper = class helper for TDBGrid
      public procedure writeText(const inRect: TRect; const text: String);
   end;

procedure TForm1.DBGrid1DrawColumnCell(
   Sender: TObject;
   const Rect: TRect;
   DataCol: Integer;
   Column: TColumn;
   State: TGridDrawState
);
var
   displayText: String;
begin
   if (Column.FieldName='someFancyField') and Assigned(Column.Field) then begin
      displayText := '***' + Column.Field.DisplayText + '***';
      (Sender as TDBGrid).writeText(Rect, displayText);
   end else
      (Sender as TDBGrid).DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

procedure TDBGridHelper.writeText(
   const inRect: TRect;
   const text: String
);
const
   someMagicOffsetPx = 2; // Siehe TDBGrid::DefaultDrawColumnCell
begin
   Canvas.FillRect(inRect);
   Canvas.TextRect(
      inRect,
      inRect.Left + someMagicOffsetPx,
      inRect.Top + someMagicOffsetPx,
      text
   );
end;
  Mit Zitat antworten Zitat
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 +2. Es ist jetzt 15:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf