Dynamische StyleExpression

18. Juli 2018 15:24

Hallo zusammen,
ich versuche mich gerade in Visual Studio Code.
Ich habe eine Page gebaut mit Sourcetable = Integer. Die Werte meiner Arrays berechne ich im OnopenPagetrigger.

Hier berechne ich auch immer eine Difference. Wenn diese Difference <> 0 ist, hätte ich gerne dieses Feld rot, wenn nicht dann soll das nichts passieren.
In meiner Funktion fülle ich das Array wie folgt:

Code:
        for i := 1 to 13 do
        begin
            Difference[i] := abs(PrePlan[i] - Current[i]);
            if Difference [i] <> 0 then
               StyleExp[i] := 'Unfavorable
            else
              StyleExp[i] := 'None'
        end;


Mein Feld habe ich wie folgt in der Page aufgebaut

Code:
                field(Difference; Difference[Number])
                {
                    CaptionML = DEU = 'Unterschied', ENU = 'Difference';
                    BlankZero = true;
                    DecimalPlaces = 0 : 5;
                    Style = Attention;
                    StyleExpr = StyleExp[Number];

                }


wenn ich dann die Page öffne kommt folgender Fehler:

Error compiling dynamic control expression: 'StyleExp[Number]' at index '8'. The error is: End of expression expected..

Im Internet habe den Fehler andere auch, aber nicht so wie bei mir.
Darf ich das denn überhaupt so machen?
Bis jetzt behelfe ich mir dass die 0en ja alle ausgeblendet werden und somit die Farbe egal ist.

Danke für die Hilfe

Grüße

Re: Dynamische StyleExpression

18. Juli 2018 15:29

Hallo,

Darf ich das denn überhaupt so machen?


C/AL lässt da auch nicht zu. kann er auch nicht, weil er den Index Number zum Zeitpunkt der Ausgabe wahrscheinlich gar nicht sieht.

daher im OnAfterGetRecord und OnAfterGetCurrentRecord einer statischen Textvariable zuweisen.

Gruß Fiddi

Re: Dynamische StyleExpression

18. Juli 2018 16:57

Hallo fiddi,
danke für deine Schnelle Antwort.
Ich habe jetzt noch eine andere Frage.
Meine Page ist ja auf der Integer Tabelle aufgebaut.
Diese Page möchte ich gerne als Subform in eine andere Page einbauen. Das funktioniert aber nicht. Ich bekomme gar nichts angezeigt. Anders Subformen funktionieren.
Bei SourceTableview habe ich einen Filter gesetzt, dass ich keine Endlosschleife habe.
Geht denn das? Gibt es im Standard sowas zum abschauen?

Danke

Grüße

Re: Dynamische StyleExpression

24. Juli 2018 08:36

Guten Morgen,
ich habe jetzt mein Problem mal versucht auf die "alte" zu lösen. Heißt in der Entwicklungsumgebung bekomme ich das mit der Subpage hin.
Nur über AL nicht.
Hat hier jemand eine Idee?

Grüße

Re: Dynamische StyleExpression

24. Juli 2018 09:30

zeig doch mal bitte deinen Code, den du zur Implementierung in die Page verwendest (AL)

Re: Dynamische StyleExpression

24. Juli 2018 09:52

Ich habe die Page leider schon gelöscht weil ich es nicht hinbekommen habe.
Aber der Code sah so aus.
Code:
    layout
    {
        area(content)
        {
            part(MeinePage; Page_xy)
            {
//Ich habe hier keinen Link eingebaut, da ich das beim OnopenPage trigger mache.
//Funktioniert aber auch nicht mit einem Link. Die Page selber ist PageType = Listpart
            }
         }
    }

Danke für die Hilf!

Grüße

Re: Dynamische StyleExpression

24. Juli 2018 11:51

Hi,

Als aller erstes, würde ich dir empfehlen folgende Erweiterung in Visual Studio Code zu installieren: https://marketplace.visualstudio.com/items?itemName=waldo.crs-al-language-extension.
Diese erweitert die Snippets (wie z.B. tpage, ttable, usw.) damit du keine Eigenschaften vergisst anzugeben.

also im Grunde müsste deine Extension wie folgt aufgebaut sein, wenn ich dich richtig verstanden habe:

1. brauchst du eine neue Page(tpage), welche deine Subpage sein wird, diese sollte wie folgt aussehen:
Code:
page 50100 TestPage
{
    PageType = ListPart;
    SourceTable = TableSource;
   
    layout
    {
        area(Content)
        {
            repeater(GroupName)
            {
                field(MyField; FieldSource)
                {
                    ApplicationArea = All;
                }
            }
        }
    }
}


2. Musst du eine neue PageExtension erstellen (tpageext), welche deine gewünschte Page mit deiner neuen SubPage erweitert. Diese sollte ungefähr so aussehen:
Code:
pageextension 50100 TestPageExtension extends "Customer Card"
{
    layout
    {
        addafter(General) //Gibt an, wo deine SubPage hinzugefügt werden soll (hier: nach dem Register "Allgemein")
        {
            part(TestPage; TestPage) //gebe hier den Namen deiner Page an
            {
                //SubPageLink usw.
            }
        }
    }
}
Zuletzt geändert von d.larisch am 24. Juli 2018 13:39, insgesamt 1-mal geändert.

Re: Dynamische StyleExpression

24. Juli 2018 12:24

Hallo,
danke für die Antwort.
Brauch ich denn immer eine Page Extension für eine Page? Auch wenn ich die Page selber in VisualstudioCode anlege?

Grüße

Re: Dynamische StyleExpression

24. Juli 2018 13:25

An sich nicht nein, nur in diesem Fall wenn deine Page, die du in VS Code angelegt hast auch als SubPage funktionieren soll. Denn woher soll das System sonst wissen, wo diese Page dargestellt wird.
Ist in C/AL ja auch nicht anders. Wenn du eine neue SubPage machst, musst du diese ja auch erstmal an eine bestehende Page hängen.

Wenn du aber z.B. eine Übersicht machen willst, wie z.B. die "Customer List" und diese nicht über eine Action aufgerufen wird musst du darauf achten, dass du folgende Eigenschaften in deiner Page mitgibst:
Code:
ApplicationArea = All;
UsageCategory = Administration;

Dadurch wird die Page in der Suche und auch im Navigationsbereich sichtbar. (Dies gilt auch für andere Objekte)

Re: Dynamische StyleExpression

24. Juli 2018 13:43

Aber die Page in die meine Subpage soll, habe ich ja auch in VS schon angelegt.
Muss ich das dann troztdem über eine Page Extension machen?
In C/AL habe ich ja auch einfahc nur eine Page und da nehm ich als Part meine Page rein

Grüße

Re: Dynamische StyleExpression

24. Juli 2018 14:59

Alles klar jetzt weiß ich was du meinst :lol:

Da hast du Recht, dafür brauchst du dann nur deine SubPage mit PageType = ListPart:
Code:
page 50112 MyPage
{
    PageType = ListPart;
    SourceTable = Customer;
   
    layout
    {
        area(Content)
        {
            repeater(Test)
            {
                field(MyField; Name)
                {
                    ApplicationArea = All;
                }
            }
        }
    }
}


Und dann deine Page, in der die SubPage dargestellt werden soll:
Code:
page 50111 TestCard
{
    PageType = Card;
    ApplicationArea = All;
    UsageCategory = Administration;
   
    layout
    {
        area(Content)
        {
            part(MyPage; MyPage)
            {

            }
        }
    }
}

Re: Dynamische StyleExpression

24. Juli 2018 15:20

Hmmm. So habe ich das eigentlich auch aufgebaut.
Abgesehen von:
ApplicationArea = All;
UsageCategory = Administration;

Ich schau mir das morgen mal nochmal an.
Danke schonmal für die Unterstützung

Grüße

Re: Dynamische StyleExpression

24. Juli 2018 16:02

ich vermute stark, dass es tatsächlich daran lag:
Code:
ApplicationArea = All;
UsageCategory = Administration;

Re: Dynamische StyleExpression

26. Juli 2018 11:33

Hallo zusammen,
ich habe das leider immernoch nicht hinbekommen.
Meine Page sieht so aus.
Code:
page xy Page
{
    PageType = Document;
    ApplicationArea = All;
    UsageCategory = Administration;


    layout
    {
        area(content)
        {
            part(Test; testPage)
            {
            }
        }
    }

    actions
    {
        area(processing)
        {
            action(ActionName)
            {
                trigger OnAction();
                begin
                end;
            }
        }
    }

    var
        myInt: Integer;
}


Meine Subpage sieht so aus:
Code:
page xyz testpage
{
    PageType = ListPart;
    SourceTable = Integer;
    SourceTableView = where (Number = filter (1 .. 13));
    Editable = false;
    Caption = 'testpage';
    ApplicationArea = All;
    UsageCategory = Administration;

    layout
    {
        area(Content)
        {
            repeater(group)
            {
                field(Field0; Field0[Number])
                {
                    Caption = 'field0';
                    ApplicationArea = All;
                }
                field(Field1; Field1[Number])
                {
                    Captiopn = 'field1'
                    BlankZero = true;
                    DecimalPlaces = 0 : 5;
                    ApplicationArea = All;
                }
                field(Field2;Field2[Number])
                {
         
                    BlankZero = true;
                    DecimalPlaces = 0 : 5;
                    ApplicationArea = All;
                }

            }
        }
    }


und meine PageExtension so

Code:
        addafter(Control1234)
        {
            action(test)
            {
                trigger OnAction();
                begin
                    Page.Run(Page::Page);
                end;
            }
        }

Re: Dynamische StyleExpression

26. Juli 2018 11:55

Willst du nun eine Subpage innerhalb deiner Page oder willst du, dass deine Page sich über eine Action öffnet?

Re: Dynamische StyleExpression

26. Juli 2018 12:07

Hallo,
Ich möchte eine Action die eine Page öffnet.
Diese Page soll eine Subpage beinhalten. Eigentlich 2.

Grüße

Re: Dynamische StyleExpression

26. Juli 2018 14:52

ITNoob hat geschrieben:Hallo,
Ich möchte eine Action die eine Page öffnet.
Diese Page soll eine Subpage beinhalten. Eigentlich 2.

Grüße

Was funktioniert denn nicht? Sieht auf den ersten Blick erstmal richtig aus.

Re: Dynamische StyleExpression

26. Juli 2018 14:58

Wenn ich meine Page über die Action aufrufe bekomme ich eine leere Page. Es fehlt also die Subpage

Grüße

Re: Dynamische StyleExpression

26. Juli 2018 17:45

kannst du mal einen Screenshot machen?

Re: Dynamische StyleExpression

26. Juli 2018 20:52

Also das ist jetzt ein Document als Pageart. So sieht das aber mit allen anderen Pagearten auch aus.
Diese Page öffnet sich wenn ich über meine PageAction die Page aufrufe.
Wenn ich z.B. die V-Auftragszeilen einbinde dann kommt was. Allerdings keine Zeilen, obwohl des Auftraugszeilen gibt.
Hier kommt eben wie beschrieben gar nichts
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Dynamische StyleExpression

26. Juli 2018 20:54

Das ist noch die Page mit den VA-Zeilen
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Dynamische StyleExpression

27. Juli 2018 08:33

hmmm ok - lässt sich (für mich) jetzt schwer sagen, was hier schief liegt.
kannst du uns dein VS-Code-Ordner hochladen, dann können wir besser prüfen - wenn nicht ist es auch nicht so wild, dann versuchen wir (Dennis und ich), das mal nachzustellen (aber ich vermute, dass es bei uns klappt ..."hoffentlich")

Re: Dynamische StyleExpression

27. Juli 2018 10:32

Guten Morgen,
den Ordner kann ich leider nicht hochladen. Aber wäre klasse wenn ihr das nachstellen könntet.

Danke!

Grüße