AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi PageControl - Tabs um Schließen-Symbol erweitern

PageControl - Tabs um Schließen-Symbol erweitern

Ein Thema von Balu der Bär · begonnen am 15. Okt 2006 · letzter Beitrag vom 18. Feb 2023
Antwort Antwort
Seite 3 von 4     123 4   
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#21

Re: PageControl - Tabs um Schließen-Symbol erweitern

  Alt 30. Jul 2009, 08:45
Zitat von uwewo:
Delphi-Quellcode:
//Notlösung, da kA wie man das TRect manuell setzt um den Reiter zu verbreitern:
PageControl1.Pages[PageIndex].Caption := PageControl1.Pages[PageIndex].Caption + ' ';
PageControl.TabWidth
Damit kann man aber nicht verschiedene Breiten festlegen.
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#22

Re: PageControl - Tabs um Schließen-Symbol erweitern

  Alt 30. Jul 2009, 18:08
Hallo,
Zitat von anse:
Bei mir feuert die Form kein OnMouseDown wenn ich auf eine Komponente - egal welche und egal an welcher Stelle ich klicke. (D11)
da muss ich Dir zustimmen wenn Du meinen Code so genommen hast, meine vorgeschlagene Berechnung der Koordinaten ist falsch. Bleibe aber bei der Aussage, der Mausklick in dem leeren Bereich rechts neben den Tabs wird an das Parent-Element weitergereicht. Das Parent-Element kann die Form oder z.B ein Panel sein.

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 von anse:
Hey Lannes, Grüße nach Münster aus Nienberge (bzw. Neuenkirchen privat)
(ähm, arbeitest du wirklich noch mit Delphi 3 (siehe dein Profil)?)
Grüße zurück, ist ja hier um die Ecke, reicht für einen Abendspaziergang
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]
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Benutzerbild von anse
anse

Registriert seit: 30. Okt 2006
Ort: Neuenkirchen
189 Beiträge
 
Delphi 11 Alexandria
 
#23

Re: PageControl - Tabs um Schließen-Symbol erweitern

  Alt 30. Jul 2009, 23:13
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 hier einbauen.
Ansgar Becker
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#24

AW: PageControl - Tabs um Schließen-Symbol erweitern

  Alt 11. Mär 2011, 01:19
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
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von Björn Ole
Björn Ole

Registriert seit: 10. Jul 2008
166 Beiträge
 
Delphi XE Professional
 
#25

AW: PageControl - Tabs um Schließen-Symbol erweitern

  Alt 19. Mär 2011, 17:47
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;
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#26

AW: PageControl - Tabs um Schließen-Symbol erweitern

  Alt 19. Mär 2011, 17:48
Hi!

Super, danke!


LG, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von Back2Code
Back2Code

Registriert seit: 6. Feb 2012
Ort: Deutschland
272 Beiträge
 
Delphi XE7 Professional
 
#27

AW: PageControl - Tabs um Schließen-Symbol erweitern

  Alt 12. Jan 2015, 13:45
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;
Soll das in die Vcl.ComCtrls Unit??
00111100001100110010000001000100011001010110110001 1100000110100001101001
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.535 Beiträge
 
Delphi 11 Alexandria
 
#28

AW: PageControl - Tabs um Schließen-Symbol erweitern

  Alt 12. Jan 2015, 13:54
Nö, pack das mal in die Formularunit mit dem PageControl.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Back2Code
Back2Code

Registriert seit: 6. Feb 2012
Ort: Deutschland
272 Beiträge
 
Delphi XE7 Professional
 
#29

AW: PageControl - Tabs um Schließen-Symbol erweitern

  Alt 12. Jan 2015, 14:35
Nö, pack das mal in die Formularunit mit dem PageControl.
Habs jetzt anders gemacht und zwar indem ich ReCalculateButtonPositions in das FormResize Event gepackt habe.

Delphi-Quellcode:
procedure TMainForm.FormResize(Sender: TObject);
begin
  ReCalculateButtonPositions;
end;
00111100001100110010000001000100011001010110110001 1100000110100001101001
  Mit Zitat antworten Zitat
HCB

Registriert seit: 12. Feb 2020
129 Beiträge
 
Delphi 12 Athens
 
#30

AW: PageControl - Tabs um Schließen-Symbol erweitern

  Alt 17. Feb 2023, 13:02
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
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz