Ein Panel, welches wenn's aktiviert ist, sich über eine anwählbare TWinControl legt, die runtergedimmed und deaktiviert wird (wie eine halbdurchsichtige Glasplatte). Auf dem Panel können Controls platziert werden, die man dann benutzen kann. Ergebnis einer Zusammenarbeit im englischen Forum, Hauptautor: aehimself. Hab alles so umgeschrieben, dass es bei mir unter Delphi2006 läuft, sollte unter Delphi7 evtl. auch direkt so funktionieren.
Im Design kann man das Panel einfach irgendwo platzieren und die Eigenschaften einstellen. Bei Ausführung kann das Panel dann über beliebige TWinControls gelegt werden.
Anleitung: DimPanel.dpk installieren, mit DemoDim.dpr ausprobieren. (Ja, ich habe kein extra Design-
Package gemacht

.
Hoffe, es funktioniert.
Renate
Edit:
Fix für Range-Check-Error: Man könnte Range-Check in DimPanel.dpk einfach ausstellen. Besser ist es, die AlphaBlend Routine in uDimPanel.pas (implemetation) durch folgende zu ersetzen:
Delphi-Quellcode:
//Replace shr 8 by div 256, so we don't get a range check error.
//Turn optimization on, so div 256 runs as fast as shr 8
//The optimizer sees that 256 is a power of 2.
{$IFOPT O- }
{$DEFINE O_MINUS }
{$O+ }
{$ENDIF }
{$IFOPT Q+}
{$DEFINE Q_PLUS}
{$Q-}
{$ENDIF}
//AlphaBlend Source and Target using alpha/255 on Source, 1-alpha/255 on Target
//and store result in target.
procedure Alphablend(Source, Target: TBitmap; Alpha: Byte);
var stride: integer;
ps, pt: PByte;
i: integer;
begin
Assert(Source.pixelformat=pf24bit);
Assert(Target.pixelformat=pf24bit);
Assert(Source.width=target.Width);
Assert(Source.height=target.Height);
stride:=((Source.Width * 24 + 31) and not 31) div 8;
ps:=Source.ScanLine[Source.Height-1];
pt:=Target.ScanLine[Target.Height-1];
for I := 1 to Source.Height*stride do
begin
pt^:=pt^ + (Alpha*(ps^-pt^)) div 256;
inc(pt);
inc(ps);
end;
end;
//Restore optimization to original
{$IFDEF O_MINUS}
{$O-}
{$UNDEF O_MINUS}
{$ENDIF}
{$IFDEF Q_PLUS}
{$Q+}
{$UNDEF Q_PLUS}
{$ENDIF}
Styles:
Das DimPanel flickert wie bekloppt, wenn man
VCL-Styles verwendet.
Einfacher "Fix": seBorder aus den Style-Elements für das Form herausnehmen.