In einer Delphi 2010-Anwendung mit Themen erlaubt ich zwei TPageControls haben (eine in der anderen) in einem Formular mit einem clMoneyGreen Hintergrund:Wie repariert man TPageControl Hintergrundfarbe ohne das Systemthema zu verlieren?
Die äußere Seite Steuerung korrekt sein Hintergrund mit der Farbe der zeichnen Übergeordnete Komponente, das Steuerelement für die innere Seite zeichnet jedoch seinen Hintergrund mit clBtnFace (rote Ellipse im Bild) anstelle des weißen Elements der übergeordneten Kontrolle (TTabSheet). Gibt es eine Möglichkeit, das zu beheben, ohne das Seitensteuerelement zu seinem klassischen Windows-Aussehen zurückzubringen (Windows-Thema verlieren)?
Alle Korrekturen, die ich in Google und hier auf Stack Overflow gefunden habe, beinhaltet OwnerDraw, die die Seitensteuerung ihre Theming verlieren lassen.
Ich habe versucht, neue Seite Steuerungskomponente von TPageControl mit einer Methode geerbt Erstellung der WM_ERASEBKGND Fenster Nachricht zu handhaben:
procedure TMyPageControl.WMEraseBkGnd(var Msg: TWMEraseBkGnd);
begin
if Parent is TCustomPageControl then
begin
Brush.Color := clWhite;
Windows.FillRect(Msg.dc, ClientRect, Brush.Handle);
Msg.Result := 1;
end
else
inherited;
end;
Es zeichnet den Hintergrund weiß aber einige andere nach WM_ERASEBKGND genannt Methode (ich vermute Twincontrol ist WM_PAINT-Methode) wird grau über den weißen Hintergrund neu gezeichnet.
Hinweis: Ich untersuche dies, weil ich Theming auf einer großen Anwendung portiert von Delphi 7, deshalb versuche ich, dieses Problem durch eine abgeleitete Komponente zu lösen: Ich kann alle 207 leicht suchen und ersetzen TPageControl-Vorkommen mit meiner neuen Klasse, aber die Platzierung von Panels hinter einigen von ihnen würde viel mehr Zeit erfordern.
Diese [embarcadero Seite] (http://qc.embarcadero.com/wc/qcain.aspx?d=80381) meldet immer noch den Fehler als geöffnet –
Übrigens, bitte lesen Sie diese Seite, um mehr zu erfahren Antworten akzeptieren: http://meta.stackexchange.com/questions/5234/ Danke –
Dank eines Freundes habe ich es geschafft, eine Delphi XE2-Installation in die Hände zu bekommen und die Seitenkontrolle funktioniert wie erwartet. Ich werde noch ein bisschen warten, wenn niemand anderes die Frage beantwortet, werde ich Ihre Antwort wählen. –