Announcement

Collapse
No announcement yet.

TPageControl - Farben und Komponenten

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • TPageControl - Farben und Komponenten

    Hallo zusammen,

    mein(e) Problem(e) stellt sich wie folgt dar:
    Ich habe eine TPageControl im Formular mit mehreren TabSheets. Problem eins ist, dass ich die Farbe der TabSheets nicht ändern kann. Sie müssen auch keine unterschiedliche Farbe haben, einfach die des Formulars. Der nicht aktivierte Tab wird dabei immer brav in der korrekten Farbe dargestellt, werden der aktive in einem unschönen weiss daher kommt. (TabHeader und Sheet an sich) Wenn ich die OwnerDraw Property auf true setze stimmt zwar die Farbe, jedoch wird dann der Tab nichtmehr beschriftet. Wenn ich den Tabstyle auf Button oder so änder funktioniert das ja auch. Würde also gerne wissen was ich falsch mache und ich kann mir nicht vorstellen, dass ich extra wie hier im Forum schon gefunden die DrawTab Methode der PageControl bearbeiten muss.
    Problem 2 hängt damit zusammen: Ich habe auf den einzelnen TabSheets Komponenten plaziert in der Objekthierarschie auch brav auf dem Sheet liegen und beim Wechsel auch verschwinden. Jedoch kann ich leider nicht über PageControl.Page[i].Components[j] auf diese Zugreifen, da sie anscheinend keine Komponenten besitzen. Dies ist leider etwas unschön und ich würde gerne wissen, wie sich dies änder liesse, da ich noicht über alle Componenten der Form itarieren will, bei denen sie nämlich auftauchen. Im Zusammenhang mit Problem eins habe ich auf den Sheets ein Panel plaziert, welches die Komponenten leider auch nicht als Components aufnimmt und an der Farbgestaltung hat sich dabei auch nichts gebessert, da ich einen unschönen weissen Rand um das Panel auf dem Sheet hab.

    Lange Rede, kurz zusammengefasst:
    Wie stell ich die Farbe einer PageControl samt Tab(Sheets) ein?
    Wie weise ich Komponenten der Components-Liste des TabSheets (oder Panel, oder was weiss ich...) zu?

    Vielen Dank für die Hilfe im Vorraus.

  • #2
    Zu 1: Hast du XP-Themes für deine Anwendung aktiv? Falls ja is das "As-Designed" das die Regeln des Theming über sonstige Farbeinstellungen gewinnen.

    zu 2: Dazu müssen die Controls mit dem Tabsheet als Owner erzeugt werden. i.d.R. ist das Formular der Owner.

    Comment


    • #3
      Okay, dann wäre da die Frage, wie ich zur Entwicklerzeit einer Componente den Owner zuweise. Owner ist ja leider nicht im Objektinspektor zugänglich und in der OnCreateMethode des Formulars allen Componenten einen anderen Owner zuzuweisen finde ich etwas umständlich. Ich habe probiert in der Typ-Beschreibung des Formulars ein TMyPanel = class(TPanel) zu erzeugen und dort dann die Componenten in die Liste zu schreiben und bei der Typdeklarierrung der Form ein TMyPanel darauf zu legen, leider ging das in die Hosen.
      Gibt es hier eine einfache Möglichkeit oder muss ich über die Laufzeitzuweisung gehen?

      Gruss

      Comment


      • #4
        In der Entwicklerzeit wird immer das Formular der Owner!

        Comment


        • #5
          Okay, danke. Das wollte ich leider nicht hören...

          Comment


          • #6
            Was sind das für Komponenten ? Visuelle (Panels. Labels usw) ?

            Dann sollte doch statt
            Code:
            PageControl.Page[i].Components[j]
            folgendes gehen:
            Code:
            PageControl.Page[i].CONTROLS[j]
            Oder liege ich da falsch ?

            Grüße
            Tino
            Ich habs gleich!
            ... sagte der Programmierer.

            Comment


            • #7
              Stimmt

              Controls + ControlCount für die child-controls statt Components + ComponentCount

              Comment


              • #8
                Es handelt sich hierbei um ein Panel (das nichtmehr notwendig ist, danke für den Tipp mit den RuntimeThemes) auf dem TEdits, TLabels, TCheckboxes und TButtons liegen. Die Query und Tables müssen so nicht angesteuert werden können. Ich probier den Vorschlag mit den Controls gleich mal aus.

                Thx

                Comment


                • #9
                  Ha, wunderbar. Da sie jetzt auf dem Panel liegen, kann ich sie über das Panel mit Controls ansprechen. Müsste dann ja auch mit dem TabSheet funktionieren. Dann sag ich mal vielen Dank für die Hilfe.

                  Comment

                  Working...
                  X