Documentation Index

Fetch the complete documentation index at: https://kb.moveit.at/llms.txt

Use this file to discover all available pages before exploring further.

Lösung Programmierung

Prev Next
This content is currently unavailable in English. You are viewing the default (German) version.

McrFmBMW

! Allgemein:

! Für die Variablen werden folgendene Präfixe verwenden:

! c .... Character

! b .... boolean

! ==================================================================

! Aufgabe 1:

! Beim Modell sollen, abhängig von der Modellreihe, nur die zulässigen Antworten angezeigt werden.

! ------------------------------------------------------------------

! => InmBMW: zur Initialisierung der cBMW-Variablen

! => VdmFpModellreihe: merken der Eingabe in Modellreihe

! => HdmFpModell: selektieren der zur eingegebenen Modellreihe passenden Antworten

! ==================================================================

! Aufgabe 2:

! Bei der Motorisierung sollen, abhängig vom Modell, nur die richtigen Motorisierungen angezeigt werden.

! ------------------------------------------------------------------

! => InmBMW: zur Initialisierung der cBMW-Variablen

! => VdmFpModell: Speichern des gewählten Modells in eine Variable

! => HdmFpMotorisierung: selektieren der zum eingegebenen Modell passenden Antwortgruppe für Motorisierung

! ==================================================================

! Aufgabe 3:

! Der Allradantrieb soll nur bei 3er Touring, 5er Touring und X5 auswählbar sein.

! ------------------------------------------------------------------

! siehe McrFmAusstatt

! ==================================================================

! Aufgabe 4:

! Wenn das Interieur Braun ist, darf das Cockpit nicht Leder Schwarz sein.

! ------------------------------------------------------------------

! siehe McrFmInnenraum

! ==================================================================

! Aufgabe 5:

! Metalliclackierung darf nur bei Limousine und Coupe auswählbar sein.

! ------------------------------------------------------------------

! siehe McrFmAusstattung

! ==================================================================

/*****************************************************************

Initialisierungsmakro der Startmaske FmBMW

*****************************************************************/

PROCEDURE InmBmw

! ================================================

! die Anweisung RUN public\lib.SetDefaultPreferences muss in das Inm-Makro der Startmaske.

! In Folgemasken muss es nicht.

! diese Prozedur enthält folgende Anweisungen:

! ADJUSTGAPATRUNTIME = true dient dazu, Lücken,

! die durch das Ausblenden einiger Parameter entstehen können, zu fülle

! RUNTIMECHANGE = true ermöglicht Änderungen der Maske während der Laufzeit

RUN public\lib.SetDefaultPreferences

!===========================================

!Für jeden Frageparameter, der im Weiteren benötigt wird, eine Variable anlegen und initialisieren,

!damit man später die eingegebenen Werte darin abspeichern kann.

!===========================================

cBMW = ""

cBMW.cModellreihe = ""

cBMW.cModell = ""

!===========================================

END !InmBMW

/*****************************************************************

Validierungsmakro für FpModellreihe

*****************************************************************/

! Aufgabe1:

! Beim Modell sollen, abhängig von der Modellreihe, nur die zulässigen Antworten angezeigt werden.

! Dazu muss ich mir hier in einer Variable merken, welche Modellreihe ausgewählt wurde,

! damit ich später im Unterdrückungsmakro von FpModell darauf zugreifen kann.

PROCEDURE VdmFpModellreihe

! gewählten Wert in eine Variable speichern

! ASKPRMID ist eine Systemvariable, die die ID des jeweiligen Fragenparameters speichert.

! EVAL gibt den darin enthaltenen Wert zurück

cBMW.cModellreihe = EVAL(ASKPRMID)

END

/*****************************************************************

Validierungsmakro für FpModell

*****************************************************************/

! Aufgabe 2:

! Bei der Motorisierung sollen, abhängig vom Modell, nur die richtigen Motorisierungen angezeigt werden.

! Dazu muss man sich hier im Validierungsmakro für FpModell das eingegebene Modell merken.

PROCEDURE VdmFpModell

cBMW.cModell = EVAL(ASKPRMID)

END

/*****************************************************************

Unterdrückungsmakro für FpModell

*****************************************************************/

! Aufgabe1:

! Beim Modell sollen, abhängig von der Modellreihe, nur die zulässigen Antworten angezeigt werden.

! Aus dem Validierungsmakro VdmFpModellreihe kennen wir die ausgewählte Modellreihe (cBMW.cModellreihe)

PROCEDURE HdmFpModell

VALIDANSWERS = TRUE !das wird benötigt, um die Funktion zum ein- bzw. ausblenden von Antworten zur Verfügung zu haben

! die ersten beiden Buchstaben der gewählten Modellreihe in der lokalen Variable cMr speichern

DEFINE VARIABLE cMr

cMr = LEFT$(cBMW.cModellreihe,2)

! je nach gewählter Modellreihe nur die relevanten Modelle anzeigen.

! z.B. für Modellreihe 3er zeige alle Modelle, die mit '3' beginnen

CASE cMr

WHEN "3e" DO VALIDANSWERS.SELECT = "3*"

WHEN "5e" DO VALIDANSWERS.SELECT = "5*"

WHEN "7e" DO VALIDANSWERS.SELECT = "7*"

WHEN "Z3" DO VALIDANSWERS.SELECT = "Z3"

WHEN "Z8" DO VALIDANSWERS.SELECT = "Z8"

WHEN "X5" DO VALIDANSWERS.SELECT = "X5*"

OTHERWISE

END

END

/*****************************************************************

Unterdrückungsmakro für FpMotorisierung

*****************************************************************/

! Aufgabe2:

! Bei Motorisierung sollen, abhängig vom gewählten Modell, nur die zulässige Antwortgruppe angezeigt werden.

! Aus dem Validierungsmakro VdmFpModell kennen wir das gewählte Modell (cBMW.cModell)

PROCEDURE HdmFpMotorisierung

VALIDANSWERGROUPS = true !das wird benötigt, um die Funktion zum ein- bzw. ausblenden von Antwortgruppen zur Verfügung zu haben

CASE cBMW.cModell

WHEN "3Cab" DO VALIDANSWERGROUPS.SELECT = "Pp3Cab"

WHEN "3Com" DO VALIDANSWERGROUPS.SELECT = "Pp3Com"

WHEN "3Cou" DO VALIDANSWERGROUPS.SELECT = "Pp3Cou"

WHEN "3Lim" DO VALIDANSWERGROUPS.SELECT = "Pp3Lim"

WHEN "3Tou" DO VALIDANSWERGROUPS.SELECT = "Pp3Tou"

WHEN "5Lim" DO VALIDANSWERGROUPS.SELECT = "Pp5Lim"

WHEN "5Tou" DO VALIDANSWERGROUPS.SELECT = "Pp5Tou"

WHEN "7Lim" DO VALIDANSWERGROUPS.SELECT = "Pp7Lim"

WHEN "X5" DO VALIDANSWERGROUPS.SELECT = "PpX5"

WHEN "Z3Cou" DO VALIDANSWERGROUPS.SELECT = "PpZ3C"

WHEN "Z3Roa" DO VALIDANSWERGROUPS.SELECT = "PpZ3R"

WHEN "Z8" DO VALIDANSWERGROUPS.SELECT = "PpZ8"

OTHERWISE

END

END

McrFmAusstatt

! ==================================================================

! Aufgabe 3:

! Der Allradantrieb soll nur bei 3er Touring, 5er Touring und X5 auswählbar sein.

! ------------------------------------------------------------------

! => InmAusstattung: Ein-/Ausblenden von FpAllrad und TextAllrad je nach gewähltem Modell

! => VdmFpAusstatt: zurücksetzen von FpAllrad auf 0 bei einem Modell, das Allrad nicht ermöglicht

! ==================================================================

! Aufgabe 5:

! Metalliclackierung darf nur bei Limousine und Coupe auswählbar sein.

! ------------------------------------------------------------------

! => HdmFpLackierung: Unterdrückungsmakro, um die Antwortgruppe Metalliclackierung gegebenenfalls auszublenden.

! ==================================================================

/*****************************************************************

Initialisierungsmakro der Maske FmAusstattung

*****************************************************************/

PROCEDURE InmAusstattung

! ==================================================================

! Aufgabe 3:

! Der Allradantrieb soll nur bei 3er Touring, 5er Touring und X5 auswählbar sein.

! ------------------------------------------------------------------

! Frageparameter können mithilfe der Eigenschaft Verwendungsart ein- bzw. ausgeblendet werden.

! ------------------------------------------------------------------

! mögliche Verwendungsarten:

! Eingabe, Anzeige, verborgen (als wäre es nicht da), Hintergrund (nicht sichtbar, aber es läuft im Hintergrund, alle Makros springen an)

! Eingabe = 1

! Anzeige = 2

! verborgen = 3

! Hintergurnd = 4

! -------------------------------------------------------------------

! mit useof kann ich die Verwendungsart eines Prüfparameters definieren

! ===================================================================

! Zur besseren Lesbarkeit eine lokale Variable für Modell anlegen. Diese Information kommt aus McrFmBMW

DEFINE VARIABLE cModell

cModell = cBMW.cModell

IF cModell = "3Tou" OR cModell = "5Tou" OR cModell = "X5" THEN

!Allradantrieb ist bei diesem Modell möglich

bAllradErlaubt = 1 ! Boolsche Variable, die abspeichert, ob Allrad erlaubt ist oder nicht

FpAllrad.USEOF = 1

TextAllrad.USEOF = 3

ELSE

! Allradantrieb ist bei diesem Modell nicht möglich

bAllradErlaubt = 0 !Boolsche Variable, die abgspeichert, ob Allrad erlaubt ist oder nicht

FpAllrad.USEOF = 3

TextAllrad.USEOF = 2

ENDIF

END !InmAusstattung

/*****************************************************************

Validierungsmakro von FpAusstatt

*****************************************************************/

PROCEDURE VdmFpAusstatt

! Für den Fall, dass nach einem Modellwechsel von einem Modell mit Allradmöglichkeit zu einem Modell ohne Allradmöglichkeit

! noch ein veraltetes eingeschaltetes Häkchen bei Allrad vorhanden ist,

! muss dieses gelöscht werden, der Wert also auf 0 gesetzt werden.

! Das funktioniert mit DISPLAYVALUE. Diese Eigenschaft ist allerding nur in einem Validierungsmakro gültig.

! Deshalb steht dieser Code im ersten angesteuerten Validierungsmakro der Maske.

IF bAllradErlaubt = FALSE THEN

FpAllrad.DISPLAYVALUE = 0 !Wert auf 0, also ausgeschaltet, zurücksetzen, so dass ein früheres 'Häkchen' gelöscht wird

ENDIF

END

PROCEDURE HdmFpLackierung

VALIDANSWERGROUPS = TRUE

! eine boolsche Variable, die true ist, wenn das gewählte Modell eine Limousine oder ein Coupe ist.

DEFINE VARIABLE bLimorCou

! boolsche Variable bLimorCou setzten

IF RIGHT$(cBMW.cModell,3) = "Lim" OR RIGHT$(cBMW.cModell,3) = "Cou" THEN

! es handelt sich entweder um eine Limousine oder um ein Coupe

bLimorCou = 1

ELSE

! es handelt weder um eine Limosine noch um ein Coupe -->

bLimorCou = 0

ENDIF

IF NOT bLimorCou THEN

! es handelt weder um eine Limosine noch um ein Coupe -->

! Mellaliclackierung in diesem Fall nicht erlaubt

VALIDANSWERGROUPS.EXCLUDE = "PpMetalliclack"

ENDIF

END

McrFmInnenraum

! ==================================================================

! Aufgabe 4:

! Wenn das Interieur Braun ist, darf das Cockpit nicht Leder Schwarz sein.

! ------------------------------------------------------------------

! => InmInnenraum: zur Initialisierung der cInnenraum-Variablen

! => VdmFpInterieurs: merken der Eingabe in Interieurs

! => HdmFpCockpit: gegebenenfalls Leder Schwarz als Antwort für FpCockpit ausblenden

! ==================================================================

/*****************************************************************

Initialisierungsmakro von FmInnenraum

*****************************************************************/

PROCEDURE InmInnenraum

cInnenraum = ""

cInnenraum.cInterieurs = ""

END !InmInnenraum

/*****************************************************************

Validierungsmakro für FpInterieurs

*****************************************************************/

! Aufgabe4:

! Wenn das Interieur Braun ist, darf das Cockpit nicht Leder Schwarz sein.

! Dazu muss ich mir hier in einer Variable merken, welches Interieurs gewählt wurde,

! damit ich später im Unterdrückungsmakro von FpCockpit darauf zugreifen kann.

PROCEDURE VdmFpInterieurs

cInnenraum.cInterieurs = EVAL(ASKPRMID)

END

/*****************************************************************

Unterdrückungsmakro für FpCockpit

*****************************************************************/

! Aufgabe 4

! Wenn das Interieur Braun ist, darf das Cockpit nicht Leder Schwarz sein.

PROCEDURE HdmFpCockpit

VALIDANSWERS = TRUE

IF cInnenraum.cInterieurs = "BR" THEN

VALIDANSWERS.EXCLUDE = "L"

ENDIF

END

McrFmSonderAusst

PROCEDURE InmFmSonderausstatt !Initialisierungsmakro des Fragemodells FmSonderausstatt

!ADJUSTGAPATRUNTIME = TRUE dient dazu, die Lücken, die durch das Ausblenden einiger Parameter entstehen können, zu füllen

ADJUSTGAPATRUNTIME = TRUE

!RUNTIMECHANGE = TRUE ermöglicht Änderungen der Maske während der Laufzeit

RUNTIMECHANGE = TRUE

END !InmFmSonderausstatt