Autor Beitrag
zuma
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 660
Erhaltene Danke: 21

Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
BeitragVerfasst: Mo 15.12.08 17:14 
Ich finde in der TPagecontrol keine Einstellung/Eigenschaft o.ä mit der ich herausfinden kann, auf welches Tabsheet der User wechseln möchte.
Hintergrund: Möchte den Wechsel auf eine der Tabsheets nur erlauben, wenn der User dazu eine Berechtigung hat, wenn nicht, will ich im das 'changen' verbieten und ihn statt dessen auf der activePage lassen.

Gibts da keine Methode/Einstellung für oder find ichs bloss nich ?

_________________
Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
Bob Murphy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 91

XP, Ubuntu
Delphi 7 SE, Delphi 2007
BeitragVerfasst: Mo 15.12.08 17:20 
Also mit PageControl1.ActivePageIndex bekommste den aktiven Sheet....
Hoffe das hilft dir weiter....
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 15.12.08 17:31 
Es gibt das Event OnChanging. Wenn du darin AllowChange (oder so ähnlich) auf False setzt, dann kann der Wechsel der Seite nicht stattfinden. Wenn du abhängig vom Zieltab den Wechsel verbieten willst, dann speichere in OnChanging den letzten Tab und wechsele in OnChange ggf. zurück.

OnChanging wird vor dem Wechsel der Seite aufgerufen, TabIndex enthält noch den alten Index und das Verlassen dieses Tabs kann mit AllowChange verhindert werden.
OnChange wird nach dem Wechsel der Seite aufgerufen, TabIndex enthält den neuen Index.

// EDIT:
ActivePage und ActivePageIndex gibts natürlich auch, ersteres enthält die aktuelle Seite, der Index wird nur aus diesem Wert ausgelesen und gibt den Index dieser Seite an.
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Mo 15.12.08 19:44 
Zusammengefasst heisst das wenn du dich mit den Eigenenschaften
eines Pagecontrol auseinander gesetzt hättest wärest du allein auf die Antworten deiner Frage gestossen.

_________________
Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
zuma Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 660
Erhaltene Danke: 21

Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
BeitragVerfasst: Di 16.12.08 12:59 
user profile iconBlackheart666 hat folgendes geschrieben Zum zitierten Posting springen:
Zusammengefasst heisst das wenn du dich mit den Eigenenschaften
eines Pagecontrol auseinander gesetzt hättest wärest du allein auf die Antworten deiner Frage gestossen.


Das habe ich getan, ich glaube aber meine Problemstellung wurde nicht verstanden.
Welches die aktive Seite ist, auf welche Seite gewechselt wurde, weiss ich. Nun möchte ich aber nicht, das auf die entsprechende Seite gewechselt wird (auch kein kurzzeitiges Anzeigen), bevor ich nicht eine entsprechende Prüfung der Nutzerrechte gemacht habe.
Das ich mit dem 'kleinen' Umweg über onchange/onchanging ist mir klar, ich dachte nur, das es evtl. da wielleicht etwas 'einfaches' gäbe.
Naja, dann eben über den 'umständlichen' Weg

Trotzdem danke fürs mitdenken

_________________
Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 16.12.08 13:07 
Wenn dir das nicht reicht, dann musst du schnell eine eigene Komponente von TPageControl ableiten und ein neues Ereignis einbauen. Das sind ja nur ein paar Zeilen.
pesi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 67
Erhaltene Danke: 1



BeitragVerfasst: Di 16.12.08 13:13 
Titel: Tabsheet ausblenden?
Passt vielleicht nicht in Dein Konzept, aber schon mal darüber nachgedacht, das "verbotene" Tabsheets erst gar nicht angezeigt werden, wenn Du festgestellt hast, dass sie der aktuelle Benutzer sie sowieso nicht verwenden darf?
zuma Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 660
Erhaltene Danke: 21

Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
BeitragVerfasst: Di 16.12.08 13:18 
Titel: Re: Tabsheet ausblenden?
user profile iconpesi hat folgendes geschrieben Zum zitierten Posting springen:
Passt vielleicht nicht in Dein Konzept, aber schon mal darüber nachgedacht, das "verbotene" Tabsheets erst gar nicht angezeigt werden, wenn Du festgestellt hast, dass sie der aktuelle Benutzer sie sowieso nicht verwenden darf?


war mein erster Gedanke (da schön einfach :)), aber passt leider nicht ins Konzept, da der User sehen soll, das er etwas nicht darf (verdammte Verkäufer, was die den Usern so alles einreden ... ;))

werde wohl was in der Richtung von Jaenicke's Vorschlag machen ... lass ich erstmal die kleinen grauen Männchen dran arbeiten und stürz mich auf was anderes zwischendurch

_________________
Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Di 16.12.08 13:42 
Wir selber benutzen die DevExpress Komponenten, www.devexpress.com
Da gibt es für einen Großteil der Standard Komponenten einen (meiner Meinung nach besseren) Ersatz, mit mehr Funktionen. (DBGrid, Eingabefelder, usw.)
U.a. gibt es eine Komponente TcxPageControl, wo man die einzelnen Tabsheets einzeln deaktivieren kann, so dass diese zwar sichtbar, aber nicht klickbar sind. Also ausgegraut, wie ein Disabled Edit oder sowas.

Vielleicht wäre das eine Alternative? Kosten allerdings etwas, die Komponenten.

_________________
PROGRAMMER: A device for converting coffee into software.
zuma Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 660
Erhaltene Danke: 21

Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
BeitragVerfasst: Di 16.12.08 13:46 
danke für den Tipp, leider darf ich aber keine Fremdkomponenten verwenden (wegen der evtl. Inkompatibilität bei Updates und natürlich auch wegen der Kosten).

Hätte gerne auch die DevExpress Komponenten, die sehen mir ganz komfortabel aus, aber ...
wie sag ichs meinem Chef ... :nixweiss:
naja, dann 'verschwende' ich eben sein Geld mit dem selber bauen von Kompo's, die es schon längst besser gibt ...

_________________
Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Di 16.12.08 13:52 
Inkompatibilität bei Updates..? Die einzige Inkompatibilität, die ich bisher kenne, ist dass die neuen Versionen nicht mehr mit Delphi <= 5 laufen.

Kannst deinem Chef ja mal vorrechnen, wie lange du für den Preis arbeiten kannst - und dann aufmalen, wie viele der Komponenten du in dieser Zeit selbst entwickelt hättest ;) Ich geh mal davon aus, dass sich dies an einer Hand abzählen lässt.

_________________
PROGRAMMER: A device for converting coffee into software.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 16.12.08 14:39 
Jedenfalls ist das nicht so einfach wie es aussieht. In Microsofts Implementierung fehlt eine Möglichkeit dafür, d.h. jede Komponente, die diese Controls als Basis benutzt, wird da Probleme haben.

Man könnte höchstens das Neuzeichnen nach der Botschaft TCN_SELCHANGING abfangen und verhindern bis beim TCN_SELCHANGE der Wechsel ggf. rückgängig gemacht wurde. Aber ich glaube da ist es besser das Flackern hinzunehmen.
zuma Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 660
Erhaltene Danke: 21

Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
BeitragVerfasst: Di 16.12.08 14:49 
naja, vielleicht ist das ja mal endlich ne Chance, meinen Chef
a) zum Kaufen von zusatzkompo's zu überreden
oder
b) ihn mal die Verkäufer bissl 'zusammen sche...en' zu lassen, damit die sich mal überlegen, was die da im Verkaufsgespräch so alles von sich geben

Vielen dank nochmal, zumindest hab ich nun bessere Argumentationshilfen bekommen ;)

_________________
Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
Shion
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Di 16.12.08 16:19 
wenn du das onchange zuläst aber dann nen grosses gruppenfeld um alle elemente ziehst und das notvisible dann kann er zwar das tabsheet öffnen welches aber leer ist. Müßte doch so in deinem sinne sein.
zuma Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 660
Erhaltene Danke: 21

Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
BeitragVerfasst: Di 16.12.08 16:43 
user profile iconShion hat folgendes geschrieben Zum zitierten Posting springen:
wenn du das onchange zuläst aber dann nen grosses gruppenfeld um alle elemente ziehst und das notvisible dann kann er zwar das tabsheet öffnen welches aber leer ist. Müßte doch so in deinem sinne sein.


hab's so ähnlich gelöst, nur halt die div. Groupboxen, Grids und Panels invisibled (auf eine groupbox um alle Elemente bin ich nich gekommen).
Naja, bin ja als alter Zocker fix mit Maus und Tastatur ... ;)

_________________
Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!