Autor |
Beitrag |
zuma
      
Beiträge: 660
Erhaltene Danke: 21
Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
|
Verfasst: 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
      
Beiträge: 91
XP, Ubuntu
Delphi 7 SE, Delphi 2007
|
Verfasst: Mo 15.12.08 17:20
Also mit PageControl1.ActivePageIndex bekommste den aktiven Sheet....
Hoffe das hilft dir weiter....
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: 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 
      
Beiträge: 660
Erhaltene Danke: 21
Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
|
Verfasst: Di 16.12.08 12:59
Blackheart666 hat folgendes geschrieben : | 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
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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
      
Beiträge: 67
Erhaltene Danke: 1
|
Verfasst: 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 
      
Beiträge: 660
Erhaltene Danke: 21
Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
|
Verfasst: Di 16.12.08 13:18
Titel: Re: Tabsheet ausblenden?
pesi hat folgendes geschrieben : | 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
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: 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 
      
Beiträge: 660
Erhaltene Danke: 21
Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
|
Verfasst: 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 ...
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
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: 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
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 
      
Beiträge: 660
Erhaltene Danke: 21
Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
|
Verfasst: 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
|
Verfasst: 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 
      
Beiträge: 660
Erhaltene Danke: 21
Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
|
Verfasst: Di 16.12.08 16:43
Shion hat folgendes geschrieben : | 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!
|
|
|