Autor Beitrag
MoreThanWords
Hält's aus hier
Beiträge: 16



BeitragVerfasst: Fr 20.06.03 12:23 
Hallo Zusammen

Hab eine grundsätzliche Frage möchte aber keine Lösungen in Form von Quelltext.

Folgendes Problem:
- Ich hab ein Programm mit mehreren Formulare, Feldern und Datenbankabfragen
- Auf diesen Formularen soll der Adminuser zur Laufzeit Regeln definieren können, dass z.B. User 1 im Feld nur Werte < 100 User 2 aber Werte >100 eingeben kann.
- Dies alles soll zur Laufzeit passieren.

Frage:
- Gibt es die Möglichkeit zur Laufzeit Funktionen für z.B. ein Editfeld anzulegen?
- Bzw. (vermultlich eleganter) gibt es die Möglichkeit, das editieren von Editfeldern in einem Übergeordneten Formular zu prüfen und zu unterbinden?
o Beispiel: Es gibt ein Formular in dem der AdminUser diese Regeln definiert welcher User was in welchem Formular in welchem Feld eintragen darf.
o Wenn nun ein weiterer Benutzer in Formular y das Feld x wird es durch das das übergeordnete Formular geprüft.

Wäre über Tips, Stichwörter unter denen man nachschlagen sollte sehr dankbar.

_________________
Mit dem PC kann man Probleme lösen, die man ohne nicht hätte.
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Fr 20.06.03 14:48 
Hallo,

na da hast du dir ja was vogenommen.

Also erst einmal solltest du jedem Edit Feld deines Projektes die selber Ereignisbehandlundsrutine für OnChange zuweisen (idealererweise Dynamisch beim Programmstert). Die Implementierte Procedure kann dann bestandteil eines beliebigen (Globalen) Objektes sein, auf welches du aus allen deinen Formularen zugreifen können musst.

In dieser Procedure kannst du über den Parameter Sender überprüfen um welches Edit Feld es sich handelt. Folgendes kleines Beispiel Ermittelt den Namen des Edit Feldes:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.Edit1Change(Sender: TObject);
begin
  IF (Sender IS tEdit) THEN
    ShowMessage(tEdit(Sender).Name);
end;

Du müsstest also, wo jedst das Edit-Feld identifizieren kannst, die Prarameter für dieses Feld (und diesen User) laden und entsprechend verarbeiten.
Je nachdem wie kompliziert die Regeln sind wird auch dieser Verarbeitungsmechanismus kompliziert oder eben nicht.

Gruß
Klabautermann