![]() |
PageControl ohne Rahmen
Hallo zusammen,
ich möchte gern den Rahmen bei PageControl ausblenden. Hierzu gibt es einige Beiträge die aber letztendlich in die Richtung gehen den Style auf tsButton oder tsFlatButton zu stellen. Diese Lösung funktioniert bei mir allerdings nicht - liegt es an der Delphi-Verison, ich weiß es nicht. Ein Versuch mit PageControl1.BevelInner := bvNone führt zu einer Fehlermeldung da das proberty offensichtlich geschützt ist. Was kann ich machen - hat jemand eine Idee oder eine Lösung?? Liebe Grüße Sidi61 |
AW: PageControl ohne Rahmen
Zitat:
|
AW: PageControl ohne Rahmen
Style:= tsFlatButtons; // mit XE7 geht's
Oder:
Delphi-Quellcode:
unit Unit1;
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Winapi.CommCtrl, Vcl.ComCtrls; type TPageControl = class(Vcl.ComCtrls.TPageControl) private procedure TCMAdjustRect(var Msg: TMessage); message TCM_ADJUSTRECT; end; type TForm1 = class(TForm) PageControl1: TPageControl; TabSheet1: TTabSheet; TabSheet2: TTabSheet; private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TPageControl.TCMAdjustRect(var Msg: TMessage); begin inherited; if Msg.WParam = 0 then InflateRect(PRect(Msg.LParam)^, 4, 4) else InflateRect(PRect(Msg.LParam)^, -4, -4); end; end. |
AW: PageControl ohne Rahmen
Zitat:
|
AW: PageControl ohne Rahmen
Hallo t.roller,
beides habe ich schon versucht, kann es daran liegen das ich Benutzerdefinierte Stile aktiviert habe?? Gruß Sidi61 |
AW: PageControl ohne Rahmen
Zitat:
|
AW: PageControl ohne Rahmen
Hallo zusammen,
habe nun eine Lösung gefunden - allerdings nicht richtig verstanden :oops: Im From die procedure TabWndProc deklarieren
Delphi-Quellcode:
Variable FOldTabProc deklarieren
private
{ Private-Deklarationen } procedure TabWndProc(var Msg: TMessage); //PageControl
Delphi-Quellcode:
In FormActivate die Tabs verstecken
var
Form_Auftrag: TForm_Auftrag; FOldTabProc : TWndMethod; //PageControl Implementation
Delphi-Quellcode:
In FormCreate TabWndProc aufrufen
procedure TForm_Auftrag.FormActivate(Sender: TObject);
var P : integer; begin //Tabs verstecken for P := 0 to PageControl1.PageCount -1 do begin PageControl1.Pages[P].TabVisible := false; end; end;
Delphi-Quellcode:
um den Rahmen auszublenden
procedure TForm_Auftrag.FormCreate(Sender: TObject);
begin FOldTabProc := PageControl1.WindowProc; //PageControl PageControl1.WindowProc := TabWndProc; //PageControl end;
Delphi-Quellcode:
Das Blöde ist, es funktioniert nur mit Tabposition tpTop, für tpBottom habe ich keine funktionierende Einstellung gefunden. Bei Einstellung tpTop zur Entwurfszeit muß ich zur Laufzeit das PageControl ausrichten da es nach oben schnappt:shock:
procedure TForm_Auftrag.TabWndProc(var Msg: TMessage);
begin FOldTabProc(Msg); if Msg.Msg = tcm_AdjustRect then begin case PageControl1.TabPosition of tpTop: begin PRect(Msg.LParam)^.Left := 4; PRect(Msg.LParam)^.Right := PageControl1.ClientWidth; Dec(PRect(Msg.LParam)^.Top, 8); PRect(Msg.LParam)^.Bottom := PageControl1.ClientHeight; end; tpBottom: begin PRect(Msg.LParam)^.Left := 8; PRect(Msg.LParam)^.Right := PageControl1.ClientWidth; Dec(PRect(Msg.LParam)^.Top, 4); PRect(Msg.LParam)^.Bottom := PageControl1.ClientHeight; end; end; end; end; Was da in TabWndProc genau passiert habe ich nicht verstanden, vielleicht kann das einer erklären und findet auch eine Lösung für Einstellung tpBottom :gruebel: Gruß Sidi61 |
AW: PageControl ohne Rahmen
Warum die Tabs nicht schon zu Designtime ausblenden?
![]() Tja, und hier wird einfach der Bereich verboten, wo der Rahmen liegt, womit er nicht gezeichnet werden kann. Wieso es nur für Tabs oben oder unten funktioniert ... schau dir
Delphi-Quellcode:
an und rate mal warum. :zwinker:
case PageControl1.TabPosition of
PS: Wenn das verwendete Delphi schon VCL-Skins kann, dann einfach einen rahmenlosen Skin für sein PageControl basteln oder entsprechende Fremdkomponenten verwenden. |
AW: PageControl ohne Rahmen
Zitat:
Zitat:
Mit der gefundenen Lösung kann ich leben, da die Einstellungen jedoch von den im Netz zu findenden Beispielen abweicht habe ich die Befürchtung dass das Erscheinungsbild auf anderen Rechnern ggf. unterschiedlich sein kann. Gruß |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz