![]() |
StringGrid über den Rand z.B. einer GroupBox hinweg anzeigen
Hallo zusammen
Ich möchte in bestimmten Fällen ein Stringgrid anzeigen, das z.B. in einer GroupBox liegt. Das Stringgrid soll aber ähnlich wie eine ausgeklappte ComboBox nicht durch den Rand der GroupBox eingegrenzt werden. Gibt es da eine Möglichkeit? Ich kann das StringGrid natürlich auch auf das Form legen und ganz nach vorne bringen. Dann wäre aber die Positionierung relative zu einem Control in der GroupBox das Problem. Die GroupBox kann auch noch ein paar Ebenen über dem Form liegen. Hat jemand eine Idee wie das am Einfachsten geht Danke Gerd |
AW: StringGrid über den Rand z.B. einer GroupBox hinweg anzeigen
in FMX ja
ohne Cutting wird da nichts begrenzt und dann gibt es da auch noch TPopup, wo man was reinmachen kann und dass sich dann, wie ein PopupMenü/DropdownMenü freifliegend über der Form öffnen lässt. in VCL nein ABER, wenn das Grid nicht in der GroupBox liegt, sondern ebenfalls auf einem der Parents der GroupBox (inkl. der Form) und wenn es in der Erstellungsreihenfolge als Letztes, also über allem Anderen, dann ..... |
AW: StringGrid über den Rand z.B. einer GroupBox hinweg anzeigen
Hall,
du könntest in dem Fall ja den Parent des Grids auf der Groupbox setzen. |
AW: StringGrid über den Rand z.B. einer GroupBox hinweg anzeigen
Zitat:
Nein: Schade. Da es beim Pulldown einer ComboBox ja auch geht hatte ich gehofft es gäbe eine Eigenschaft Das mit dem Parent hatte ich ja selber geschrieben. Wie ermittle ich dann aber die Position relativ zu einer Componente in der GroupBox. So sieht die "bittere" Realität aus
Wie bekomme ich möglichst einfach die Koordinaten von TEdit umgerechnet auf Form1 oder GroupBox2? Geht das nur, indem ich durch alle Componenten gehe? Und schlagt mich nicht für den "Wahnsinns" Aufbau. Den durfte ich übernehmen. |
AW: StringGrid über den Rand z.B. einer GroupBox hinweg anzeigen
Hmm..
Alternativ ein (StayOnTop) Formular ohne Rand machen, dort das Grid drauf packen und dieses Fenster dann positionieren. Zur Anzeige natürlich Show und nicht ShowModal verwenden. Über MouseMove kannst Du dann dieses Fenster verschieben. Per z.B. Edit.ClientToScreen(Point(Edit.Left,Edit.Top)) kannst Du dann die untere linke Ecke des Edits angeben und erhälst die Position auf dem Bildschirm. Dann nur dem Fenster des Grids als Top und Left die X/Y Koordinate geben und die Gridform hängt unter dem Edit. Besser aber Du verwendest dann vielleicht ein MouseHook, da Du somit unabhängig vom unter der Maus liegenden Control direkt die Bildschirm MousePos erhälst. |
AW: StringGrid über den Rand z.B. einer GroupBox hinweg anzeigen
Dann ist
Delphi-Quellcode:
doch einfacher.
StringGrid1.Left := PageControl1.Left + Tabsheet1.Left + GroupBox2.Left + Panel1.Left + GroupBox1.Left + Edit1 .Left;
Ich hatte darauf gehofft, dass es eine "einfache" Möglichkeit gibt die Positionen aus einem gemeinsamen Koordinatensystem zu holen Grüße Gerd |
AW: StringGrid über den Rand z.B. einer GroupBox hinweg anzeigen
Geht schon einfacher, solange StringGrid1.Parent auch in der ParentListe von Edit1 vorkommt.
Delphi-Quellcode:
var
P: TPoint; begin P := Edit1.ClientToParent(TPoint.Create(0, Edit1.Height), StringGrid1.Parent); StringGrid1.Left := P.X; StringGrid1.Top := P.Y; StringGrid1.BringToFront; end; |
AW: StringGrid über den Rand z.B. einer GroupBox hinweg anzeigen
Wow. Das hört sich doch gut an.
Zitat:
|
AW: StringGrid über den Rand z.B. einer GroupBox hinweg anzeigen
Es scheitert daran, dass er das TPoint.Create nicht erkennt "Unknown identifier"
Delphi-Quellcode:
Ich verwende Delphi XE
P := Edit1.ClientToParent(TPoint.Create(0, Edit1.Height), StringGrid1.Parent)
|
AW: StringGrid über den Rand z.B. einer GroupBox hinweg anzeigen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:15 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 by Thomas Breitkreuz