Einzelnen Beitrag anzeigen

Sidi61

Registriert seit: 13. Jun 2006
97 Beiträge
 
Delphi XE5 Professional
 
#7

AW: PageControl ohne Rahmen

  Alt 20. Mai 2017, 23:05
Hallo zusammen,

habe nun eine Lösung gefunden - allerdings nicht richtig verstanden

Im From die procedure TabWndProc deklarieren
Delphi-Quellcode:
private
    { Private-Deklarationen }
    procedure TabWndProc(var Msg: TMessage); //PageControl
Variable FOldTabProc deklarieren

Delphi-Quellcode:
var
  Form_Auftrag: TForm_Auftrag;
  FOldTabProc : TWndMethod; //PageControl
Implementation
In FormActivate die Tabs verstecken

Delphi-Quellcode:
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;
In FormCreate TabWndProc aufrufen

Delphi-Quellcode:
procedure TForm_Auftrag.FormCreate(Sender: TObject);
begin
  FOldTabProc := PageControl1.WindowProc; //PageControl
  PageControl1.WindowProc := TabWndProc; //PageControl
end;
um den Rahmen auszublenden

Delphi-Quellcode:
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;
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

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

Gruß
Sidi61
  Mit Zitat antworten Zitat