AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DBGrid Darstellungs-Text "umwandeln"

Ein Thema von apm · begonnen am 13. Mär 2013 · letzter Beitrag vom 15. Mär 2013
Antwort Antwort
apm

Registriert seit: 22. Nov 2010
28 Beiträge
 
#1

DBGrid Darstellungs-Text "umwandeln"

  Alt 13. Mär 2013, 11:03
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
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#2

AW: DBGrid Darstellungs-Text "umwandeln"

  Alt 13. Mär 2013, 11:40
Wenn du die Daten mit einer Query ins Grid bringst, könntest du die Umwandlung schon im QSL-Statement vornehmen.
Ralph
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#3

AW: DBGrid Darstellungs-Text "umwandeln"

  Alt 13. Mär 2013, 11:43
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.
  Mit Zitat antworten Zitat
apm

Registriert seit: 22. Nov 2010
28 Beiträge
 
#4

AW: DBGrid Darstellungs-Text "umwandeln"

  Alt 13. Mär 2013, 13:35
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..).
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: DBGrid Darstellungs-Text "umwandeln"

  Alt 13. Mär 2013, 15:04
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..).
Die Übergabeparameter sind doch sehr übersichtlich
(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;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
apm

Registriert seit: 22. Nov 2010
28 Beiträge
 
#6

AW: DBGrid Darstellungs-Text "umwandeln"

  Alt 15. Mär 2013, 11:06
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:
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;
Mit func_strVeraendernSpeichernLesen wandel ich die Sonderzecihen in die richtige Ausgabe.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: DBGrid Darstellungs-Text "umwandeln"

  Alt 15. Mär 2013, 11:21
Wenn es nur für diese eine Darstellung benötigt wird, dann ist das da auch richtig.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort


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 14:54 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