AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Client Area von Formular disablen
Thema durchsuchen
Ansicht
Themen-Optionen

Client Area von Formular disablen

Ein Thema von s.h.a.r.k · begonnen am 30. Dez 2010 · letzter Beitrag vom 31. Dez 2010
Antwort Antwort
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#1

Client Area von Formular disablen

  Alt 30. Dez 2010, 14:24
Ich suche gerade nach eine Möglichkeit, die Client Area einer Form zu deaktivieren -- schaut das Bild im Anhang an, dann wisst ihr, was mit Client Area gemeint ist. Ich könnte auch alle Komponenten auf ein Panel platzieren und PanelXYZ.Enabled := False; setzen, was aber für mich nicht brauchbar ist. Ich habe keinerlei Informationen über das Formular selbst, daher soll die Lösung eben so allgemein wie nur möglich sein.

Ebenso soll das Fenster selbst immer noch bewegbar bleiben, ebenso in der Größe änderbar! Bisher habe ich leider keinerlei Message oder sonst eine Idee gefunden, die nur die Client Area disabled.

Quelle des Bildes.
Angehängte Grafiken
Dateityp: jpg nonclient_003.jpg (20,7 KB, 52x aufgerufen)
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)

Geändert von s.h.a.r.k (30. Dez 2010 um 14:28 Uhr) Grund: Titel angepasst
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.415 Beiträge
 
Delphi XE5 Professional
 
#2

AW: Client Area von Formular disablen

  Alt 30. Dez 2010, 14:51
Die Antwort ist hier:
http://delphihaven.wordpress.com/201...stom-titlebar/

MSDN:
http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx

DWM gibts erst ab Vista!
Für XP musst du das anders lösen.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#3

AW: Client Area von Formular disablen

  Alt 30. Dez 2010, 15:03
Ich glaube nicht, dass da die Lösung zu finden sind, auf die ich anspiele. Ich habe nich vor in den Non-Client-Bereich etwas zu zeichnen. Ich will nur den Client-Bereich "sperren" -- als Beispiel dazu habe ich ja das mit dem Panel erwähnt. Befinden sich Komponenten auf dem Panel und ich setze die Enabled-Eigenschaft des Panels auf False, so kann ich die Komponenten darauf nicht mehr nutzen. Das gleiche will ich für das Formular haben, allerdings soll es noch möglich sein, das Formular in der Position und größe zu ändern.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#4

AW: Client Area von Formular disablen

  Alt 31. Dez 2010, 10:36
Moin,

mir ist nichts bekannt was genau das erreicht, da der Clientbereich bekanntlich kein eigenes Fenster ist.

Ein TPanel wäre in der Tat ein Lösungsansatz.

Aber wenn ich mir die Frage so anschaue, geht es doch darum alle Bedienelemente zu deaktivieren usw., oder? Warum dann nicht mit MSDN-Library durchsuchenEnumWindows über alle Kindfenster gehen und die eines nach dem anderen deaktivieren. Wenn dann bspw. noch das Problem wäre, daß einige Kindfenster bereits deaktiviert sind und du deshalb deren aktuellen Status speichern mußt, kannst du das entweder unkompliziert über eine Liste in deinem Programm oder über Fenstereigenschaften (MSDN-Library durchsuchenSetProp und MSDN-Library durchsuchenGetProp aus user32.dll) lösen.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#5

AW: Client Area von Formular disablen

  Alt 31. Dez 2010, 12:03
Das mit dem deaktivieren habe ich mir auch schon angeschaut, finde aber nicht, dass es eine schöne Lösung ist, eben aus besagten Gründen bzgl. evtl. schon deaktivieren Elementen. Wobei ich diese EnumWindows-Methode noch nicht kannte, die könnte die Sache einfacher machen. Ich habe dabei aber leider die Befürchtung, dass dieses Verhalten unter Umständen irgendwelche Seiteneffekte hervorrufen kann, z.B. wenn ich einen wichtigen Timer deaktivere. Für meinen speziellen Fall würde das schon klappen, aber unter Umständen nicht allgemeingültig.

Und TPanel will ich eigentlich nicht nutzen, da ein paar Programmierer evtl. folgendes machen: TForm(Button1.Parent).Caption := 'Test'; . Setze ich dynamisch ein Panel ein, so funktioniert dieser Quellcode evtl. nicht mehr. Ich weiß zwar nicht, wie oft sowas auftauchen kann, aber bei sowas bin ich dann doch gerne vorsichtig.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

AW: Client Area von Formular disablen

  Alt 31. Dez 2010, 12:14
Und wenn du einfach auf wm_nchittest reagierst und da hterror zurück gibst oder im schlimmsten Fall httransparent
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#7

AW: Client Area von Formular disablen

  Alt 31. Dez 2010, 12:16
z.B. wenn ich einen wichtigen Timer deaktivere.
Ein Timer ist kein Fenster!

Es geht also um eine Komponente?
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  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 16:19 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