Hi,
deine Buttons hast du ja total an den Rand des Panels gesetzt, dann funktioniert es natürlich nicht. Wenn du dann vom Button auf das Formular kommst, wird kein
onMouseLeave mehr ausgelöst.
Dann musst du wohl auch bei jedem Button wieder
onMouseLeave abfragen oder du machst ein
onMouseEnter im Formular und prüfst dort, ob ein Panel noch rot ist und setzt es dann zurück.
Am einfachsten wär es natürlich wenn du einen gewissen Abstand zum Rand des Panels ein hältst.
Warum machst du überhaupt für jedes Panel ein eigenes
onMouseLeave und
onMouseEnter damit blähst du deinen Code doch nur unnötig auf? Es reicht doch, wenn du im
OT jeden die gleiche Prozedur zuweist.
Wenn du den Code abkürzen möchtest kannst du auch allen Controls auf den Panels das gleiche Ereignis zuweisen:
Delphi-Quellcode:
type
TMyControl= class(Controls.TControl);
procedure TForm1.FormShow(Sender: TObject);
var
i: integer;
begin
for i:= 0 to Panel1.ControlCount- 1 do
TMyControl(Panel1.Controls[i]).OnMouseLeave:= Panel1.OnMouseLeave;
end;
Dann musst du noch mit
if Sender is TPanel then
prüfen wer der Sender ist und den Code natürlich noch erweitern.