🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Dialog aus Dialog aufrufen

Alles zur Programmierung im LibreOffice.
Luftschraube
Beiträge: 39
Registriert: So 5. Mai 2019, 09:20

Dialog aus Dialog aufrufen

Beitrag von Luftschraube » Do 12. Nov 2020, 21:24

Guten Abend

Habe folg. Problem: Auf einem Dialogformular(Dialog003) habe ich einen CommandButton angelegt der ein Sub aufruft zum Speichern der Daten und ich wollte begleitend zum Speichervorgang ein zweites kleines Dialogfenster(Dialog004) einblenden, lediglich mit dem Textfenster "Daten werden gespeichert". Das heisst, während ich das Datendialogformular(Dialog003) offen habe möchte ich das kleine dialogfenster Dialog004 einblenden vor dem Speichervorgang und danach wieder verschwinden lassen.
Mit dem Code unten funktioniert das Einblenden von Dialog004 und auch der Speichervorgang, aber der Dialog004 verschwindet dannach nicht mehr. Habe mit .SetVisible und .SetFocus rumprobiert, finde keine Lösung. Bei Dannenhöfer und Piontek hab ich nichts gefunden womit ich was anfangen konnte.
Hat bitte jemand einen Hinweis ?

Code: Alles auswählen

sub Speichern
DialogLibraries.LoadLibrary("Standard")
Dialog004 = CreateUnoDialog(DialogLibraries.Standard.Dialog4)
Dialog004.Execute()
'
thiscomponent.store()
'
Dialog004.endExecute()
end sub


vielen Dank
Luftschraube

mikele
* LO-Experte *
Beiträge: 1930
Registriert: Mo 1. Aug 2011, 20:51

Re: Dialog aus Dialog aufrufen

Beitrag von mikele » Fr 13. Nov 2020, 10:00

Hallo,
dein Makro kann so nicht funktionieren.
Mit

Code: Alles auswählen

Dialog004.Execute()
wird dein Dialog gestartet. Das Makro wartet an dieser Stelle so lange, bis der Dialog beendet wurde und arbeitet dann die nächsten Befehle ab.
Einfacher wäre es, die Information "Daten werden gespeichert" in den ursprüglichen Dialog einzubauen (z. B. als temporäre Schrift auf dem Button).
Gruß,
mikele

Luftschraube
Beiträge: 39
Registriert: So 5. Mai 2019, 09:20

Re: Dialog aus Dialog aufrufen

Beitrag von Luftschraube » Sa 14. Nov 2020, 12:56

Hallo, danke
War jetzt aber schon ein ganz kapitaler Denkfehler :roll:
Den Gedanken deiner Lösung hatte ich dann auch und jetzt auch umgesetzt, funktioniert, sehr elegant !

Code: Alles auswählen

sub DatenSpeichern
With Dialog003.GetControl("CommandButton10")
  .Label = "Daten werden" & chr(10) & "gespeichert !"
  .getModel.BackgroundColor = FarbeButtonBlau  'RGB(180,200,220)
end With  
'
TC.store()
wait 1500
'
with Dialog003.GetControl("CommandButton10")
  .Label = "Speichern"
  .getModel.BackgroundColor = FarbeButtonGelb  'RGB(255,255,0)
end With  
end sub
vielen Dank nochmal
Luftschraube

mikele
* LO-Experte *
Beiträge: 1930
Registriert: Mo 1. Aug 2011, 20:51

Re: Dialog aus Dialog aufrufen

Beitrag von mikele » Sa 14. Nov 2020, 13:20

Hallo,
du könntest den Button für die Wartezeit auch noch deaktivieren (damit man gar nicht erst 2x klickt ...).
Gruß,
mikele

Luftschraube
Beiträge: 39
Registriert: So 5. Mai 2019, 09:20

Re: Dialog aus Dialog aufrufen

Beitrag von Luftschraube » Sa 14. Nov 2020, 19:46

Hallo
Button für die Wartezeit auch noch deaktivieren (damit man gar nicht erst 2x klickt ...
Das versteh ich jetzt leider nicht. Ich klicke im Dialog den 'Speichern'-Button an und mein Sub DatenSpeichern läuft dann komplett durch ! Weiss leider nicht was du meinst ?

gruss Luftschraube

mikele
* LO-Experte *
Beiträge: 1930
Registriert: Mo 1. Aug 2011, 20:51

Re: Dialog aus Dialog aufrufen

Beitrag von mikele » So 15. Nov 2020, 14:10

Hallo,
zusätzlich oder anstelle der Farbänderung des Buttons:

Code: Alles auswählen

sub DatenSpeichern
With Dialog003.GetControl("CommandButton10")
  .Label = "Daten werden" & chr(10) & "gespeichert !"
  .getModel.BackgroundColor = FarbeButtonBlau  'RGB(180,200,220)
  .getModel.Enabled=False
end With  
'
TC.store()
wait 1500
'
with Dialog003.GetControl("CommandButton10")
  .Label = "Speichern"
  .getModel.BackgroundColor = FarbeButtonGelb  'RGB(255,255,0)
  .getModel.Enabled=True
end With  
end sub
Gruß,
mikele

Luftschraube
Beiträge: 39
Registriert: So 5. Mai 2019, 09:20

Re: Dialog aus Dialog aufrufen

Beitrag von Luftschraube » So 15. Nov 2020, 20:19

Hallo

Ach so, jetzt versteh ich wohl, Vermeidung von Doppelklick. Hab ich eingesetzt, Danke.
Was mich aber weiterhin stört und ich auch noch nachfragen wollte, ist der Umstand, dass der schwarze Text 'Speichern' im Button unmittelbar nach dem Klick erstmal auf WEISS umschaltet und danach kommt dann erst die Umschaltung auf die blaue Farbe des Buttons mit dem entspr. Text und danach die Rückschaltung auf GELB mit Text 'Speichern' .

Hab schon die allgemeinen Buttoneinstellungen durchforstet, wüsste nicht wo ich da was korrigieren kann damit der schwarze Text 'Speichern' einfach umschaltet auf 'Daten werden" & chr(10) & "gespeichert !', Button blau wird und wieder zurück auf GELB !?

Grüsse Luftschraube

mikele
* LO-Experte *
Beiträge: 1930
Registriert: Mo 1. Aug 2011, 20:51

Re: Dialog aus Dialog aufrufen

Beitrag von mikele » Mo 16. Nov 2020, 09:44

Hallo,
es könnte sein, dass es ein (betriebs-)systembedingtes Problem ist.
Hier wurde etwas Ähnliches diskutiert und gelöst:
http://de.openoffice.info/viewtopic.php?f=18&t=75019
Gruß,
mikele

Luftschraube
Beiträge: 39
Registriert: So 5. Mai 2019, 09:20

Re: Dialog aus Dialog aufrufen

Beitrag von Luftschraube » Mo 16. Nov 2020, 16:45

Hallo, danke für den Hinweis
Anscheinend ein allgemeines Problem. Hab mir mal den Link durchgelesen im OpenOfficeforum. Es wird auch ein kleines Makro angegeben(siehe unten), zwar anscheinend nicht genau für mein Problem, habs aber trotzdem mal aufbereitet und durchlaufen lassen. Der 'Erfolg' bestand darin, dass der Textumbruch mit chr(10)/chr(13) in meinem Button nicht mehr funktionierte und einfach ignoriert wurde, auch nach ausschalten und PC neu hochfahren immer noch vorhanden. Beschränkt sich aber auch nur auf die betroffene Anwendung. Hatte Sicherheitskopie angelegt, da funktioniert Chr(10)/chr(13) wie gewohnt !

Code: Alles auswählen

Sub Farbdialogbuttons
Dim MyDlg as Object
Dim b_NativeLook as Boolean
b_NativeLook = False
MyDlg.getPeer().setProperty ( "NativeWidgetLook" , b_NativeLook )
MyDlg.execute()
End Sub
vielen Dank
Luftschraube

mikele
* LO-Experte *
Beiträge: 1930
Registriert: Mo 1. Aug 2011, 20:51

Re: Dialog aus Dialog aufrufen

Beitrag von mikele » Mo 16. Nov 2020, 20:11

Hallo,
bei mir (allerdings unter Linux) ist die Zeile

Code: Alles auswählen

MyDlg.getPeer().setProperty ( "NativeWidgetLook" , False )
notwendig, damit überhaupt eine Farbänderung stattfindet.
Die Beschriftung erfolgt per

Code: Alles auswählen

.label="zwei" & chr(13) & "Zeilen"
zweizeilig.
Gruß,
mikele


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten