![]() |
Re: PageControl - Tabs um Schließen-Symbol erweitern
Zitat:
|
Re: PageControl - Tabs um Schließen-Symbol erweitern
Hallo,
Zitat:
Hab den Code etwas überarbeitet, getestet mit D3 und Turbo Delphi:
Delphi-Quellcode:
procedure NewTab(PgC: TPagecontrol;TabPrefix : String);
var aRect : TRect; aPoint : TPoint; begin aPoint := PgC.ClientOrigin; aRect := Rect(aPoint.x,aPoint.y,aPoint.x + PgC.Width,aPoint.y + PgC.Height); GetCursorPos(aPoint); if PtInRect(aRect, aPoint) then with TTabSheet.Create(PgC) do begin PageControl := PgC; Name := 'Tab' + IntToStr(PgC.PageCount); Caption := TabPrefix + IntToStr(PgC.PageCount); PgC.ActivePage := PgC.Pages[PgC.PageCount-1]; end; end; //PageControl liegt direkt auf der Form procedure TForm1.FormDblClick(Sender: TObject); begin NewTab(PageControl1,'Unbenannt '); end; //PageControl ist einem Panel zugeordnet procedure TForm1.Panel1DblClick(Sender: TObject); begin NewTab(PageControl2,'New '); end; [OT] Zitat:
Ja, im wesentlichen mit D 3, startet sehr schnell(D3 = 2 Sek, Turbo Delphi 1/2 Minute). Bisher konnte ich mit D3 alle Anforderungen abdecken, gut, einiges erfordert einen größeren Aufwand, aber man lernt auch viel dabei. [/OT] |
Re: PageControl - Tabs um Schließen-Symbol erweitern
Jo, das war der entscheidende Hinweis - vielen dank! Die direkt darunter liegende Form oder Panel feuert das OnDblClick. In meinem Fall ein Panel auf der Form. Klappt wunderbar. Werde das mit dem obigen Code für den Close-Button kombinieren und
![]() |
AW: PageControl - Tabs um Schließen-Symbol erweitern
Hi,
ich muss mal diesen etwas älteren Thread hervorzaubern ;) Im Prinzip kann das PageControl hier nahezu alles, was ich möchte, aber es gibt (zumindest bei mir) ein kleines Problem. Wenn mehr Pages da sind, als angezeigt werden können, gibt es ja rechts diese netten Pfeile zum Durchscrollen (wenn multiline = False). Leider scrollen dabei nur die Tabs durch die Gegend und die X bleiben fix. Gerade bei unterschiedlichen breiten Tabs fällt das dann sehr unschön auf. Leider konnte ich kein Event finden, dass gefeuert wird, wenn dieses Scrollen stattfindet, um dann die X neu zu zeichnen - außer onDrawTab (wenn OwnerDraw = True) und dann war erstmal alles Schöne weg und ich befürchte, der Aufwand im onDrawTab alles selbst zu zeichnen, bis es so aussieht, wie es jetzt ist, ist wahrscheinlich nicht ganz gering. Davon ab würde dann das Ganze ja auch viel zu oft aufgerufen werden. Hat da vielleicht jemand eine Idee zu? LG, Frederic |
AW: PageControl - Tabs um Schließen-Symbol erweitern
Da hast du dein Event. ;)
Delphi-Quellcode:
type
TPageControl_ = class(TPageControl) private FOnScroll: TNotifyEvent; protected procedure WndProc(var Message: TMessage); override; published property OnScroll: TNotifyEvent read FOnScroll write FOnScroll default nil; end; TPageControl = class(TPageControl_); { TPageControl_ } procedure TPageControl_.WndProc(var Message: TMessage); begin inherited; if (Message.Msg = WM_HSCROLL) and Assigned(FOnScroll) then FOnScroll(Self); end; |
AW: PageControl - Tabs um Schließen-Symbol erweitern
Hi!
Super, danke! LG, Frederic |
AW: PageControl - Tabs um Schließen-Symbol erweitern
Zitat:
|
AW: PageControl - Tabs um Schließen-Symbol erweitern
Nö, pack das mal in die Formularunit mit dem PageControl.
|
AW: PageControl - Tabs um Schließen-Symbol erweitern
Zitat:
Delphi-Quellcode:
in das FormResize Event gepackt habe.
ReCalculateButtonPositions
Delphi-Quellcode:
procedure TMainForm.FormResize(Sender: TObject);
begin ReCalculateButtonPositions; end; |
AW: PageControl - Tabs um Schließen-Symbol erweitern
Hallo Leute,
ich probiere eine StringVariable auszuwerten: var ClickedTab: String; begin clickedTab:=TComponent(msg.LParam).Owner.GetNamePa th; showMessage(clickedTab); Hier wird die Variable clickedTab korrekt als Tabsheet1 angezeigt!! Wenn ich diese aber anschließend hier auswerten möchte mit if clickedTab = 'Tabsheet1' then showMessage('1'); wird mir einfach ShowMessage nicht angezeigt. Ich verzweifle noch, ich finde den Fehler nicht!!! Hat jemand eine Idee woran es liegen könnte? LG Harry |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:41 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