AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Auf Panel.Resize() im Mainform in anderem Fenster reagieren
Thema durchsuchen
Ansicht
Themen-Optionen

Auf Panel.Resize() im Mainform in anderem Fenster reagieren

Ein Thema von TNoob · begonnen am 10. Mai 2007 · letzter Beitrag vom 10. Mai 2007
Antwort Antwort
TNoob

Registriert seit: 10. Mai 2007
7 Beiträge
 
Delphi 7 Personal
 
#1

Auf Panel.Resize() im Mainform in anderem Fenster reagieren

  Alt 10. Mai 2007, 13:20
Moin Delphifreunde! Hab mich mal angemeldet, um nicht immer nur passiv dabei zu sein

Also folendes Szenario:

Ich habe ein SDI-Projekt mit einem TTreeview align=Left und ein TPanel align=Client auf dem Hauptformular. Das Projekt hat noch weitere Formulare, die in der Projektdatei autocreatet werden.

Diese Formulare werden im OnCreate() auf ParentWindow=MainForm.Panel gesetzt. Durch Auswahl im Treeview werden die entsprechenden Formulare auf dem Panel angezeigt, die vorherige Form wird geschlossen.

Das klappt alles reibungslos, jedoch will ich nun bei Größenänderung der Anwendung und dem entsprechend des "ClientPanels" auch die Formulare auf dem Panel an die Größe anpassen.

Die Unterformulare haben:
BorderStyle=bsToolWindow
WindowState=wsMaximized
Align=alClient / alNone

Im OnPaint() setzte ich mit SetBounds(MainForm.Panel....) immer auf die aktuelle Größe.
Um Verschieben der Form auf dem Panel zu unterbinden, reagiere ich auf WM_MOVING und WM_NCHITTEST (habe ich aus dem Forum).

Jetzt das Problem:

1.) Nutze ich align=alClient und im OnPaint() das SetBounds() wird scheinbar die Form immer wieder neu gezeichnet und flackert ständig.

2.) Nutze ich align=alNone und SetBounds(), wird das OnPaint() nicht mehr aufgerufen. (erst wieder wenn z.B. ein anderes Control die Form "zerstört" und ein Neuzeichnen erzwingt->Dialogfenster o.Ä.)

3.) Nutze ich align=alClient ohne SetBounds(), wird das Formular nicht vollständig ins Panel eingepasst. Rechts fehlt dann ein Bereich! ???


Meine Idee war nun in Beispiel 2) einfach das OnPaint() selber aufzurufen, jedoch bekomme ich dann einen Fehler bei Start der Anwendung, vermutlich weil zu dem Zeitpunkt das Unterformular noch nicht createt wurde. Habe schon überlegt das Botschaftssystem von Windows zu nutzen, jedoch ist in meiner Delphiversion die "messages.pas" nicht enthalten ;(

Kann mir jemand weiterhelfen?

MfG TNoob
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Auf Panel.Resize() im Mainform in anderem Fenster reagie

  Alt 10. Mai 2007, 13:37
Herzlich willkommen in der Delphi-PRAXiS, TNoob.

Ich weiß jetzt nicht wie genau du die ChildForms realisiert hast, aber ich arbeite auch oft mit ChildForms anstelle von Frames (aus historischen Gründen) und ich habe die von dir beschriebenen Probleme nicht. Liegt es am anderen Ansatz? Schau selbst: klick

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
TNoob

Registriert seit: 10. Mai 2007
7 Beiträge
 
Delphi 7 Personal
 
#3

Re: Auf Panel.Resize() im Mainform in anderem Fenster reagie

  Alt 10. Mai 2007, 14:17
Vielen Dank Marubu!
Dann werd ich das mal so wie in deinem Beispiel machen. Es ist scheinbar ein Unterschied ob ich zur Laufzeit als Parent/Child setze, oder gleich als Child create. Das wichtigste war, das man das Unterformular nicht auf dem Panel verschieben kann. Bei dir gehts einfach so und ich hab mir da einen abgebrochen.^^

MfG
  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 01:28 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