AGB  ·  Datenschutz  ·  Impressum  







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

Client Area von Form beschränken

Ein Thema von Zerolith · begonnen am 29. Aug 2005 · letzter Beitrag vom 29. Aug 2005
Antwort Antwort
Zerolith

Registriert seit: 12. Mär 2003
Ort: Kempten
188 Beiträge
 
Delphi 6 Enterprise
 
#1

Client Area von Form beschränken

  Alt 29. Aug 2005, 00:01
Tag,

ja ich habe bereits die Suche verwendet. Leider hilft mir dieser Thread nicht weiter.

ich habe ein Formular mit Border := bsNone; Daher wird ein Panel (z.B. für ein Menü oben) das alTop hat, bei x:0;y:0 beginnend gezeichnet. Gefällt mir nicht. Da mein Form. ein paar Bitmaps für den Rand und die "Titelleiste" zeichnet. Jetzt würde ich trotzdem gern eine eigene "ClientArea" definieren.

Wie mach ich das?

Danke, Daniel
Daniel
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: Client Area von Form beschränken

  Alt 29. Aug 2005, 07:03
Dann setze Align wieder auf alNone, positioniere dein Panel so wie es sein soll (im Formular) und setze zusätzlich Right in der Eigenschaft "Anchors". Dann ist der rechte Rand des Controls am rechten Rand des übergeordneten Controls (bzw. der Form) "verankert".
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Zerolith

Registriert seit: 12. Mär 2003
Ort: Kempten
188 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: Client Area von Form beschränken

  Alt 29. Aug 2005, 09:46
gibts keine schönere möglichkeit?
Daniel
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#4

Re: Client Area von Form beschränken

  Alt 29. Aug 2005, 09:55
Schreibe einen Handler für WM_NCCALCSIZE.

Allerdings weiß ich nicht, ob Delphi dann nicht vielleicht mit den Aligns und Anchors durcheinanderkommt
  Mit Zitat antworten Zitat
Zerolith

Registriert seit: 12. Mär 2003
Ort: Kempten
188 Beiträge
 
Delphi 6 Enterprise
 
#5

Re: Client Area von Form beschränken

  Alt 29. Aug 2005, 10:16
Danke für den Tipp. Aber das is gerade der typische fall: "dem hund n knochen wortlos hinwerfen"

sorry - wie und was müsste ich hierfür tun?

danke
Daniel
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#6

Re: Client Area von Form beschränken

  Alt 29. Aug 2005, 10:32
Zitat von Zerolith:
Aber das is gerade der typische fall: "dem hund n knochen wortlos hinwerfen"
... ähem ... sicher doch

Zitat von Zerolith:
sorry - wie und was müsste ich hierfür tun?
Die Frage ist, ob du ein Rezept willst, oder ob du den fertigen Kuchen willst?! Letzteres bekommst du von mir leider nicht.

WM_* sollte dich darauf aufmerksam machen, daß es sich um eine Fensternachricht handelt. Wenn man sich dann über MSDN-Library durchsuchenWM_NCCALCSIZE im PSDK schlau gemacht hat, weiß man sogar wofür lParam und wParam in diesem Falle stehen. Da es um eine Fensternachricht geht, ist der Handler eine Fensterfunktion, die WM_NCCALCSIZE bearbeitet anstelle der orginalen Fensterfunktion.

Alles redundante Information, da sie oben bereits drinsteckte.
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

Re: Client Area von Form beschränken

  Alt 29. Aug 2005, 10:37
Du hast doch eine Enterprise-Version. Schau in der Unit Forms nach der Routine TCustomForm.WMNCCalcSize (als Beispiel). Dann reduziert Windows aber den Client-Bereich und du kannst nicht mehr mit dem normalen OnPaint drauf zeichnen, sondern musst WM_NCPAINT ebenfalls abfangen überschreiben.

//EDIT: roten Kasten gesehen und ignoriert (das passiert wenn man anfängt und dann zwischendurch 15 Min. telefoniert 8))

[Nachtrag]

Schöne Beispiele sind auch TWinControl.WMNCCalcSize und TWinControl.WMNCPaint in der Unit Controls.

//EDIT: Durchgestrichene Passage geändert
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#8

Re: Client Area von Form beschränken

  Alt 29. Aug 2005, 10:43
Zitat von Flocke:
Schöne Beispiele sind auch TWinControl.WMNCCalcSize und TWinControl.WMNCPaint in der Unit Controls.
... Wobei WM_NCPAINT es erlaubt in den Bereich innerhalb des Fensters aber außerhalb der Client Area zu zeichnen. Das wäre also die Stelle, wo man normalerweise die Bitmap zum Verzieren draufblitten würde.
  Mit Zitat antworten Zitat
Zerolith

Registriert seit: 12. Mär 2003
Ort: Kempten
188 Beiträge
 
Delphi 6 Enterprise
 
#9

Re: Client Area von Form beschränken

  Alt 29. Aug 2005, 10:43
Danke werd ich mir anschauen
Daniel
  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:36 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