Fragen zum Button
Sascha Balke
Hallo Zusammen,ich habe via Optimizer einen Button in die Form 141 gebracht und diese mit einem weiteren Programmaufruf verknüpft. Das funktioniert auch alles wunderbar.
Es ist jedoch dabei die Frage der Beschriftung hochgekommen. Sofern ich es als Value fest vorgebe ist das kein Thema. Möchte man das ganze aber je eingestellte Sprache realisieren ist die feste Vorgabe nicht unbedingt von Vorteil.
Aus diesem Grund wollte ich das ganze über die hinterlegten Texte realisieren, nur wird der entsprechende Text nicht gezogen. Stattdessen steht
[@ETB00001] als Button-Beschriftung da.
Gibt es eine Möglichkeit die Beschriftung über die hinterlegten Texte zu steuern?
Button b1 = Button.CreateNew("EIU_B002");
b1.Value = "[@ETB00002]";
b1.ButtonType = Button.ButtonTypes.Caption;
b1.Left = 427;
b1.Top = 96;
pVal.Form.AddItem(b1);
pVal.Form.Update();
.
..
...
return true;
Des weiteren möchte ich, dass der Button erst dann anwählbar ist, wenn in einem belegbezogenem UDF auch ein x-beliebiger Wert steht.
Hat jemand von euch sowas schon mal realisiert und kann mir kurz auf die Sprünge helfen?
Danke & viele Grüße
Sascha
Fritz Schwendemann
Hallo SaschaAuf Deine erste Frage hätte ich auch gerne eine Antwort, habe das nämlich auch schon vermisst.
Die zweite ist einfach: Entweder prüfst Du beim Click-Ereignis, ob das UDF befüllt ist. Wenn nein, dann return false (event. mit Meldung). Oder Du arbeitest beim Button mit enabled = true bzw. false. Das ist aber etwas aufwendiger, weil Du an mehreren Stellen prüfen musst, ob das UDF befüllt ist.
Schönen Gruss
Fritz
Sascha Balke
Hallo Fritz,die Variante "Button mit enabled = true bzw. false" würde ich eigentlich bevorzugen, denn er soll erst dann anklickbar sein, wenn der Wert vorhanden ist. Dies passiert i.d.R. erst dann, wenn der Beleg hinzugefügt worden ist.
Hättest du da ein Beispiel für mich, wie ich es realisieren kann?
Danke & viele Grüße
Sascha
Fritz Schwendemann
Hallo SaschaAlso ich würde folgendes tun:
1. FormLoad-Event -> Button.enabled = false setzen
2. Regel für UDF erstellen (Beispiel UDF ist [u]nicht [/u]auf Hauptmaske):
Form Typ: -139
Item UID: U_Test
Before Event: ja
Event Typ: Validate
Code:
if (ExtendedTextEdit.GetFromUID(pVal.Form, "U_Test").Value.Length > 0)
{
Button.GetFromUID(pVal.Form.UDFForm, "Button_Test").Enabled = true;
}
else
{
Button.GetFromUID(pVal.Form.UDFForm, "Button_Test").Enabled = false;
}
return true;
Falls das UDF auf der Hauptmaske ist, dann wäre Form Typ in diesem Beispiel 139 und der Code:
if (ExtendedTextEdit.GetFromUID(pVal.Form.UDFForm, "U_Test").Value.Length > 0)
{
Button.GetFromUID(pVal.Form, "Button_Test").Enabled = true;
}
else
{
Button.GetFromUID(pVal.Form, "Button_Test").Enabled = false;
}
return true;
Wenn Dein UDF irgendwo noch programmgesteuert befüllt wird, dann müsstest Du auch diesen Event noch abfangen. Hoffe, das hilft Dir weiter.
Schönen Gruss
Fritz
Sascha Balke
Hallo Fritz,vielen Dank für deien Hinweis.
In der Zwischenzeit hatte ich folgendes versucht:
1. Regel
Button b1 = Button.CreateNew("EIU_B002");
b1.Value = "Button_Test";
b1.ButtonType = Button.ButtonTypes.Caption;
b1.Enabled = false;
b1.Left = 427;
b1.Top = 96;
b1.Width = 75;
b1.Height = 18;
pVal.Form.AddItem(b1);
pVal.Form.Update();
b1.AddHandler_ItemPressed(ModeComponent.FormModes.ALL, new SwissAddonFramework.UI.EventHandling.ItemEvents.ItemPressedEventHandler(delegate(SwissAddonFramework.UI.EventHandling.ItemEvents.ItemPressed eventVal)
.
..
...
return true;
Aktion: Validate
Form Typ: 141
Event Typ: FormLoad
2. Regel
TextEdit cb10 = TextEdit.GetFromUID(pVal.Form, "EIUD0052");
string val20 = cb10.Value;
if(!string.IsNullOrEmpty(val20))
{
Button.GetFromUID(pVal.Form, "EIU_B002").Enabled = true;
}
else
{
Button.GetFromUID(pVal.Form, "EIU_B002").Enabled = false;
}
return true;
Aktion: Validate
Form Typ: 141
ItemUID: EIUD0052
Event Typ: FormLoad
Before Event: true
Ich hatte es erst im if-Anfragen in einer Regel versucht, jedoch kam ich dort nicht weiter. Weshalb ich es mit 2 Regeln dann versucht habe, ähnlich wie in deinem Vorschlag.
Egal wie ich es drehe greift die 2. Regel nicht. Auch habe ich den Weg versucht, in dem ich in der ersten Regel den Button nicht auf false setze.
Daraufhin habe ich deinen Lösungsweg versucht, jedoch komme ich auch damit nicht weiter. :bang:
Hast du da noch einen Tip für mich?
Fritz Schwendemann
Hallo SaschaDeine 2. Regel stimmt so nicht. Du willst doch, dass der Button anklickbar ist, wenn das UDF befüllt ist. Du prüft in Deiner Regel, ob das UDF nullorempty ist -> falls ja, dann setzt Du fälschlicherweise auf true und umgekehrt.
Nullorempty sollen enabled = false bewirken, andernfalls true.
Ausserdem betrifft die 2. Regel nicht den FormLoad-Event, sondern bezieht sich auf das UDF selber, also Item UID angeben, Event Type = validate (siehe oben).
Schönen Gruss
Fritz
Sascha Balke
Hallo Fritz,ups da habe ich mich in der Reihenfolge verhauen. Das habe ich schnell geändert und den EventTyp auf Validate gesetzt.
Jedoch bleibt mein Button auf false, egal ob in dem UDF "EIUD0052" etwas drin steht oder nicht. Sofern ich in der 1. Regel "b1.Enabled = false;" entferne bleibt die ganze Zeit mein Button auf "true".
Irgendwie scheint die 2. Regel nicht zu greifen, wenngleich ich das UDF und den Namen des Buttons mitgegeben habe.
Sehe ich den Wald vor lauter Bäumen nicht?
Fritz Schwendemann
Hallo SaschaBei mir funktioniert's einwandfrei, irgendwo hast Du noch einen kleinen Fehler drin.
Ist das UDF auf der Hauptmaske? Prüfe auch, ob die 2. Regel für den Validate-Event überhaupt greift. Du baust am Anfang eine MessageBox ein und dann siehst Du, ob der Event abgefangen wirst. Die MessageBox könnte Dir z.B. auch gleich melden, ob das UDF leer ist oder wieviele Zeichen enthalten sind. Wenn dann diese MessageBox erscheint, dann musst Du nur mit der if-Abfrage entscheiden, was passieren soll.
Gruss
Fritz
Sascha Balke
Hallo Fritz,es funktioniert!
Als Event-Typ habe ich statt "Validate" einfach "FormDataLoad" und ItemUID leer gelassen. Seit dem funktioniert es so wie es soll. Sobald ich ItemUID bzw. auch Bevor Event "true" gesetzt habe, passierte überhaupt nichts.
Da es jetzt genau so funktioniert, wie ich es haben wollte.
Was mir nun noch fehlt ist die Information ob man den Button über die hinterlegten Texte benennen kann. Deshalb schließe ich diesen Beitrag noch nicht.
Danke dir für die Hilfe.
0
Please sign in to leave a comment.
Comments
0 comments