Seite 1 von 1

Dynamische StyleExpression

Verfasst: 18. Juli 2018 15:24
von ITNoob
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

Verfasst: 18. Juli 2018 15:29
von fiddi
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

Verfasst: 18. Juli 2018 16:57
von ITNoob
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

Verfasst: 24. Juli 2018 08:36
von ITNoob
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

Verfasst: 24. Juli 2018 09:30
von sweikelt
zeig doch mal bitte deinen Code, den du zur Implementierung in die Page verwendest (AL)

Re: Dynamische StyleExpression

Verfasst: 24. Juli 2018 09:52
von ITNoob
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

Verfasst: 24. Juli 2018 11:51
von d.larisch
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.
            }
        }
    }
}

Re: Dynamische StyleExpression

Verfasst: 24. Juli 2018 12:24
von ITNoob
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

Verfasst: 24. Juli 2018 13:25
von d.larisch
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

Verfasst: 24. Juli 2018 13:43
von ITNoob
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

Verfasst: 24. Juli 2018 14:59
von d.larisch
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

Verfasst: 24. Juli 2018 15:20
von ITNoob
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

Verfasst: 24. Juli 2018 16:02
von sweikelt
ich vermute stark, dass es tatsächlich daran lag:
Code:
ApplicationArea = All;
UsageCategory = Administration;

Re: Dynamische StyleExpression

Verfasst: 26. Juli 2018 11:33
von ITNoob
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

Verfasst: 26. Juli 2018 11:55
von d.larisch
Willst du nun eine Subpage innerhalb deiner Page oder willst du, dass deine Page sich über eine Action öffnet?

Re: Dynamische StyleExpression

Verfasst: 26. Juli 2018 12:07
von ITNoob
Hallo,
Ich möchte eine Action die eine Page öffnet.
Diese Page soll eine Subpage beinhalten. Eigentlich 2.

Grüße

Re: Dynamische StyleExpression

Verfasst: 26. Juli 2018 14:52
von d.larisch
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

Verfasst: 26. Juli 2018 14:58
von ITNoob
Wenn ich meine Page über die Action aufrufe bekomme ich eine leere Page. Es fehlt also die Subpage

Grüße

Re: Dynamische StyleExpression

Verfasst: 26. Juli 2018 17:45
von sweikelt
kannst du mal einen Screenshot machen?

Re: Dynamische StyleExpression

Verfasst: 26. Juli 2018 20:52
von ITNoob
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

Re: Dynamische StyleExpression

Verfasst: 26. Juli 2018 20:54
von ITNoob
Das ist noch die Page mit den VA-Zeilen

Re: Dynamische StyleExpression

Verfasst: 27. Juli 2018 08:33
von sweikelt
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

Verfasst: 27. Juli 2018 10:32
von ITNoob
Guten Morgen,
den Ordner kann ich leider nicht hochladen. Aber wäre klasse wenn ihr das nachstellen könntet.

Danke!

Grüße