AGB  ·  Datenschutz  ·  Impressum  







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

Problem mit TDBAdvGrid (TMS)

Ein Thema von EmWieMichael · begonnen am 13. Feb 2019 · letzter Beitrag vom 14. Feb 2019
 
EmWieMichael

Registriert seit: 28. Mär 2012
103 Beiträge
 
#1

Problem mit TDBAdvGrid (TMS)

  Alt 13. Feb 2019, 12:30
Moin!

Der Einsatz des TDBAdvGrid von TMS bereitet mir seit zwei Tagen Kopfzerbrechen. Vielleicht hat hier schon jemand nicht nur das gleiche Problem, sondern auch eine Lösung dafür gehabt.
Es geht um die 'manuelle' Darstellung einzelner Zellen. Im folgenden Beispiel soll in der Zelle des Tabellenfeldes 'PLZ' nicht nur die Plz, sondern auch der Ort angezeigt werden.

Unter Verwendung eines (Delphi-) TDBGrid funktioniert das einwandfrei, z. B. so:
Delphi-Quellcode:
procedure TForm1.GridDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer;
                                    Column: TColumn; State: TGridDrawState);
 var S:String; Adresse:TAdresse;
begin
  if (Column.FieldName = 'PLZ') then
   begin
     Grid.Canvas.FillRect(Rect);
     FieldsToRec(Query.Fields, Adresse, dbAdresse);
     S:=Adresse.Plz+' '+Adresse.Ort;
     Grid.Canvas.TextOut(Rect.Left+2,Rect.Top+2,S);
   end;
end;
Erläuterung: Die Routine FieldsToRec kopiert aus TField einen Datensatz in ein Record.

Mein Versuch mit dem TDBAdvGrid von TMS sieht fast identisch aus:
Delphi-Quellcode:
procedure TBrowseForm.GridDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
 var S:String; Adresse:TAdresse;
begin
  if (Grid.Columns[ACol].FieldName = 'PLZ') then
   begin
     Grid.Canvas.FillRect(Rect);
     FieldsToRec(Query.Fields, Adresse, dbAdresse);
     S:=Adresse.Plz+' '+Adresse.Ort;
     Grid.Canvas.TextOut(Rect.Left+2,Rect.Top+2,S);
   end;
end;
Leider kommt es hier zu einem merkwürdigen Effekt:
Im Grid erhalten alle Datensätze Plz und Ort des ersten Satzes. Das lässt sich auch anschließend gut nachvollziehen:
Stellt man den Auswahlcursor z. B. von der zweiten auf die fünfte Zeile, wird in der fünften Zeile die korrekte Plz/Ort-Kombi angezeigt, leider wird dann der gleiche String auch in der zweiten Zeile abgebildet; dabei wird OnDrawCell nur einmal abgefeuert.
Der Parameter 'State' ist übrigens stets leer.
  Mit Zitat antworten Zitat
 


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 21:05 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