Hi ihr. Ich hab ein riesieges Problem. Ich habe auf meiner Form ein Image, was als Hintergrund fungiert. Auf meiner Form habe ich eine selbst erstellte Komponente TCustomControl. Diese habe ich wie folgt auf meine Form gebracht.
Delphi-Quellcode:
uhr := TNeqClock.Create(self);
uhr.visible := false;
uhr.Parent := self;
uhr.top := rect.Bottom -50;
uhr.Brush.Style := bsClear;
Um den Hintergrund meiner Form auch als Hintergrund meiner Komponente bei zu behalten, habe ich neben dem Brush.Style auch noch folgendes gemacht auf meiner Komponente gemacht:
Delphi-Quellcode:
procedure CreateParams(var Params: TCreateParams); override;
procedure WMEraseBkgnd(var Message: TWMEraseBkgnd); message
procedure TNeqClock.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.ExStyle := Params.ExStyle + WS_EX_Transparent;
end;
procedure TNeqClock.WMEraseBkgnd(var Message: TWmEraseBkgnd);
begin
// in this case, we want to intercept the windows message. if we would want to
// pass the message to the ancestor classes, we could use the keyword
// "inherited" without the procedure name. example:
inherited;
Message.Result := 1;
end;
Nun aber zu meinem Problem. Ich stelle eine Uhr mit einem Label dar. Welches sich logischerweise nach 1 Minute ändert. Sobald sich das Label ändert, wird jedoch die alte Zahl auf dem Hintergrund beibehalten, was die neue unleserlich macht. Das heisst sobald eine Minute vergangen ist kann man die Uhrzeit nicht mehr lesen.
Wenn ich jedoch die Komponente danach einmal auf visible := false und wieder auf true setzte funktioniert es wieder bis sich das Label ändert.
Was kann ich tun? Woran liegt es? Was passiert wenn ich meine Kompo auf visible false und true setzte, wieso funktioniert es danach?
Ich bitte um Hilfe!