AGB  ·  Datenschutz  ·  Impressum  







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

TDBGrid und horizontales Scrollen

Ein Thema von Geronimo · begonnen am 20. Feb 2009 · letzter Beitrag vom 26. Feb 2009
Antwort Antwort
Geronimo

Registriert seit: 19. Dez 2006
Ort: Hamburg
38 Beiträge
 
#1

TDBGrid und horizontales Scrollen

  Alt 20. Feb 2009, 11:48
Hallo alle zusammen!

Ich habe mal wieder ein Problem.

Ich möchte das Aussehen der Spaltenüberschriften ändern. Dafür habe ich entsprechenden Code in die DrawColumnCell-Methode geschrieben. Das funktioniert auch so weit. Mein Problem ist nun das horizontale Scrollen des DBGrids. Dabei wird offensichtlich nur die DrawColumnCell-Methode für die neu sichtbare Spalte aufgerufen (Anders als beim Ändern der Größe einer Spalte. Dort wird immer das gesamte Grid neugezeichnet.) In den anderen schon zuvor sichtbaren Spalten wird die Spaltenüberschrift als Default geschrieben, jedoch ohne meine Änderungen.
Zur Lösung des Problems habe ich jetzt folgende Ideen:

1. in der DrawColumnCell immer die gesamte Kopfzeile neu zeichnen. Nachteil: Man muss sich mühsam die Koordinaten für den Zeichenbereich selbst ermitteln und zeichnet alles neu, auch wenn das nicht erforderlich ist.

2. Auf das Scrollen des DBGrids reagieren. Hierfür wollte ich auf WM_HSCROLL im Application.OnMessage
reagieren. Geht aber irgendwie nicht. Bei anderen Messages etwa WM_MouseScroll funktioniert das aber.
Hat jemand eine Idee, warum das nicht geht?

Was sind Eure Empfehlungen, um das Problem mit dem Scrollen zu lösen? Erste oder zweite Variante oder noch was ganz anderes?

Danke schon mal im Voraus.

Gruss

Geronimo
Die Welt ist rechteckig, linear und Gauss-verteilt!
  Mit Zitat antworten Zitat
Geronimo

Registriert seit: 19. Dez 2006
Ort: Hamburg
38 Beiträge
 
#2

Re: TDBGrid und horizontales Scrollen

  Alt 20. Feb 2009, 17:29
...pusch...
Ich mach's ungern, aber hat keiner einer Idee.
Ist die Frage zu schwer oder zu einfach.



Gruss

Geronimo
Die Welt ist rechteckig, linear und Gauss-verteilt!
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#3

Re: TDBGrid und horizontales Scrollen

  Alt 20. Feb 2009, 17:37
Hallo

Überschreibe die WindowProc des TDBGrids und fange dort die Nachricht WM_HSCROLL ab.

Sieht dann etwas so aus:

Delphi-Quellcode:
private
  OldDBGridWndProc: TWndMethod;
  procedure DBGridWindowProc(var Message: TMessage);

procedure TForm1.FormCreate(Sender: TObject);
begin
  OldDBGridWndProc := DBGrid1.WindowProc;
  DBGrid1.WindowProc := DBGridWindowProc;
end;

procedure TForm1.DBGridWindowProc(var Message: TMessage);
begin
  OldDBGridWndProc(Message);
  if Message.Msg = WM_HSCROLL then
   ...
end;
Thomas
  Mit Zitat antworten Zitat
Geronimo

Registriert seit: 19. Dez 2006
Ort: Hamburg
38 Beiträge
 
#4

Re: TDBGrid und horizontales Scrollen

  Alt 23. Feb 2009, 11:12
Hallo toms,

vielen Dank für die Antwort. Werde ich ausprobieren und
Rückmeldung geben.

Gruss
Geronimo
Die Welt ist rechteckig, linear und Gauss-verteilt!
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#5

Re: TDBGrid und horizontales Scrollen

  Alt 26. Feb 2009, 20:56
Hallo, konntest du es schon ausprobieren?
Thomas
  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 19:24 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