Registriert seit: 26. Mai 2004
3.159 Beiträge
|
AW: Client Area von Formular disablen
31. Dez 2010, 13:35
Ich sollte wohl noch den Sinn des ganzen erklären, da eine einfache Lösung wohl direkt nicht zu existieren scheint. Und zwar programmiere ich ein Overlay-Fenster, welches sich (semitransparent) über das "Parent"-Fenster legt. Beispielanwendung dafür wäre z.B. ein Ladescreen, oder von mir aus auch ein Login-Screen. Der Borderstyle des Overlays ist bsNone und das Overlay-Formular ist genau so groß, wie der Client-Bereich der darunter liegenden Form. Beide Formulare sollen fokusierbar sein, sodass auf dem Overlay gearbeitet werden und das Hauptformular verschoben bzw. in der Größe verändert werden kann -- das Overlay-Formular setzt automatisch immer die exakte Größe und Position, sodass es immer den Client-Bereich überdeckt.
Nun ist es aber eben so, dass wenn ich dann auf das "Parent"-Window klicke ich den Fokus auf die Controls dort setze, d.h. ein User kann mit Tab etc. den Fokus ändern und evtl. ungewünschte Aktionen ausführen. Im Falle eines Ladescreens wäre sowas unter Umständen sehr fatal, da die Parent-Form ja dann auf Daten arbeiten will, die erst geladen werden. Ein anderes Problem wären Shortcuts, aber um das Problem habe ich mich noch nicht gekümmert. So viel zu meinen Gedankengängen bisher.
Daher eben auch die Idee, die Client Area zu "sperren", analog zu den Elementen auf einem Panel, die gesperrt sind, wenn ich Panel.Enabled auf False setze.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
|