Optimizer & ScreenPainter
Rafael Stalder
Hallo Zusammen,ich habe mit dem ScreenPainter eine neue Form erstellt worauf ein Button, mit der ID btn_neu, platziert ist.
Nun möchte ich via CustomizingTool Code ausführen, wenn auf diesen Button geklickt wurde, nur scheint es so, als würde das Event gar nicht ausgelöst werden?
Kann mir jemand weiterhelfen?
Gruss Rafael
Sascha Balke
Hallo Rafael,du kannst auch mit dem customize eine neue Form erstellen, womit du dir den ScreenPainter schenken kannst.
Wenn du die neue Form als Menüeintrag haben möchtest, dann lege über New Menu einen neuen z.B. so an:
try
{
// NEW FORM
SwissAddonFramework.UI.Components.Form form = SwissAddonFramework.UI.Components.Form.CreateNewForm("EISG_CUF_SHOW1", "EISG_CUF_SHOW1" + SwissAddonFramework.Utils.UniqueStringGenerator.Next());
form.Height = 380; form.Width = 650; form.Top = 200; form.Left = 300;
form.Value = "Neue Form";
// LOAD THE New FORM
form.Load();
}
catch(System.Exception ex)
{
SwissAddonFramework.UI.Dialogs.MessageBox.Show("Es ist beim öffnen der neuen Form ein unerwarteter Fehler aufgetreten!n" + ex.Message , "OK");
}
Einen Button kannst du im optimizer z.B. so erzeugen:
Button b1 = Button.CreateNew("EIU_B001");
b1.Value = "Öffne irgendwas";
b1.ButtonType = Button.ButtonTypes.Caption;
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)
{
try
{
MessageBox.Show("Geöffnet", "OK");
}
catch(System.Exception ex)
{
MessageBox.Show("Fehler beim LinkedButton der Belegnummer: " + ex.Message, "OK");
}
}));
return true;Name der Regel: Button
Typ: CSCode
Form Typ: 134
Event Typ: Formload
Form Modus: ALL
Hoffe ich konnte dir ein wenig weiterhelfen.
Vg
Sascha
Rafael Stalder
Hallo Sascha,danke für die schnelle Antwort.
Habe das ganze jetzt schon via ScreenPainter gelöst, ansonsten hätte ich es mit deiner Version probiert.
Noch eine Frage, wenn ich bei einem ChooseFrom List Dialog ein FunctionButton platziere, erscheint dieser immer Links oben, das passt mir nicht so, denn so kann man nur den Menüeintrag nutzen.
Gibt es eine Möglichkeit diesen Function Button auszurichten?
Frank Romeni
Hallo Rafael,habe gerade auch mit Saschas Vorschlägen rumgespielt.
Zusatz zu seinem Vorschlag:
Den Button kannst Du auch direkt in dem Code anlegen, mit dem Du die neue Form angelegt hast. Einfach den zweiten Codeteil für den Button vor for.Load() kopieren.
Zu Deiner Frage:
das Button-Objekt hat auch Methoden wie z.B SetPosition() etc.
Probiere die mal aus!
Gruß
Frank Romeni
Frank Romeni
Eine Nachfrage an Sascha:Kannst Du erklären, was es mit den beiden Parametern von
auf sich hat?form.CreateNewForm(string typeEx, string uID)[
Wenn die Form auf dem Bildschirm ist, wird in der SystemInfo-Zeile nur der in typeEx übergebene String für die Form angezeigt.
Frank Romeni
Sascha Balke
Hallo Frank,kann dir grad nicht folgen. Scheine heute echt auf der Leitung zu stehen. :(
VG
Sascha
Michael Egloff
Hallo Frank,zur Info:
TypeEx ist der FormTyp der neu erstellten Form. Dieser sollte immer ein Kürzel vorne haben, damit er nie mit einem anderen AddOn in Konflikt tritt (wir nutzen dabei z.B. "COR_")
UID ist die Unique ID der Form, also eine Zeichenfolge, mit welcher man das Form wiederfinden kann.
Als Beispiel:
Beim Öffnen eines Kundenauftrags ist z.B. die Unique ID "F_12" und der FormTyp "139"
Rafael Stalder
Hallo Frank,danke für den Tip, aber mir ist nicht ganz klar wie ich ein Function Button im Function-Button Code ansprechen soll, denn dieser hat keine ID die man ihm zuweist, und deshalb auch kein Parameter zum auslesen des Buttons.
Also wie kann ich das am besten anstellen?
Gruss Rafael
Frank Romeni
Hallo Rafael,wenn Du Dir den ursprünglichen Code von Sascha anschaust mußt Du doch nur noch die Positionierung hinzufügen, da beim CreateNew() eine Referenz auf den Button geliefert wird (in b1) - wozu brauchst Du eine ID (die außerdem auch als Parameter angegeben wurde)?
Button b1 = Button.CreateNew("EIU_B001");
b1.SetPosition(left, top);
// ...
Oder verstehe ich Deine Frage falsch?
Gruß
Frank Romeni
P.S.: Bin jetzt ein paar Tage unterwegs!
0
Please sign in to leave a comment.
Comments
0 comments