Seite 1 von 1
Re: Dialog
Verfasst: Fr, 30.10.2020 13:52
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
Re: Dialog
Verfasst: Fr, 30.10.2020 13:59
von thomasp

- dialogbeispiel.png (157.08 KiB) 3766 mal betrachtet
Re: Dialog
Verfasst: Fr, 30.10.2020 14:17
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 (35.18 KiB) 3754 mal betrachtet

- 2.png (26.74 KiB) 3754 mal betrachtet
Gruß R
Re: Dialog
Verfasst: Fr, 30.10.2020 14:24
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
Re: Dialog
Verfasst: Fr, 30.10.2020 15:05
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
Re: Dialog
Verfasst: Fr, 30.10.2020 15:13
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
Re: Dialog
Verfasst: Fr, 30.10.2020 21:50
von thomasp
Noch eine Frage:
wie kann ich die Platzhalter bzw. Variablen im Dokument ändern?
Liebe Grüße
Thomas
Re: Dialog
Verfasst: Sa, 31.10.2020 08:19
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
Re: Dialog
Verfasst: Sa, 31.10.2020 12:28
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