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
Thema durchsuchen
Ansicht
Themen-Optionen

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 4 von 4   « Erste     234   
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.149 Beiträge
 
Delphi 12 Athens
 
#31

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

  Alt 17. Feb 2023, 13:11
Was möchtest du wetten, dass das eine S nicht klein ist?
Delphi-Referenz durchsuchenSameText


Oder steht da wirklich nur der eine Komponentenname im Path?

Oder warum nicht mal ohne Strings?
if TComponent(msg.LParam).Owner is TabSheet1 then
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (17. Feb 2023 um 13:14 Uhr)
  Mit Zitat antworten Zitat
HCB

Registriert seit: 12. Feb 2020
136 Beiträge
 
Delphi 12 Athens
 
#32

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

  Alt 17. Feb 2023, 15:42
Danke Himitsu für deine Hilfe.

> Oder steht da wirklich nur der eine Komponentenname im Path?

Es steht nur Tabsheet1 in der Variable ClickedTab, siehe screeshot.

>if TComponent(msg.LParam).Owner is TabSheet1 then

lässt sich nicht kompileren wegen Fehler, siehe Screenshot.

Irgendwie merkwürdig. Hat jemand vielleicht noch eine Idee?

LG Harry
  Mit Zitat antworten Zitat
HCB

Registriert seit: 12. Feb 2020
136 Beiträge
 
Delphi 12 Athens
 
#33

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

  Alt 17. Feb 2023, 15:44
So jetzt aber mit Anhang, sorry.
Miniaturansicht angehängter Grafiken
tab_error.jpg   tabsheet.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.149 Beiträge
 
Delphi 12 Athens
 
#34

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

  Alt 17. Feb 2023, 16:03
ups = nicht is
(für Instanz/Variable, nicht Klasse/Typ)

Und nein, es steht nicht Tabsheet1 drin.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
HCB

Registriert seit: 12. Feb 2020
136 Beiträge
 
Delphi 12 Athens
 
#35

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

  Alt 17. Feb 2023, 16:42
Danke Himitsu für die schnelle Hilfe:
Ich seh den Wald vor lauter Bäume nicht, hab gar nicht so genau auf die Groß- und Kleinschreibung beim String geachtet (Tabsheet1 / TabSheet1) Wieder was zu gelernt.
Jetzt hab ich nur noch ein Problem, dass sich der Index verschiebt. Ich wollte den angeklickten Tab auf Visible:= false setzen, funktioniert bis zum letzten Tab, der dann Tabsheet1 wird, obwohl der Name Tabsheet3 ist.

procedure TfrmMain.UmDestroyControl(var msg: TMessage);
var ClickedTab: String;
begin
clickedTab:=TComponent(msg.LParam).Owner.GetNamePa th;
if clickedTab = 'TabSheet1' then TabSheet1.TabVisible:=false;
if clickedTab = 'TabSheet2' then TabSheet2.TabVisible:=false;
if clickedTab = 'TabSheet3' then TabSheet3.TabVisible:=false;
ReCalculateButtonPositions;
end;

Ich dachte es wäre etwas einfacher, den angeklickten Tab auf Visible:=false setzen und bei Bedarf wieder aktivieren. Aber es müsste Caption des Tabs ermittelt werden und nach der Caption und nicht nach Index den Tab schließen bzw. deaktivieren.

Vielleicht stehts du mir mit etwas Unterstützung zur Seite.

LG Harry
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.149 Beiträge
 
Delphi 12 Athens
 
#36

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

  Alt 17. Feb 2023, 17:54
Erstmal: benennt man natürlich seine Komponenten so, dass sie einem sagen, was sie machen.

.Name ist direkt ein Komponentenname.
Bei .GetNamePath muß man aufpassen, denn es können mehrere Namen sein.


Nochmal: Warum Strings, wenn du schon ein Objekt hast?

Bei Namen mußt du nunmal auf Groß-/Kleinschreibung achten,
ODER man vergleicht case-insensitiv.
-> = aka Delphi-Referenz durchsuchenSameStr versus Delphi-Referenz durchsuchenSameText

"TabSheet1" gibt es bestimmt als Variable/Feld in der Form-Klasse.
Im QuellCode (z.B. bei Variablen) ist Groß-/Kleinschreibung egal.
Außerdem werden Objektinstanzen optimaler, schneller und vorallem fehlerunanfälliger verglichen, als irgendwelche komische Strings.
Dann knallt auch der Compiler wunderschön, wenn es diese Variable garnicht mehr gibt, z.B. weil jemand diese Komponente entlich mal ordentlich benannt hat.
Und zusätzlich kann man mit einem Objektzeiger soooooooooo schön viele coole Dinge anfangen, was mit einem dummen String nicht so geht.

Delphi-Quellcode:
//var clickedTab: TComponent;
clickedTab := TComponent(msg.LParam).Owner;
if clickedTab = TabSheet1 then TabSheet1.TabVisible := False;
if clickedTab = TabSheet2 then TabSheet2.TabVisible := False;
if clickedTab = TabSheet3 then TabSheet3.TabVisible := False;

//if clickedTab = TabSheet1 then VERSUS if clickedTab.Name = 'TabSheet1' then
Delphi-Quellcode:
clickedTab := TComponent(msg.LParam).Owner;
if (clickedTab = TabSheet1) or (clickedTab = TabSheet2) or (clickedTab = TabSheet3) then
  TTabSheet(clickedTab).TabVisible := False;
Delphi-Quellcode:
clickedTab := TComponent(msg.LParam).Owner;
if clickedTab is TTabSheet then
  TTabSheet(clickedTab).TabVisible := False;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (17. Feb 2023 um 18:01 Uhr)
  Mit Zitat antworten Zitat
HCB

Registriert seit: 12. Feb 2020
136 Beiträge
 
Delphi 12 Athens
 
#37

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

  Alt 18. Feb 2023, 07:34
Hallo Himitsu,
vielen Dank nochmal für Deine Unterstützung. Ich bekomme das einfach nicht hin.
Sowohl
clickedTab := TComponent(msg.LParam).Owner;
if (clickedTab = TabSheet1) or (clickedTab = TabSheet2) or (clickedTab = TabSheet3) then
TTabSheet(clickedTab).TabVisible := False;
als auch
clickedTab := TComponent(msg.LParam).Owner;
if clickedTab is TTabSheet then
TTabSheet(clickedTab).TabVisible := False;

funktionieren nicht.
Ich muss mir wohl einen anderen Lösungsweg einfallen lassen, vielleicht probier ich es mal über MDI.

LG Harry
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.149 Beiträge
 
Delphi 12 Athens
 
#38

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

  Alt 18. Feb 2023, 08:31
Tja, rate mal, wofür ein Debugger da ist und was man jetzt damit macht.

Ich kann ja nur davon ausgehn, dass in msg.LParam wirklich ein TComponent ist und dessen Owner ein TTabSheet.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 4   « Erste     234   


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 10:52 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