![]() |
DBGrid Darstellungs-Text "umwandeln"
Hi!
Ich hab ein optisches Problem bei einem DBGrid. In meiner Datenbank wandle ich bestimmte Zeichen um (u.a. & -> #38; ). Wenn ich während der Laufzeit eine Übersicht lade, habe ich im Grid die DB-Strings zu stehen (z.B.: "#38; was machst du so? "). Zum Editieren einzelner Felder nutze ich Edits und Memos. Beim einladen der Strings in die Bearbeitungs-Elemente werden sie erst umgewandelt: "& was machst du so?" Ich hätte aber gern schon den "richtigen" String in der Grid-Vorschau. Jemand schon mal gemacht? Die Anbindung der MySQL-Datenbank nehme ich über eine ADOConnection vor. mfg |
AW: DBGrid Darstellungs-Text "umwandeln"
Wenn du die Daten mit einer Query ins Grid bringst, könntest du die Umwandlung schon im QSL-Statement vornehmen.
|
AW: DBGrid Darstellungs-Text "umwandeln"
Verwende die 'OnGetText/OnSetText' Eigenschaft des persistenten Feldes. Dort nimmst Du diese Form von Umwandlung vor.
OnGetText würde dann z.B. #38 in '&' umwandeln, OnSetText wandelt das dann zurück. |
AW: DBGrid Darstellungs-Text "umwandeln"
Die 'OnGetText/OnSetText'-Variante finde ich im Projektzusammenhang besser.
Ich hab ein wenig google für mich arbeiten lassen aber kein richtiges Beispiel finden können was mich weiterbringt (Übergabeparameter etc..). |
AW: DBGrid Darstellungs-Text "umwandeln"
Zitat:
(ungetestet)
Delphi-Quellcode:
procedure TForm1.ClientDataSet1TestGetText( Sender : TField; var Text : string; DisplayText : Boolean );
begin if not DisplayText then Text := StringReplace( Text, '#38', '&', [rfReplaceAll] ); end; procedure TForm1.ClientDataSet1TestSetText( Sender : TField; const Text : string ); begin Sender.Value := StringReplace( Text, '&', '#38', [rfReplaceAll] ); end; |
AW: DBGrid Darstellungs-Text "umwandeln"
Danke für die Infos!
Jetzt ist das Ganze doch ein wenig anders geworden. Ich habs ins DrawColumnCell gelegt, da ich dort schon ne Farbenänderung vorgenommen hab. Denkantöse um die richtigen Sachen zu finden haben dann zwar nochmal ein wenig gedauert aber hier die Lösung für das Prob:
Delphi-Quellcode:
Mit func_strVeraendernSpeichernLesen wandel ich die Sonderzecihen in die richtige Ausgabe.
procedure TF_Hotel_App_Inhalte.DBG_Content_EigenschaftDrawColumnCell(
Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); const i_memoLaenge = 40; var s_ausgabe : String; begin with (Sender as TDBGrid) do begin if (D_Datenmodul.qu_app_menue_inhalte_content_eigenschaft.RecNo mod 2) = 0 then Canvas.Brush.Color := clSkyBlue; if Column.Field.IsBlob then begin Canvas.FillRect(Rect); s_ausgabe := func_strVeraendernSpeichernLesen( copy(Column.Field.AsString, 1, i_memoLaenge) , false); Canvas.TextOut(Rect.Left+2, Rect.Top+2, s_ausgabe); end else begin DefaultDrawColumnCell(Rect, DataCol, Column, State); end; end; end; |
AW: DBGrid Darstellungs-Text "umwandeln"
Wenn es nur für diese eine Darstellung benötigt wird, dann ist das da auch richtig.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:32 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