Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - TabSheet ändern Hintergrund bei Parent-Wechsel


matze - Sa 23.10.10 23:43
Titel: TabSheet ändern Hintergrund bei Parent-Wechsel
Hallo,

Ich habe ein Problem mit einem TabSheet.

Folgende Ausgangssituation:
Ich habe ein Formular, auf welchem dynamisch Komponenten in einem PageControl also in Tabs angeordnet werden.
Nun muss ich leider einmal dieses PageControl per Zuweisung der Parent-Eigenschaft von "seinem" Formular auf das Hauptformular "verlegen":

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TfrmMain.CreateEmbeddedEditForm;
begin
  fEditForm := TfrmObjectEdit.Create(pnlMain);
  fEditForm.pgcTabs.Parent := pnlMain;
  fEditForm.pgcTabs.Align := alClient;
end;

Dabei passiert aber etwas komisches: Normalerweise wird von WinXP in den Hintergrund eines TabSheets ein Verlauf gezeichnet. Wenn ich nun das PageControl mit dem obigen Code verlege, bekommt das PageControl aber einen grauen Hintergrund: (oben im Bild)
screenshotTabs

Das ist nur ein optischer Fehler, aber ich würde das gerne abstellen.
Kann mir jemand helfen?
Wie bekomme ich das TabSheet dazu, wieder normal auszusehen (wie unten im Bild)?

Danke,
Matze


jaenicke - Sa 23.10.10 23:51

Ich kann das nicht reproduzieren. :gruebel:

Weder mit XP noch mit Vista oder 7, egal ob ich das Formular dynamisch erzeuge oder nicht. Alles sieht bei mir korrekt aus. :nixweiss:

Mit welchem Delphi arbeitest du dabei? 2009? Das habe ich leider nicht da grad.

Kannst du vielleicht eine kleine Demo inkl. Exe anhängen?


matze - So 24.10.10 13:11

Oh Mann, ich steh echt auf dem Schlauch und finde den Bug nicht.
Man sieht das auch nur unter WinXP. Unter Vista funktionierts einwandfrei.

Ich habe einfach aus meinem Projekt alles möglich rausgelöscht was nicht relevant war.

Im Anhang gibts nun die Exe und das komplette Projekt.
Vielleicht kannst du ja mal drüberschauen.


jaenicke - So 24.10.10 13:20

Das liegt offenbar an deiner Delphiversion oder an madExcept (das habe ich auf dem virtuellen Testrechner mit TD und XP nicht drauf).

Denn wenn ich es ohne die madExcept Units mit Turbo Delphi kompiliere, tritt der Fehler nicht auf (mit deiner Exe aber schon).

Further investigation follows... ;-)

// EDIT:
Turbo Delphi, Delphi 2007, Delphi 2010, Delphi XE: der Fehler tritt nicht auf.
--> Ich tippe auf madExcept...

// EDIT2:
Nein, ich habe gerade madExcept installiert, der Fehler tritt bei Delphi 2007 zumindest nicht auf. :nixweiss:


matze - So 24.10.10 13:35

Hmmm... OK dann habe ich wohl nichts offensichtliches falsch gemacht.
Ich danke dir schonmal, dass du dir es weiter anschauen magst.

Wenn deine Untersuchungen nix ergeben ist das wie gesagt nicht schlimm, denn es ist ja nur ein kleines grafisches Problem.


matze - So 24.10.10 13:42

HALT. STOP.

Ich hab das Problem gelöst. Also nicht ich, sondern Andreas Hausladen mit seinem VCL Fix Pack.

Aber danke dir trotzdem!

Liebe Grüße
Matze