Dialog

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Dialog

Beitrag von F3K Total »

Moin,
wenn ich dich richtig verstehe, hast du bisher nur das Erscheinungsbild deines Dialoges erstellt?
Kennst dich mit Makros nicht aus?
So ein Dialog funktioniert ohne Makro(s) leider nicht.
Es führen dabei viele Wege nach Rom.
Du schreibst auch nicht, mit welchem Pogrammteil von OpenOffice du deine Serviceberichte schreiben willst.
Calc Tabellenkalkulation?
Writer Textverarbeitungsprogramm?
DIe Makros sehen je nach Programmteil unterschiedlich aus.

Reichlich Lesenswertes zu Makros findest du ganz oben in diese Forumsrubrik:
Informationen zur StarBasic-Programmierung
Hier gibt es etwas zu Dialogen.

Am Besten ist, du hängst hier mal so einen Servicebericht an, und erklärst genau welche Werte du über den Dialog wohin einlesen möchtest.

Gruß R
Zuletzt geändert von F3K Total am Fr, 30.10.2020 14:00, insgesamt 1-mal geändert.
thomasp
*
Beiträge: 11
Registriert: Mo, 12.05.2014 02:45

Re: Dialog

Beitrag von thomasp »

dialogbeispiel.png
dialogbeispiel.png (157.08 KiB) 2343 mal betrachtet
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Dialog

Beitrag von F3K Total »

Na,
das sieht ja doch schon gut aus, hänge bitte kein Bild, sondern deine Writerdatei hier an.
Der Dialog und das Makro müssen in der Datei enthalten sein, dazu
  • öffnest du die deine Datei, speicherst sie unter einem neuen Namen ab.
  • Dann öffnest du die Basic-Umgebung, und navigierst zu "Meine Makros/Standard/Module1", da wirst du das Makro und den Dialog abgespeichert haben.
  • jetzt klickst du auf "Verwalten"
  • Drücke links unten auf das + Zeichen vor deiner Datei, so dass du die Standard-Bibliothek der Datei siehst.
  • halte die STRG-Taste gedrückt, und ziehe das oben markierte Modul unter die untenstehende Standard-Bibliothek, um eine Kopie des Dialoges und des Makros in der Datei anzulegen, siehe Bilder.
  • Führe das Gleiche auf dem Reiter Dialoge durch
  • schließe die Basicumgebung und speichere die Datei.
rot-> Editiert: 30.10.2020 17:00 Uhr
Jetzt kannst du die Datei hier im Forum anhängen.
1.png
1.png (35.18 KiB) 2331 mal betrachtet
2.png
2.png (26.74 KiB) 2331 mal betrachtet
Gruß R
Zuletzt geändert von F3K Total am Fr, 30.10.2020 16:55, insgesamt 1-mal geändert.
thomasp
*
Beiträge: 11
Registriert: Mo, 12.05.2014 02:45

Re: Dialog

Beitrag von thomasp »

Erstmal 1.000 Dank, ich selbst bin php Programmierer, bin neu bei Makros bzw. Desktop-App-Entwicklung.

Hier mal die Datei.

Wie Makros funktionieren ist eigentlich klar, ich habe aber nur noch Verständisfehler:

- Wie bringe ich das Dialogfenster dazu bei jedem Öffnen des Dokuments zu erscheinen,
- Wie übergebe ich die Werte aus dem Dialogfenster an mein Dokument.

Liebe Grüße
Thomas
Dateianhänge
Servicebericht Beispiel.odt
(17.04 KiB) 59-mal heruntergeladen
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Dialog

Beitrag von F3K Total »

Moin,
ich habe gedacht, der Dialog käme mit, hat so wie beschrieben nicht geklappt, (habe den Beitrag oben, siehe rote Schrift, nachträglich editiert, so dass auch der Dialog mitkommt) habe ihn kurz nachgebaut.
Bei den Makros des angehängten Dokumentes ist es wichtig, dass die Textfelder im Dialog EXAKT den Namen tragen, den die Platzhalter im Text haben.

Gruß Rik
Dateianhänge
Servicebericht Beispiel.odt
(17.6 KiB) 81-mal heruntergeladen
Zuletzt geändert von F3K Total am Fr, 30.10.2020 16:57, insgesamt 1-mal geändert.
thomasp
*
Beiträge: 11
Registriert: Mo, 12.05.2014 02:45

Re: Dialog

Beitrag von thomasp »

1000 Dank, jetzt ist mir das auch mit der Übergabe klar.

Wenn ich mal was für dich tun kann, schick mir eine PN über das Forum

Gruss
Thomas
thomasp
*
Beiträge: 11
Registriert: Mo, 12.05.2014 02:45

Re: Dialog

Beitrag von thomasp »

Noch eine Frage:

wie kann ich die Platzhalter bzw. Variablen im Dokument ändern?

Liebe Grüße
Thomas
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Dialog

Beitrag von F3K Total »

Moin,
Menü Einfügen/Feldbefehl/Andere... (STRG+F2) dann Reiter Funktionen, links Platzhalter anwählen, Format Text, rechts oben den Namen angeben, dann Einfügen klicken.
Gruß R
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Dialog

Beitrag von F3K Total »

Moin,
ich habe noch eine andere Möglichkeit gefunden, ohne Platzhalter:

Code: Alles auswählen

sub Dialog1Show
    ThisComponent.DialogLibraries.Loadlibrary("Standard")
    oDialog1 = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
    oControlName = oDialog1.GetControl("Name")
    oSelection = oControlName.Selection
    oSelection.Min = 0
    oSelection.Max = Len(oControlName.Text)
    oControlName.Selection = oSelection
    oDialog1.execute
    for i = 0 to ubound(oDialog1.Controls)
       oControl = oDialog1.Controls(i)
       if oControl.supportsservice("com.sun.star.awt.UnoControlEdit") then
          sName = oControl.Model.Name
          sText = oControl.Model.Text
          Fill_Texttable(sName,sText)
          'Fill_Placeholder(sName,sText)
       endif
    next i
end sub

function Fill_Texttable(sName,sText)
    oTexttables = ThisComponent.Texttables'Textfields.createEnumeration
    for i = 0 to oTexttables.count - 1
        oTexttable = oTexttables(i)
        for j = 0 to oTexttable.Rows.count - 1
            oNameCell =  oTexttable.getCellByPosition(0,j)
            if oNameCell.String = sName then
                oTextCell = oTexttable.getCellByPosition(1,j)
                oTextCell.String = sText
            end if
        next j
    next i
end function
Mit diesen Makros werden die in deinem Bericht liegenden Tabellen ausgelesen. Hier ist es wichtig, dass die Textfelder im Dialog EXAKT den Namen tragen, den die Benennungen in der ersten Spalte deiner Tabellen tragen. Also die Doppelpunkte löschen, oder die Dialogfelder umbenennen.
Mit dem zusätzlichen Code Teil:

Code: Alles auswählen

    oControlName = oDialog1.GetControl("Name")
    oSelection = oControlName.Selection
    oSelection.Min = 0
    oSelection.Max = Len(oControlName.Text)
    oControlName.Selection = oSelection
wird der Text im Dialogfeld "Name" bereits vorausgewählt, so dass du direkt lostippen kannst.

Gruß R
Antworten