OKB-000244 | Verwendung von kaskadierenden Lookup-Tabellen

Betrifft: ab orgAnice CRM 2008

 

Frage: 

Was ist bei der Einrichtung von kaskadierenden Lookup-Tabellen zu beachten?

Antwort: 

– Die Controls müssen alle im gleichen Tabellenlayout sein !

– Das steuernde Control muss in der Liste der FormControls oberhalb stehen !

– Das steuernde Control darf keine editierbare Lookupliste sein !

– Das gesteuerte Control kann eine editierbare Lookupliste sein

OKB-000243 | Reagieren auf Arbeitsbereichswechsel

Betrifft: ab orgAnice Pi

Frage: 

Über welches OrgDataEvent / Command habe ich Zugriff auf den Wechsel des Arbeitsbereichs oder der Arbeitsbereichsgruppe?

Antwort: 

Zunächst muss man sagen, dass es weder einen Event noch einen CommandID-Parameter für den Wechsel von Arbeitsbereichen oder Arbeitsbereichsgruppen gibt. Denn es gibt nur CommandID-Parameter für fest in orgAnice eingebaute Befehle und Arbeitsbereiche bzw. Arbeitsbereichsgruppen gehören nicht dazu.

Allerdings gibt es doch einen Lösungsansatz: Beim Wechsel von Arbeitsbereichen oder Arbeitsbereichsgruppen wird mehrmals das Event „CommandAvailable“ abgefeuert. Hier setzen wir an und vergleichen, ob sich seit dem letzten Aufruf der aktive Arbeitsbereich geändert hat. Wenn das der Fall ist, setzen wir bspw. eine bestimmte Tabelle als aktiv und merken uns den Arbeitsbereich, damit beim erneuten Aufruf von CommandAvailable nicht wieder die Tabelle als aktiv gesetzt wird. Der Code, der in der Prozedur COrgDataEvents.mOrgData_CommandAvailable hinzugefügt werden muss (am besten ganz unten vor dem Exit Sub), sieht folgendermaßen aus:

' Wurde der Arbeitsbereich geändert?

    If Not wsLastActiveWorkspace Is Workspaces.ActiveWorkspace Then

        Set wsLastActiveWorkspace = Workspaces.ActiveWorkspace

        ' Je Arbeitsbereich eine bestimmte Tabelle aktivieren

        Select Case Workspaces.ActiveWorkspace.Name

            Case "Vorgaenge" ' Vorgänge und Aktivitäten

                ActiveTable = gTables.GetTable(dbtblAktivitäten)

            Case "Adressen" ' Adressmerkmale

                ActiveTable = gTables.GetTable(dbtblAdressmerkmale)

        End Select

    End If

Wir müssen nur noch im Deklarationsteil der Prozedur eine neue statische Variable deklarieren:

Static wsLastActiveWorkspace As Workspace

Das war es! In dem o.a. Beispiel wird beim Wechsel in den Arbeitsbereich „Vorgänge und Aktivitäten“ die Aktivitäten-Tabelle, beim Wechsel den Arbeitsbereich „Adressmerkmale“ die Adressmerkmale-Tabelle aktiviert. Natürlich können an dieser Stelle auch weitere Aktionen und eigene Prozeduren ausgeführt werden.

Für den Einsatz in einer Datenbank sollte natürlich eine eigene CSTM_COrgDataEvents-Klasse erstellt werden.

OKB-000242 | Verwendung der Abbildungslisten

Frage: 

Wie werden die Abbildungslisten verwendet, um Symbole in Listenspalten oder Labels anzuzeigen?

Lösung: 

Um Symbole in Listenspalten oder Labels anzuzeigen müssen Sie folgendes beachten:

1.) Das Label bzw. die Spalte muss über den Objekt-Editor mit einer Abbildungsliste verknüpft werden.

2.) Welches Symbol angezeigt wird, wird über den Ausdruck gesteuert. Hier haben wir zwei Möglichkeiten: wir können das Symbol über seine Nummer oder seine Bezeichnung angeben:

a. Symbolnummer:

Fangen wir mit dem einfachsten an: Geben Sie als Ausdruck „1“ (ohne Anführungszeichen“) ein. In der Spalte wird das erste Symbol aus der Liste angezeigt.

Möchten Sie in Abhängigkeit von dem Inhalt eines Feldes ein Symbol anzeigen, dann können Sie die Funktion Iif verwenden:

Iif(Adressen->Status="Firmenkunde", 1, 0)

Steht also in dem Feld „Status“ der Wert „Firmenkunde“ wird das erste Symbol der gewählten Abbildungsliste angezeigt, sonst gar kein Symbol (denn die Abbildungsliste hat kein Symbol mit der Nummer 0)

b. Symbolbezeichnung:

Hat man mehrere Symbole, die man anzeigen möchte, so kann man zwar die Iif-Bedingung schachteln:

Iif(Adressen->Status="Firmenkunde", 1, Iif(Adressen->Status="Privat", 2, 0))

Das wird aber leicht unübersichtlich. Deswegen können die Symbole auch über ihre Bezeichnung angesprochen werden. Dazu muss in der Abbildungsliste jedem Symbol die Eigenschaft „Key“ vergeben werden. Dort tragen Sie am besten den Feldinhalt ein (in unserem Beispiel also bei dem ersten Symbol „Firmenkunde“, bei dem zweiten „Privat“ ein)

Dann reicht es die Spalte einfach mit dem Datenbankfeld zu verbinden uns schon sieht man bei jedem Datensatz das passende Symbol.

OKB-000241 | Hintergrundfarbe von Tabellenlayouts

Frage: 

Wie kann ich die Hintergrundfarbe eines Tabellenlayouts ändern?

Lösung: 

die Möglichkeit die Hintergrundfarbe eines Tabellenlayouts zu ändern, besteht nicht direkt (es gibt keine Einstellung „Hintergrundfarbe“ bei den Tabellenlayouts), sondern nur über einen Trick:

1.) Erstellen Sie mit einem Grafikprogramm ein 1 Pixel großes Bild der gewünschten Farbe und speichern Sie es als BMP-Datei ab.

2.) Erstellen Sie in orgAnice im Konfigurationsmodus unter „Anwendungs-Objekte – Abbildungslisten“ eine neue Abbildungsliste „Hintergruende“.

3.) Fügen Sie der Liste das gespeicherte Bild hinzu.

4.) Erstellen Sie in dem Tabellenlayout, dessen Hintergrundfarbe Sie verändern möchten ein neues Steuerelement vom Typ „Label“.

5.) Wählen Sie in den Eigenschaften des Labels als die Abbildungsliste die neue Liste „Hintergruende“ aus und tragen Sie als Ausdruck „1“ ein (ohne Anführungszeichen, die 1 steht für das 1. Element in der Liste).

6.) Ziehen Sie mit der Maus das Label so groß, dass es das gesamte Tabellenlayout ausfüllt. Sie können die Größe und die Position auch über den Objekt-Editor bestimmen.

Das war es – nach dem Umschalten in den Benutzermodus sehen Sie das Ergebnis.