AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TStatusbar auf TFrame

Ein Thema von taaktaak · begonnen am 26. Okt 2010 · letzter Beitrag vom 27. Okt 2010
Antwort Antwort
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#1

TStatusbar auf TFrame

  Alt 26. Okt 2010, 07:09
Moin, Moin

Zur Gliederung größerer Projekte nutze ich gern die Möglichkeiten von Frames. So habe ich derzeit direkt auf dem Basis-Form vier Frames, die abwechselnd sichtbar sind und unterschiedliche Arbeitsbereiche verfügbar machen. Jeder Frame besitzt eine eigene Statusbar. So weit so gut.

Leider reagiert die auf dem Frame placierte Statusbar nicht korrekt, wenn das Basis-Form maximiert wird: Der Size-Grip wird leider nicht entfernt und ist weiter benutzbar, das hat dann fatale Folgen für die Statusbar wenn der Anwender den Size-Grip nutzt.

Meine Versuche, den VCL-Source zu überprüfen, warum die Statusbar nicht auf die Maximierung reagiert, wenn diese auf einem Frame placiert ist und eine Korrektur zu finden, sind leider erfolglos.

Hat jemand eine Idee oder sogar eine Lösung?
Ralph
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

AW: TStatusbar auf TFrame

  Alt 26. Okt 2010, 07:34
Hallo,

habe gerade kein Delphi verfügbar, aber gibt es da nicht eine Eigenschaft bei der Statusbar, mit der man die Sichtbarkeit des Sizegrips beeinflussen kann?

Sowas in der Art: SizeGrip := True / False;
Vorgabe ist da wohl True.

Edit: Nachsatz: Wenn ich Frames benutze, bekommen die zur Laufzeit immer Align := alClient gesetzt, wenn sie nur einzeln auf dem Formular sichtbar sein sollen, ansonsten entsprechend den übrigen sichtbaren Komponenten auch mal alLeft oder alRight...

Geändert von nahpets (26. Okt 2010 um 07:42 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#3

AW: TStatusbar auf TFrame

  Alt 26. Okt 2010, 07:35
Hi ich kann den Effekt unter Delphi 2010 nicht nachvollziehen. Wie wäre es den Statusbar zu disablen?
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#4

AW: TStatusbar auf TFrame

  Alt 26. Okt 2010, 08:31
Vielen Dank für die ersten Antworten!

@ nahpets
SizeGrip - true/false wirken sich zur Laufzeit nicht aus. Die Idee, die Maximierung selbst zu erkennen und je nach Status den SizeGrip an-/auszuschalten hatte ich auch schon; funktioniert aber leider nicht.
Align - muss in meinem Anwendungsfall auf alClient eingestellt sein. Andere Einstellungen haben aber auf das Fehlverhalten keine Auswirkung.

@ Bummi
Das deaktivieren der Statusbar ist tatsächlich eine mögliche Notlösung; so kann der Anwender zumindest keinen Unsinn mit dem SizeGrip anrichten. Leider ist dieser aber natürlich weiterhin sichtbar. Ein "übermalen" des Grips im OnDraw() ist nicht möglich, da dieser offenbar automatisch nach dem OnDraw() des Panels gezeichnet wird.
Interessant, dass dieses Verhalten unter D2010 nicht auftritt. Der Source ist also offenbar verändert worden. Aber an welcher Stelle und in welcher Weise...
Ralph
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

AW: TStatusbar auf TFrame

  Alt 26. Okt 2010, 11:37
Hallo,

was ich daran nicht verstehe ist:

Benutze die gleiche Delphiversion, also 7 Prof.

Habe mehrere Programme mit Frames. Die Frames haben jeweils mehrere Statusbars, bei keiner ist das SizeGrip sichtbar, sondern nur das der Statusbar, die direkt auf dem Formular liegt (Autohint = True).

Was ich allerdings nicht mache ist: Mehrere Frames gleichzeitig auf ein Formular setzen. Hier nehme ich als Container immer ein PageControl und schalte hier ggfls. die einzelnen Reiter auf sichtbar oder unsichtbar.
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: TStatusbar auf TFrame

  Alt 26. Okt 2010, 11:43
Hallo taaktaak,

soweit ich sehen konnte verwendest du Delphi 7. Unter Delphi 2007 ist das verhalten reproduzierbar.

Testprojekt mit einem MainForm und zwei Frames. Mainform hat einen Button (Align = alTop) und zwei Frames. Beide Frames haben einen Statusbar mit SizeGrip = TRUE. Im Create des MainForms werden beide Frames auf alClient gesetzt und eins unsichtbar geschaltet. Beim Click auf den Button wird das andere Frame sichtbar geschaltet und das erst unsichtbar (oder andersrum ). Beim Maximieren des Hauptformulars tritt der von Dir beschriebene Fehler auf.

Gruß, Chris

P.S.:

Hab das Testprogramm mal angehängt
Angehängte Dateien
Dateityp: zip Statusbar_Test.zip (2,6 KB, 7x aufgerufen)
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#7

AW: TStatusbar auf TFrame

  Alt 26. Okt 2010, 13:14
Auf eine zusätzliche Statusbar direkt auf dem Form habe ich bisher verzichtet, nur die Frames besitzen jeweils eine eigene Statusbar - so wie ChrisE dies auch unter D2007 nachgestellt hat.

Da dieser Ansatz zumindest augenblicklich eine Sackgasse zu sein scheint, versuche ich es jetzt (zunächst natürlich nur in einem Testprogramm) genau anders herum: Nur das Basis-Form besitzt eine Statusbar; diese wird an eine passende Property des jeweiligen Frames "übergeben" und von diesem jeweils individuell benutzt. Dadurch erhöht sich aber der Verwaltungsaufwand: Es will mir nicht gelingen die jeweils vorher genutzte Statusbar zu sichern und bei "Verlassen" des Frames wieder zu rekonstruieren. Weder Statusbar.Assign() noch Read-/WriteComponent() funktionieren. Abhilfe sind bisher eigene Botschaften, die die Aktivierung/Deaktivierung der Frames programmweit verkünden und die das Neuzeichenen der Statusbar veranlassen. Leider wird das Ganze dadurch ein klein wenig unübersichtlich.

Na schau'n wir mal...
Ralph

Geändert von taaktaak (26. Okt 2010 um 13:17 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

AW: TStatusbar auf TFrame

  Alt 26. Okt 2010, 13:44
Hallo taaktaak,

als kleine Anregung. Lass die Statusbars weiterhin in den Frames. Nur wenn ein Frame vom Mainform aktiv geschaltet wird, könntest du bei jedem Frame eine Methode aufrufen GetStatusBar und diesen dann dem MainForm zuordnen (Parent). Vorher natürlich den alten Statusbar wieder per ResetStatusBar des "alten" Frames zurückgeben.

Gruß, Chris
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#9

AW: TStatusbar auf TFrame

  Alt 26. Okt 2010, 14:01
Hallo Chris,
das ist eine interessante Idee!
Danke, werd' ich heute Abend mal testen...
Ralph
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#10

AW: TStatusbar auf TFrame

  Alt 27. Okt 2010, 07:52
So hab's ausprobiert:
Den Parent zu setzen ist tatsächlich die Lösung!
Chris, vielen Dank für den Tip
Ralph
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:57 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