AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein StringGrid über den Rand z.B. einer GroupBox hinweg anzeigen
Thema durchsuchen
Ansicht
Themen-Optionen

StringGrid über den Rand z.B. einer GroupBox hinweg anzeigen

Ein Thema von norwegen60 · begonnen am 1. Apr 2020 · letzter Beitrag vom 3. Apr 2020
Antwort Antwort
Seite 1 von 2  1 2      
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
505 Beiträge
 
Delphi 12 Athens
 
#1

StringGrid über den Rand z.B. einer GroupBox hinweg anzeigen

  Alt 1. Apr 2020, 23:14
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.068 Beiträge
 
Delphi 12 Athens
 
#2

AW: StringGrid über den Rand z.B. einer GroupBox hinweg anzeigen

  Alt 2. Apr 2020, 00:12
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 .....
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: StringGrid über den Rand z.B. einer GroupBox hinweg anzeigen

  Alt 2. Apr 2020, 04:43
Hall,
du könntest in dem Fall ja den Parent des Grids auf der Groupbox setzen.
Heiko
  Mit Zitat antworten Zitat
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
505 Beiträge
 
Delphi 12 Athens
 
#4

AW: StringGrid über den Rand z.B. einer GroupBox hinweg anzeigen

  Alt 2. Apr 2020, 08:17
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 .....
Es ist VCL.
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
  1. StringGrid1 soll am linken Rand direkt unter Edit1 sichbar werden sobald Edit1 den Focus hat
  2. Edit1 liegt nahe am unteren Rand von GroupBox1
  3. GroupBox1 liegt alBottom auf Panel1
  4. Panel1 liegt alBottom auf GroupBox2
  5. GroupBox2 liegt alClient in Tabsheet1
  6. Tabsheet1 liegt in PageControl1
  7. PageControl1 liegt irgendwo in GroupBox2 und hätte zum ersten mal unten Platz
d.h. damit StringGrid1 nicht nach unten beschränkt wäre, müsste es auf Form1 oder GroupBox2 liegen

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.

Geändert von norwegen60 ( 2. Apr 2020 um 08:21 Uhr)
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
969 Beiträge
 
Delphi 6 Professional
 
#5

AW: StringGrid über den Rand z.B. einer GroupBox hinweg anzeigen

  Alt 2. Apr 2020, 10:36
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.
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)
  Mit Zitat antworten Zitat
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
505 Beiträge
 
Delphi 12 Athens
 
#6

AW: StringGrid über den Rand z.B. einer GroupBox hinweg anzeigen

  Alt 2. Apr 2020, 15:38
Dann ist StringGrid1.Left := PageControl1.Left + Tabsheet1.Left + GroupBox2.Left + Panel1.Left + GroupBox1.Left + Edit1 .Left; doch einfacher.
Ich hatte darauf gehofft, dass es eine "einfache" Möglichkeit gibt die Positionen aus einem gemeinsamen Koordinatensystem zu holen

Grüße
Gerd
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#7

AW: StringGrid über den Rand z.B. einer GroupBox hinweg anzeigen

  Alt 2. Apr 2020, 17:19
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;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
505 Beiträge
 
Delphi 12 Athens
 
#8

AW: StringGrid über den Rand z.B. einer GroupBox hinweg anzeigen

  Alt 2. Apr 2020, 17:36
Wow. Das hört sich doch gut an.

Zitat:
...solange StringGrid1.Parent auch in der ParentListe von Edit1 vorkommt...
Müsste doch immer erfüllt sein wenn Stringrid auf einem der Unter-Parents von Edit liegt, oder?
  Mit Zitat antworten Zitat
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
505 Beiträge
 
Delphi 12 Athens
 
#9

AW: StringGrid über den Rand z.B. einer GroupBox hinweg anzeigen

  Alt 2. Apr 2020, 17:49
Es scheitert daran, dass er das TPoint.Create nicht erkennt "Unknown identifier"
 P := Edit1.ClientToParent(TPoint.Create(0, Edit1.Height), StringGrid1.Parent) Ich verwende Delphi XE
  Mit Zitat antworten Zitat
Alt 2. Apr 2020, 18:01     Erstellt von Frühlingsrolle
Dieser Beitrag wurde von Daniel gelöscht. - Grund: Verdacht auf SPAM und den damit verbundenen verschwenderischen Umgang von wertvollen Bits und Bytes
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#10

AW: StringGrid über den Rand z.B. einer GroupBox hinweg anzeigen

  Alt 2. Apr 2020, 18:09
Ich verwende Delphi XE
OK, das konnte ich anhand deines Profils nicht ahnen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 09:12 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