Wie auto-fit/Maßstab DBGrid (oder andere ähnliche) Spalten-breiten nach seinem Inhalt?
Ich versuche, einen Rahmen mit einer DBGrid
dienen für mehr als 10 Tische mit der Hälfte seiner Felder als Standard, und andere Felder, die exklusiv für jede Tabelle.
Als der Platz für die Spalten begrenzt sind und ich nicht möchten, konfigurieren Sie jede Spalte in jeder Tabelle manuell, da es sehr schlechte Qualität der Arbeit, ich Frage mich, eine Möglichkeit zum berechnen der Breite jeder Spalte von den grössten Inhalt einer Zeile innerhalb dieser Spalte, gemessen an der eigenen Komponente oder durch die Daten festgelegt.
Wer kennt den Weg? Ist es draußen in der Welt einige benutzerdefinierte Komponente mit dieser macht?
Ich brauche eine Lösung implementiert, mit der Zunahme und Abnahme der Größe, nach der die sichtbaren Daten in dem alle sichtbaren Spalten des Rasters.
Meine Lösung bisher ein problem hatte, mit dem Bild der ausgewählten Zelle, Hexe springt aus dem ausgewählten dataset-Zeile an.
Hinweis: Bitte schließen Sie nicht meine Frage. Es geht nicht darum, die Passung mit dem raster, Breite oder die form der Breite. Es wird über alle Spalten der Breite minimieren Sie die horizontale Bildlaufleiste, aber nicht unbedingt zu verstecken.
- es ist nicht geeignet, um die form, sondern in seiner eigenen Inhalten, auch wenn horizontale Bildlaufleiste angezeigt.
- Zarko Gajic Regeln!
- Ich weiß, ich habe gefragt, dies vor und bekam eine wirklich gute Antwort...
- Der link ist tot.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was Sie tun müssen, ist die Verwendung der grid, canvas-Bereich zu Messen, den Inhalt jeder Spalte und legen Sie die Spaltenbreite entsprechend an. Sie können entweder Durchlaufen Sie das dataset oder verwenden Sie den OnColumnDraw-Veranstaltung zum anpassen der Breite on-the-fly.
Hier ist ein Beispiel (ich musste einen Abstand von 5 Pixel)
BEARBEITET:
Mein Erster code war über die Passform der Spalten innerhalb des Rasters mit, mit diesem neuen code, AutoSizeColumns liest die Datensätze in calc die Spaltenbreite, bis MaxRows oder Dataset.Eof:
Nenne ich es in das DataSet.AfterOpen event:
Warum so kompliziert-code? 😀 dann nutzen Sie Einfach dieses. Seine auch 5 px offset.
Für jede Spalte, die Sie wollen, werden auto-Größe, setzen Sie die Eigenschaft
SizePriority=1
und für fixierte Spalten festlegenSizePriority=0
in deinem Fall nur die Letzte Spalte wird automatisch dimensioniert.Legen Sie dann die Eigenschaft
grid.AutoFillColumns=true
und das sollte es tun.Für TRUEDBGRID .net können Sie dies tun:
Für TrueDbGrid ActiveX in vb60 diesem (dieser code nicht enthalten splits):
Diese Lösung macht alle Spalten erweitern oder verkleinern, je nach dessen Inhalt, ohne Sorge wenn es Bildlaufleisten oder nicht, und befestigen Sie die ausgewählte Zelle Zeichnung Fehlfunktion und die Datensatz-Zeiger Fehlfunktion.
Hallo dieses Verfahren verwenden.
Verwenden Verfahren
DbGrid1.AutoAdjustColumns
- und das ist es.