Erstellen eines TPageControl in Delphi 7

8

Ich weiß nicht, ob diese Frage hier beantwortet werden kann, aber ich hoffe es. Ich habe einen einfachen Texteditor in Delphi 7 geschrieben, der als meine primäre IDE zum Schreiben von C-Code unter Windows dient. Ich betreibe Windows in einer VM und ich brauchte etwas Licht. In jedem Fall wird ein TpageControl verwendet, das beim Öffnen oder Erstellen einer neuen Datei eine neue Registerkarte erhält. Ziemlich Standard. Jetzt hat das TPageControl unter Delphi keine flache Eigenschaft.

NEIN Ich meine nicht, den Tab-Stil auf tsButtons oder tsFlatButtons zu setzen

Die Rahmen können nicht auf "none" gesetzt werden und es sieht ziemlich schlecht aus, wenn Sie einen Texteditor in das Registersteuerelement einfügen.

Gibt es eine Möglichkeit, ein TpageControl flach zu machen?

BEARBEITEN :

Auf einem Open Source PageControl, das Flat unterstützt, habe ich Folgendes gefunden:

%Vor%

Die Sache ist, wenn ich etwas ähnliches auf der Hauptanwendung versuchte, wird es nicht funktionieren. Es wird nicht einmal kompiliert.

    
wonderer 26.06.2009, 13:08
quelle

4 Antworten

11

Wenn die Registerkarten als Schaltflächen gezeichnet werden, wird kein Rahmen um den Anzeigebereich gezeichnet. Legen Sie daher die Style -Eigenschaft auf tsButtons oder tsFlatButtons fest. (Für Nicht-VCL-Programmierer entspricht dies dem tcs_Buttons Fensterstil auf der Seite Registerkartensteuerung.)

Eine Alternative ist die Verwendung von TNotebook . Es hält Seiten, aber es macht überhaupt keine Malerei. Sie müssten die Registerkarten selbst bereitstellen, z. B. indem Sie die Höhe des Registersteuerelements der Höhe der Registerkarten anpassen oder ein TTabSet verwenden. ( TTabSet ist in Delphi 2005 verfügbar; Delphi 7 bin mir nicht sicher.)

In Bezug auf den gefundenen Code wäre es hilfreich, wenn Sie angeben, warum er nicht kompiliert wird oder ob Sie einen Link zu der Stelle angegeben haben, an der Sie ihn gefunden haben, da der Kompilierungsfehler darauf zurückzuführen ist, dass er sich auf Felder oder Eigenschaften bezieht die benutzerdefinierte Klasse statt der Aktie. Hier ist, was Sie versuchen können, es in Ihren eigenen Code zu schreiben, ohne ein benutzerdefiniertes Steuerelement zu schreiben.

Machen Sie zwei neue Deklarationen in Ihrer Form wie folgt:

%Vor%

Weisen Sie diese Methode im OnCreate -Ereignishandler des Formulars der WindowProc -Eigenschaft des Seitensteuerelements zu:

%Vor%

Implementieren Sie diese Methode und behandeln Sie die tcm_AdjustRect messagesage:

%Vor%

Sie können die anderen drei Fälle ausfüllen, wenn Sie sie benötigen. Tcm_AdjustRect ist eine Nachrichten-ID, die in der Unit CommCtrl deklariert ist. Wenn Sie diese Nachricht nicht in dieser Einheit haben, deklarieren Sie sie selbst; sein Wert ist 4904.

Ich vermute, dass dies das Steuerelement nicht daran hindert, seine Grenzen zu zeichnen. Es bewirkt vielmehr, dass das enthaltene TTabSheet ein wenig größer wird und die Grenzen überdeckt.

    
Rob Kennedy 26.06.2009, 14:38
quelle
2

Sie könnten immer eine kommerzielle Lösung verwenden. Ich würde Raize-Komponenten wärmstens empfehlen, die flache TPageControls mit Tabs unterstützen. Das Komponentenset ist sehr einfach zu bedienen und unterstützt zahlreiche visuelle Verbesserungen, die meiner Meinung nach für jede Anwendung ein besseres Gefühl geben.

    
skamradt 26.06.2009 15:54
quelle
1

Lassen Sie zwei TPageControl s fallen, eins mit Tabs als Tab s, mit einer globalen Höhe gleich den Tabs und eins mit flatbuttons und Tabvisible Eigenschaften auf false gesetzt, die unter dem ersten ausgerichtet wären. Stellen Sie dann sicher, dass die Tab-Änderung am ersten TPagecontrol bewirkt, dass sich die Tabs auch im zweiten ändern.

    
Stéphane79 09.05.2013 08:53
quelle
0

Ich benutze Delphi XE8 und der folgende scheint den Trick zu machen:

%Vor%     
uberlaufer 14.10.2015 14:11
quelle

Tags und Links