![]() |
Datenbank: ABS • Version: 488 • Zugriff über: Datascore
Eine Form am DBGrid an passen?
Das DBGrid hat ja je nachdem wie viel Felder es anzeigt, eine unterschiedliche Bereite. Gibt es eine Möglichkeit eine Form am DBGrid an zu passen? Wenn man z.B. ein DBGrid auf einer Form hat und diese Form dann aufruft, die Form gleich die passende Größe hat?
|
Re: Eine Form am DBGrid an passen?
Hai Heike,
Du könntest im .AfterOpen Ereigniss deines TDataSets die Größe anpassen. Zum Beispiel:
Delphi-Quellcode:
[Edit]ÄNDERUNG.
procedure TForm1.QueryAfterOpen(DataSet: TDataSet);
var VScrollWidth : Integer; // Breite des Scrollbalkens begin VScrollWidth := GetSystemMetrics(SM_CXVSCROLL); Self.Width := DBGrid1.Left + DBGrid1.Width + VscrollWidth; end; Ich weiss auch nicht warum ich zuerst mit .ClientWidth gearbeitet habe [edit] Noch ein Edit: Ich bin wohl noch nicht wach. Es wird noch immer der Horizontalescrollbaken angezeigt. :wall: Ich überlege mir noch etwas. |
Re: Eine Form am DBGrid an passen?
Guten Morgen!
So ähnlich hatte ich das schon versucht, klappte aber nicht, die Form war immer kleiner und hatte dann Scrolls. Sieht natürlich dann nicht so gut aus wenn DBGrid Scrolls hat und die Form auch. Hatte dann versucht das ganze über die Feldlänge zu machen, aber die Feldlänge ist nicht immer gleich die Breite vom DBGrid. DBGrid habe ich Align auf Client gestellt, ist doch richtig oder in diesen Fall nicht? Heike. |
Re: Eine Form am DBGrid an passen?
Für ein primary window verbietet sich diese Vorgehensweise, aber für ein secondary window (dialog) muss nur die Eigenschaft AutoSize der Form auf true gesetzt werden. Die Regel ist: Bei sizeable windows bestimmt der Benutzer die Dimensionen, bei non sizeable windows das Programm.
Grüße vom marabu |
Re: Eine Form am DBGrid an passen?
Zitat:
|
Re: Eine Form am DBGrid an passen?
Kann nicht sein. Du hast dann weitere Komponenten auf der Form, die AutoSize unwirksam machen. Öffne in deinem Projekt eine neue Form, packe ein leeres Dbgrid drauf, mache die Form etwas zu groß und toggle AutoSize, anschließend entferne die TestForm wieder aus deinem Projekt. Damit solltest du sehen, das es geht.
Wenn du es für deinen eigenen Dialog nicht hinbekommst, dann beschreibe mal, welche Komponenten noch auf deiner Form sind, wie sie zueinander in Beziehung stehen und welche Align-Eigenschaft sie haben. marabu |
Re: Eine Form am DBGrid an passen?
Zitat:
Heike. |
Re: Eine Form am DBGrid an passen?
Liste der Anhänge anzeigen (Anzahl: 1)
Moin, moin,
and have a look.. //Grüße Martin |
Re: Eine Form am DBGrid an passen?
Zitat:
marabu PS: Dazu wirst du aber immer noch AutoSize brauchen... |
Re: Eine Form am DBGrid an passen?
Zitat:
Ja, genau, so sollte es sein. Leider bin ich nicht selbst darauf gekommen. Hab vielen Dank für Deine Mühe. Auch für alle anderen Antworten, vielen Dank. Heike. |
Re: Eine Form am DBGrid an passen?
Moin, moin
Ja, aber DP-Hai hat ja seine Wellenlösung deutlich hinterlassen (!) und ich habe einfach gehorcht wohin er schwimmen will (Delphinsonar...) Zudem sei angemerkt, dass ich vor längerem mal eine DBGrid-Komponente aufgebaut habe, die sich ihre Spaltenbreite anhand der Inhalte errechnet. Grüße // Martin |
Re: Eine Form am DBGrid an passen?
Zitat:
|
Re: Eine Form am DBGrid an passen?
Zitat:
ich kann bestätigen was Heike schreibt. Mit einer Form auf der nur ein TDBGrid und die (nich visuellen) DB-Komponenten von ABS sind funktioniert dein Vorschlag nich. Bei Verwendung der Zeos-Lib für den mySQL Zugriff ist es das selbe. Da ich davon ausgehe das Du, bevor Du es vorgeschlagen hast, deine Idee erfolgreich eingesetzt hast wäre es super nett wenn Du einmal einenen Beispielcode anhängen könntest. |
Re: Eine Form am DBGrid an passen?
Liste der Anhänge anzeigen (Anzahl: 1)
Hai Sharky,
Zitat:
Entweder ich habe nicht verstanden was smart wirklich wollte oder du hast den gleichen Fehler wie sie gemacht. Bin auf die Auflösung des Rätsels gespannt. Grüße vom marabu |
Re: Eine Form am DBGrid an passen?
Spätmoin,
@marabu Häng mal eine Tabelle an und lass die öffnen, dann wird es spannend... @smart: Die Kompo wie sie aktuell ist ist so fürchterlich in meine eigene Packagesammlung verstrickt, dass die mal nicht eben da herauszuziehen ist und die ganze Sammlung darf nicht abgeben.... Aber wenn Du einige Tage Zeit hast, werde ich die entsprechenden Routinen mal hersaussuchen.. Grüße // Martin |
Re: Eine Form am DBGrid an passen?
Zitat:
|
Re: Eine Form am DBGrid an passen?
Guten Abend marabu!
Ich habe mich wahrscheinlich falsch ausgedrückt! Sorry! Ich meinte das so: Nehmen wir mal an, Du hast eine Form und darauf ein TDBGrid. In dem TDBGrid lädst Du eine Tabelle die z.B. 4 Felder hat. Jetzt hat ja TDBGrid durch das Einladen der Felder eine neue Breite als ohne Felder (ist durch das Einladen breiter geworden). Diese neue Breite wollte ich auf die Form „Übertragen“. Mit anderen Worten, je nachdem was für eine Tabelle in TDBGrid eigeladen wird, mit 2, 4, 7 oder 9 Felder, soll die Form die Breite übernehmen, damit unten kein Scrollbalken erscheint und der Anwender immer die ganze Tabelle sehen kann. Also, genu wie das Beispiel von mschaefer. Heike. |
Re: Eine Form am DBGrid an passen?
Zitat:
Heike. |
Re: Eine Form am DBGrid an passen?
Hallo Heike,
Zitat:
Freundliche Grüße vom marabu |
Re: Eine Form am DBGrid an passen?
Unabhängig davon, das es eine sportliche Herausforderung ist, soetwas mal zu programmieren, halte ich das für absoluten Blödsinn. Wenn ich das meinen Kunden zeige, sagt keiner "Cool", sondern "Machen Sie das weg, das nervt." Desweiteren ist der ganze Effekt für die Katz', wenn die Breite zu gross. Dann brauche ich doch wieder eine Scrollbar...
Ich hatte lange Zeit ein Grid, das seine Spaltenbreiten an die Grid-Breite anpasst. Ich bin davon wieder abgekommen, weil es einem auf den Sack geht. Die Spaltenbreite den Inhalten anzupassen ist wesentlich effektiver. Damit schafft man lesbare Datengitter und erntet Zufriedenheit beim Anwender, was fast immer gleichbedeutend mit einem Folgeauftrag ist. Man kann sich auch sinnvoll mit der Erhöhung der Lesbarkeit durch alternierende Farben, angedeutete Farbverläufe und dezente Gitterformen (leichtes Grau, 3D-Effektchen) beschäftigen. Aber, nur meine Meinung. |
Re: Eine Form am DBGrid an passen?
Ich persönlich, finde es viel übersichtlicher wenn man die Tabelle ganz sehen kann und nicht erst noch scrollen muss. So kann man nämlich z.B. die Tabelle auch als Ein- / Ausgabe- Maske nehmen. So ähnlich ist es ja auch bei Excel.
Heike. |
Re: Eine Form am DBGrid an passen?
Das ist klar, aber dann mach doch einfach den Dialog gross genug und mache sie in der Große veränderbar (das Grid natürlich auch).
Das Demo von mschaefer ist nett, aber das rumgezappele von der Form nervt mich. Wichtig ist, das die Daten klar erkennbar sind. Wenn nicht alle Zeilen und Spalten auf die Form passen, wirds interessant: So ein Grid besteht ja aus einem Hintergrund und den Daten selbst. Manchmal ist es besser, das beides gleichfarbig ist. Das wäre die Metapher eines Blattes Papier, in dem oben irgendwo eine kleine Tabelle hängt. Aber manchmal will man das nicht, so, als ob die wichtige kleine Tabelle auf einem PostIt-Zettel (gelb) auf dem Papier klebt. Dann ist es wichtig, die wirkliche Größe der Tabelle zu zeigen. Dann färbe ich den Hintergrund grau (clBtnFace), die Tabelle weiss (o.ä) sodass die Daten klar erkennbar sind. Es kommt eben immer drauf an, WAS man WEM zeigen will. Aber Jedem das Seine. Wie eben schon erwähnt, würde ich es wesentlich prickelnder finden, wenn man sich mit dem Rendern von Tabellen beschäftigt. Eine abschließend überzeugende Lösung habe ich noch nicht gefunden. |
Re: Eine Form am DBGrid an passen?
Schon Deep Feierabendmoin,
also mal von dem kleinen Beispiel abgesehen ist es wirklich nicht so einfach festzulegen wie man mit den Tabellen umgeht. Habe oft Auswahltabellen wo man einen Eintrag anklicken kann. In dem Fall sind die Tabellen mit leicht grauem Hintergrund und Read-Only. Dann gibt es den Ändern Button und die Tabelle wird Hintergrund weiß und edierbar. Das Problem der überbreiten Tabellen ist wirklich leidig. Man müßte mehrere Views festlegen können, die nur bestimmte Spalten zeigen und andere Ausblenden. Aber wie ist es mit Mehrzeiligkeit, da rätsel ich auch immer wieder. Was sich einigermaßen durchgesetzt hat ist das abwechselnd Einfärben des Spaltenhintergrundes. Grüße // Martin |
Re: Eine Form am DBGrid an passen?
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:21 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