![]() |
TJvDBGrid - Text soll Spaltenbreite ausfüllen
In meiner Anwendung verwende ich TJvDBgrids. Diese werden via TDataSource, TClientDataSet, TDataSetProvider und TSQLDataSet aus einer Datenbank (Firebird) befüllt.
Folgendes Problem: wenn eine Zelle einen Text anzeigen soll, der aus mehreren Wörtern (also durch Leerzeichen getrennte Zeichengruppen) besteht, dann wird die Spaltenbreite nicht "ausgenützt". Es scheint so zu sein, daß das letzte Wort nur angezeigt wird, wenn es komplett dargestellt werden kann. Beispiel: der Text "Dies ist ein langer Testtext" wird bei der in der TColumn eingestellten Spaltenbreite so dargestellt: |Dies ist ein langer | wird die Spalte dann um ein, zwei Pixel verbreitert, erfolgt die Darstellung des kompletten Textes: |Dies ist ein langer Testtext| Ich hätte gerne folgende Darstellung bei zu schmalrer Spaltenbreite: |Dies ist ein langer Testte| Das blöde ist, ich habe auch DBgrids, wo das so wie ich will dargestellt ist. Ich bin sicher, das kann eingestellt werden, bin aber einfach zu doof, die Property zu finden. Kann mir jemand helfen? |
AW: TJvDBGrid - Text soll Spaltenbreite ausfüllen
Vermute mal, dass Wordwrap auf True steht, die Zeilenhöhe aber nicht für zwei Zeilen reicht.
|
AW: TJvDBGrid - Text soll Spaltenbreite ausfüllen
Sorry Neumann, kam erst jetzt zum Testen des Vorschlages.
stimmt, Wordwrap stand auf true. Es ändert sich aber gar nichts, wenn ich es auf false setze. WordWrapAllFields stand bereits auf False. Auch die Zeilenhöhe scheint konstant zu bleiben, wenn ich sie über RowHeight im Objektinspektor ändere. Ich habe die Komponente abgeleitet und in der abgeleiteten Komponente im Create DefaultRowHeight geändert. Das ergibt dann auch eine geänderte Anzeige zur Laufzeit. In der Zwischenzeit habe ich mit dem hier vorgeschlagenen Vorgehen experimentiert: ![]() Das sieht dann zwar so aus, wie ich es brauche. Leider wird nur die Erste Datenzeile angezeigt bzw. immer wieder wiederholt, wenn ich das in der abgeleiteten Komponente im DrawCell einbaue. Den Zellinhalt hole ich mit
Delphi-Quellcode:
Irgendwas mache ich falsch .. nur was?
if (ARow = 0) then
begin S := Self.Columns[ACol].Title.Caption; end else begin S := Self.DataSource.DataSet.Fields[ACol].AsString; end; |
AW: TJvDBGrid - Text soll Spaltenbreite ausfüllen
Suchst Du vielleicht das:
Delphi-Quellcode:
Statt ShowMessage natürlich Deine Schreibroutine.
procedure TForm1.JvDBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState); begin ShowMessage(Field.AsString); end; |
AW: TJvDBGrid - Text soll Spaltenbreite ausfüllen
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:
(siehe Grafik1: TjvDbGridRowHeight.jpg) Übrigens wird bei meinen TjvDbGrids ein Titeltext, der größer als die Spalte ist, mit abschließenden Pünktchen angezeigt, wie du in Grafik2: TjvDbGridTitelSpalte.jpg sehen kannst. |
AW: TJvDBGrid - Text soll Spaltenbreite ausfüllen
Guten Morgen Perlsau,
du hast recht - mit AutoSizeRows=False kann ich per RowHeight die Zeilenhöhe einstellen! Aber: die WordWrap Funktion bleibt wohl immer aktiv - egal ob ich WordWrap=True oder False setze. Dabei habe ich WordWrapAllFields immer auf False. Mir stellt sich also die Frage: wie kann ich das WordWrap abschalten? |
AW: TJvDBGrid - Text soll Spaltenbreite ausfüllen
Liste der Anhänge anzeigen (Anzahl: 1)
Moin!
Immerhin, das funktioniert schonmal. Warum bei dir der Titeltext nicht so abgeschnitten wird wie bei mir weiß ich jetzt auch nicht. Mußt du halt noch ein bissel rumprobieren ... Zitat:
Hast du nach den jeweiligen Änderungen der Properties auch neu kompiliert (Projekt > alle Projekte erzeugen)? Du kannst ja mal die Properties "meines" DBGrids mit den deinen vergleichen, siehe Grafik. |
AW: TJvDBGrid - Text soll Spaltenbreite ausfüllen
Hallo Perlsau,
ich bin der Sache jetzt auf der Spur. Folgendes: Füge ich im entsprechenden Formular ein NEUES TJvDBGrid ein, dann funktioniert alles. Ich habe dann das Formular gespeichert, geschlossen und neu in die IDE geladen. Und siehe da: beim ALTEN JvDBGrid war das WordWrap wieder auf True - obwohl ich es vor dem Speichern auf False gesetzt habe! Offenbar wird die Änderung der Property nicht richtig gespeichert. Ich bin nicht sicher, woran das liegt. Das alte JvDBGrid ist eine abgeleitete Komponente. Am Speichern der Properties habe ich nix geändert. Ich suche mal weiter, wenn ich etwas finde, melde ich mich. Danke für die Hilfe bisher. |
AW: TJvDBGrid - Text soll Spaltenbreite ausfüllen
Zitat:
|
AW: TJvDBGrid - Text soll Spaltenbreite ausfüllen
stimmt - ist sicher mein Fehler.
Nur zur Klarstellung: Bei beginn der Problemsuche war das ein normales JvDBGrid. Für die Fehlersuche habe ich dann die Komponente abgeleitet - zum "rumspielen". Bin auf der Fehlersuche und gespannt, woran es dann am Ende lag.:cyclops: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 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