![]() |
Datenbank: Datenbank • Version: Version • Zugriff über: FireDAC
Daten in einem DBGrid anders anzeigen (nicht TField.OnGetText)
Ich habe ein
Delphi-Quellcode:
. Sagen wir, es hat nur eine Text-Spalte.
TDataSet
Und jetzt möchte ich im linken
Delphi-Quellcode:
den Text anzeigen während der rechte
TDBGrid
Delphi-Quellcode:
den Text rückwärts anzeigen soll.
TDBGrid
Arg konstruiert, aber ich denke das reicht. Wie tue ich das? Das
Delphi-Quellcode:
-Event des Feldes der Tabelle setzen macht ja keinen Sinn, das beinflusst ja beide DBGrids.
OnGetText
|
AW: Daten in einem DBGrid anders anzeigen (nicht TField.OnGetText)
Z.B. als berechnetes Feld
|
AW: Daten in einem DBGrid anders anzeigen (nicht TField.OnGetText)
Und das berechnete Feld "machst" Du entweder im SQL-Statement oder in den Methoden des TField ...
|
AW: Daten in einem DBGrid anders anzeigen (nicht TField.OnGetText)
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...
|
AW: Daten in einem DBGrid anders anzeigen (nicht TField.OnGetText)
Du kannst das auch "in" der Datenbank machen oder wenn es um die Anzeige geht, bei der Anzeige.
|
AW: Daten in einem DBGrid anders anzeigen (nicht TField.OnGetText)
Ich kenne mich mit Datenbanken nicht wirklich aus, deshalb so dumme Fragen.
Was ist denn die "Anzeige"? Ich dachte das sei mein
Delphi-Quellcode:
.
TDBGrid
Bei diesem komischen
Delphi-Quellcode:
-Proxy habe ich auch nichts gefunden.
TDataSource
|
AW: Daten in einem DBGrid anders anzeigen (nicht TField.OnGetText)
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, ... |
AW: Daten in einem DBGrid anders anzeigen (nicht TField.OnGetText)
Nein, wenn man das im
Delphi-Quellcode:
(z.B.
TField
Delphi-Quellcode:
) macht wirkt sich dass ja auch auf alle anderen Anzeigen (z.B. andere TDBGrids) aus.
OnGetText
Das mit dem
Delphi-Quellcode:
scheint genau das zu sein wonach ich gesucht habe. Zwar unnötig umständlich, aber damit komme ich ans Ziel. Vielen Dank :thumb:
OwnerDraw
|
AW: Daten in einem DBGrid anders anzeigen (nicht TField.OnGetText)
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; |
AW: Daten in einem DBGrid anders anzeigen (nicht TField.OnGetText)
Ganz genauso (nur ohne das
Delphi-Quellcode:
) habe ich es auch gemacht, wieder etwas gelernt :)
with
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:51 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