Makroprogrammierung verstehen

Anwenderaustausch zur PhraseExpress Makroprogrammierung
Forum rules
Bitte beachten Sie die Hinweise zum Forum. Vielen Dank!
Post Reply
carismo
Posts: 9
Joined: 03 Jan 18, 10:13

Makroprogrammierung verstehen

Post by carismo » 09 Jan 18, 11:26

Liebes Forum,

ich bin sehr angetan von den Möglichkeiten Phraseexpress zu nutzen und möchte (wie wahrscheinlich alle hier) möglichst Zeit sparen und meine Abläufe im Bereich Textverarbeitung professionalisieren. Ich habe schon einiges hier gelesen und gemerkt, dass viele Lösungen auch von anderen Nutzern schon gegeben wurden....dafür danke! Trotzdem brauche ich offensichtlich Basiswissen.

Ich stoße hier aber einfach an meine eigenen Grenzen, merke ich doch immer mehr, wie wenig Ahnung ich von Datenverarbeitung habe.

Ich möchte das ändern und hoffe, dass ihr mir sagen könnt, was ich mir an Wissen aneignen muss, um selbstständig Makros erstellen und auf meine Bedürfnisse anpassen zu können.

Auf welche Programmiersprache und auf welche Logik bauen die Phraseexpress Makros auf??
Wo kann ich Informationen dazu bekommen, die mich systematisch verstehen lassen, wie es funktioniert?

Ich bedanke mich im Voraus für die Hilfe!

Peter Stotz
PhraseExpress Expert
Posts: 597
Joined: 27 Feb 08, 15:07

Re: Makroprogrammierung verstehen

Post by Peter Stotz » 09 Jan 18, 18:54

Hallo, carismo,
willkommen bei den PhraseExpress-Makroprogrammierern!

Durch die Makroprogrammierung von PhraseExpress werden Makros so kombiniert, dass auch
komplexere Aufgabenstellungen lösbar sind und so Zeit, Aufwand und Fehler wirksam verringert werden.

Wie kann man sich in die Makroprogrammierung von PhraseExpress einarbeiten?
Die Vorgehensweise ist sicher individuell.
Wenn man schon Erfahrung mit einer Programmiersprache hat, ist die Einarbeitung leichter,
aber folgende Punkte helfen ganz bestimmt:

1. Sich eine erste grobe Übersicht über die PhraseExpress-Dokumentation verschaffen:
Übersicht: http://www.phraseexpress.com/docs13/07/manual.htm
Wichtig: Makrofunktionen http://www.phraseexpress.com/docs13/07/macro.htm

2. Die "Beispiel-Textbausteine" http://www.phraseexpress.com/de/addons.php studieren.
Vielleicht sind auch die Beispiele der Anwender unter "kostenlose Erweiterungen" hilfreich
viewforum.php?f=187

Und ganz wichtig:
3. Sich selbst eine (zunächst eher einfache) Aufgabe für die eigene Anwendung stellen und zu
lösen versuchen. Bei Fragen hilft das Forum.


Hier schon 'mal einen "Jahresanfang-Textbaustein" für dich:
Wenn du irgendwo in einer Anwendung 2017 statt 2018 eintippst (momentan sehr beliebt ...),
fragt der Textbaustein nach, ob du nicht 2018 gemeint hast.
Textbaustein-Beschreibung: ... meinten Sie vielleicht 2018?
Textbaustein-Inhalt: 2018
Autotext-String: 2017|2071|21017
Nachzeichen nach dem Autotext unterdrücken: markiert

Viel Spaß und viel Erfolg!
Peter
Win 10-1607 64 bit - PhraseExpress 13.0.67i

carismo
Posts: 9
Joined: 03 Jan 18, 10:13

Re: Makroprogrammierung verstehen

Post by carismo » 10 Jan 18, 09:56

Hallo,

vielen Dank für die Antwort...genau so werde ich es angehen! Ich vergaß zu erwähnen, dass ich die Mac-Version benutze. Das ist auch einer der Gründe, warum es nicht so ganz einfach ist, sich mittels Recherche in die Materie einzuarbeiten, denn die meisten Tutorials sind für Windows gemacht.

Ich finde das aber auch nicht schlimm, denn langfristig wird es eh darauf hinauslaufen, dass ich alle Versionen verwende, da in meiner Praxis (und da sehe ich den größten Benefit der Software) alles Windows Rechner stehen. Ich möchte eben nur, bevor ich mich an das Projekt heranmache, für mich selbst verstanden haben, wie es funktioniert. Der Tip mit den von anderen Usern zur Verfügung gestellten Makros ist super, denn ich habe schon ein Grundgerüst für eines meiner Hauptprobleme (Arztbriefe schreiben) gefunden....das kann ich schonmal gut benutzen, um mich spezifisch anzunähern.
Ich habe auch schon mit einigem Zeitaufwand ordentlich Fachwörter und auch einige Formulierungen in meine Datenbank eingegeben. Die Idee ist, dass ich meinen Fachwortschatz etc. einzeln abspeichere und dann durch Makros diese Begriffe und/ oder Formulierungen in die Texte einfügen lasse. Dies hat den Vorteil, das, wenn ich den Begriff oder die Formulierung als Baustein verändere, diese Veränderung automatisch in allen Makros übernommen wird...soweit der Plan.

Vielleicht schon mal 2 Fragen:
1. Wenn ich Text schreibe, ploppen dauernd Vorschläge von Phraseexpress auf, weil ich z.B. ein "b" schreibe, werden Worte vorgeschlagen, die mit "b" hinterlegt sind. Nun passiert das aber auch, wenn das "B" mitten im Wort steht...wo stelle ich ein, das es nur bei einem einzelnen "b" vorgeschlagen wird?

2. Nochmals die Frage...sind die Makros in einer bestimmten Programmiersprache geschrieben, die ich mir aneignen kann?

Danke im Voraus!

carismo
Posts: 9
Joined: 03 Jan 18, 10:13

Re: Makroprogrammierung verstehen

Post by carismo » 10 Jan 18, 10:19

Peter Stotz wrote:
09 Jan 18, 18:54
Und ganz wichtig:
3. Sich selbst eine (zunächst eher einfache) Aufgabe für die eigene Anwendung stellen und zu
lösen versuchen.
Ich habe da so ein Projekt schonmal versucht zu realisieren...
Mich nervt zuhause das ständige Schreiben von einkaufszetteln-immer wir etwas vergessen, dauernd bringt einer schonmal dies oder das mit, vergisst aber was anderes...
Da kam mir die Idee das Ganze über Checkboxes zu lösen:
Plan:
1. alle Dinge des täglichen Bedarfes werden nach Rubriken(Brot, Hygieneartikel u.ä.) erfasst.
2. pro Rubrik wird ein Makro erstellt, dass die einzelnen Produkte in einer Checkbox vorschlägt, diese können dann angekreuzt werden und es entsteht eine Liste aus der jeweiligen Rubrik. (Vorteil: durch die Checkbox wird man auch erinnert, was man noch so brauchen könnte...)

Probleme:
1. ich habe es nicht hinbekommen, dass in der Checkbox die bereits erstellten Testbausteine durch ein "einfügen" Makro eingesetzt werden und musste alle nochmals per Hand imDialog "Checkbox "eingeben.
2. es gab Leerzeilen auf der Liste, wenn ich das erste und das vierte Produkt angewählt hatte...
(dieses Problem wurde hier im Forum schon besprochen und mit {#asc13} (??) gelöst....ich habe es damit versucht, aber ging nicht.


hier mal meine "Brotliste (Amateur-Style ;-)

{#formcheckbox -text Vital & Fit -vals Vital & Fit}{#asc13}
{#formcheckbox -text Goldentoast -vals Goldentoast}
{#formcheckbox -text Grahambrot -vals Grahambrot}
{#formcheckbox -text Aufbackbrötchen -vals Aufbackbrötchen}
{#formcheckbox -text Laugenstangen/-brezeln -vals Laugenstangen/-brezeln}

Vielleicht kannst Du mir anhand dieses Versuches ein paar Sachen darstellen...danke im Voraus!!

Klein
PhraseExpress Expert
Posts: 154
Joined: 24 Mar 14, 16:11

Re: Makroprogrammierung verstehen

Post by Klein » 10 Jan 18, 13:42

Hallo carismo,

auch vom mir ein herzliches Willkommen hier.

Die Auswahl für Deine Phrase finde ich ganz gut. Nun mal zu Deinen Problemen:

1. Das geschilderte Problem verstehe ich nicht. Kann Dir hier somit nicht weiterhelfen.
2. Wenn Du die Phrasen genau so in PEX eingetragen hast, also mit den Zeilenumbrüchen, dann hat PEX keinen Fehler gemacht. Und das die Sache mit {#asc13} nicht funktioniert liegt einfach daran, dass ein Leerzeichen fehlt. Der Befehlt für die Ausgabe eines Zeilenumbruchs muss nämlich {#asc 13} lauten.

Ich habe die mal anhand Deiner Vorgabe die Phrase für das Brot erstellt.

Code: Select all

{#form -text Brotliste für Einkaufszettel}{#formcheckbox -text Vital & Fit -vals Vital & Fit {#asc 13}}{#formcheckbox -text Goldentoast -vals Goldentoast {#asc 13}}{#formcheckbox -text Grahambrot -vals Grahambrot {#asc 13}}{#formcheckbox -text Aufbackbrötchen -vals Aufbackbrötchen {#asc 13}}{#formcheckbox -text Laugenstangen/-brezeln -vals Laugenstangen/-brezeln {#asc 13}}
HTH LG klein

Peter Stotz
PhraseExpress Expert
Posts: 597
Joined: 27 Feb 08, 15:07

Re: Makroprogrammierung verstehen

Post by Peter Stotz » 10 Jan 18, 20:50

Hallo, carismo,
ein beeindruckender Elan und ein beeindruckend gut organisierter Haushalt - Huuut ab! ;-)

Forumfreund Klein hat ja schon eine prima Vorlage gegeben, aber in Anknüpfung an die Fragen hier noch weitere Information:
...sind die Makros in einer bestimmten Programmiersprache geschrieben, die ich mir aneignen kann?
Jein - die PhraseExpress-Makroprogrammierung folgt eben den üblichen Grundregeln der Programmiersprachen.
Der Code wird vom PhraseExpress-Parser von innen nach außen (bei Verschachtelungen) und von
links nach rechts abgearbeitet. Für diese Abarbeitungsregel gibt es Hierarchie-Ausnahmen:
z.B. haben Formularmakros Vorrang - aber davon später.
Der Code wird als fortlaufende Aneinanderreihung von Anweisungen ("Makros") und Daten als
"Codestring" vorgegeben, die geschweiften Klammern { ... } begrenzen die Makro-Anweisungen.
JEDES im Code befindliche Zeichen wird von PhraseExpress ausgewertet, z.B. ein Leerzeichen oder
eine neue Zeile durch das Drücken der Eingabetaste wird als "programmiertes" Leerzeichen und als
Zeilenvorschub wiedergegeben.
Die fortlaufende "Codewurst" erschwert Verständlichkeit und Pflege der Makroanwendungen.
Bei komplexen Makroanwendungen sind deshalb Kommentare eine gute Idee,
um den Code gut nachvollziehbar zu strukturieren: (* dies ist ein Kommentar *).

Das ist jetzt zunächst 'mal genug Theorie - hier ein Beispiel, wie die Zusammenstellung eines
Einkaufszettels mit mehreren, miteinander kombinierten Textbausteinen programmiert werden könnte:

Der Textbaustein Einkaufsliste könnte den Autotext #ekl bekommen und steuert als "Hauptprogramm"
die Erstellung der Einkaufsliste.
Weitere Textbausteine können als "Unterprogramme" mit dem #insert-Makro eingebunden werden.

Code: Select all

(* 20180110 • Einkaufsliste zusammenstellen
  Listenname, Tagesdatum und Zeilenvorschub ausgeben 
*)Einkaufsliste   -    {#date}{#asc 13}(* 
  Ausgewählte Artikel aus der Brotliste ausgeben
*){#insert *brotliste}(*
  Ausgewählte Artikel aus der Liste der Hygieneartikel ausgeben
*){#asc 13}{#insert *hygieneartikel}(* 
  Ausgewählte Artikel aus der xxx-liste ausgeben
*){#insert *xxxliste}(* 
  Abschlußzeichen 
*){#asc 13}    ***
Der Code ist durch Kommentare gegliedert - PhraseExpress ignoriert bei der Codeausführung automatisch
die Zeichenpaare (* *) und ALLES zwischen diesen Zeichenpaaren.
Zum Vergleich hier der "pure" Code, ohne Kommentare:

Code: Select all

Einkaufsliste    -    {#date}{#asc 13}{#insert *brotliste}{#insert *hygieneartikel}{#insert *xxxliste}{#asc 13}    ***
Und so könnte das "Unterprogramm" *brotliste mit dem Autotext *brotliste aussehen (vergleiche auch Kleins Version):

Code: Select all

(* 20180110 • Einkaufszettel zusammenstellen: Auswahlangebot aus der Brotliste
*){#asc 13}(* 
*){#formcheckbox -text Vital && Fit -vals [ ] Vital & Fit{#asc 13}}(* 
*){#formcheckbox -text Goldentoast -vals [ ] Goldentoast{#asc 13}}(* 
*){#formcheckbox -text Grahambrot -vals [ ] Grahambrot{#asc 13}}(* 
*){#formcheckbox -text Aufbackbrötchen -vals [ ] Aufbackbrötchen{#asc 13}}(* 
*){#formcheckbox -text Laugenstangen/-brezeln -vals [ ] Laugenstangen/-brezeln{#asc 13}}
Das ist die Ausgabe, wenn alle Optionen markiert werden:
Einkaufsliste - 10.01.2018
[ ] Vital & Fit
[ ] Goldentoast
[ ] Grahambrot
[ ] Aufbackbrötchen
[ ] Laugenstangen/-brezeln

***
Anmerkungen:
1. Die Bausteine *hygieneartikel, *xxxliste usw. müssen noch programmiert werden...
2. Syntaxregelungen für Textbaustein-Benennungen können einem persönlichen Stil folgen:
Ich benenne Textbausteine i.d.R. mit einem führenden #-Zeichen und
"Unterprogramme" mit führendem *-Zeichen...
3. Ein Zeilenvorschub lässt sich durch Betätigen der Eingabetaste im Code, durch die Tastensimulation
der Eingabetaste {#ENTER}, oder durch die Ausgabe des ASCII-Codes {#asc 13} = CR für
carriage return* erzeugen.
4. PhraseExpress "toleriert" reaktionslos #insert-Aufrufe nichtvorhandener Textbausteine
5. Für viele scheinbare "Fehler" aus Programmierersicht gibt es eine ganz einfache Erklärung:
Rechner reagieren stur maschinell - aber das tun sie dann (meist) ganz zuverlässig:
Beispielsweise ist {#asc13} nicht {#asc 13} - es wird kein Zeilenvorschub ausgegeben und der Programmierer wundert sich...

Peter
Win 10-1607 64 bit - PhraseExpress 13.0.67i
* ... und ziemlich lustig wird's, wenn man einem jungen Menschen den Begriff "Wagenrücklauf"
erklärt. Wer DAS noch kennt, fühlt sich da dann schon 'mal richtig alt... ;-)

Klein
PhraseExpress Expert
Posts: 154
Joined: 24 Mar 14, 16:11

Re: Makroprogrammierung verstehen

Post by Klein » 10 Jan 18, 22:43

@Peter
Du bist ja heute richtig schreibwütig. Das hilft bestimmt.
Hast Du mal die Brotliste getestet? In dem Formular wurde bei mir das "&" nicht korrekt angezeigt.
... Beispielsweise ist {#asc13} nicht {#asc 13} - statt einem Zeilenvorschub wird nur ein Leerzeichen
ausgegeben ...
Leider nicht. Beim ersten Test hatte ich {#asc13} aus dem Beitrag kopiert und in die Phrase eingefügt. Der Parser hat das nicht wie von dir beschrieben abgefangen. Und der Parser mag es auch nicht, wenn vor dem {#asc 13} kein Leerzeichen gefunden wird.

@carismo
Peter hat ja noch einige Tipps und Anregungen gegeben. Falls Du aber nicht immer die ganzen verschiedenen Listen abarbeiten möchtest, dann kannst Du dafür natürlich auch wieder {#formcheckbox} nutzen und bei der Ausgabe das {#insert} nutzen.

LG klein

Peter Stotz
PhraseExpress Expert
Posts: 597
Joined: 27 Feb 08, 15:07

Re: Makroprogrammierung verstehen

Post by Peter Stotz » 10 Jan 18, 23:25

@klein
na, du bist heute ja auch lange auf! *** kicher ***
1. Jep, das And-Zeichen & wird als Unterstrich _ ohne nachfolgendes Leerzeichen angezeigt.
Wo du recht hast hast du recht, Adlerauge.
Da müssen die Entwickler nachsehen...
Nachtrag am 11.01.2018: Workaround: Beim -text-Parameter zwei && verwenden!

2. {#asc 13} wird als {#asc13} in meiner Systemumgebung ohne Reaktion übergangen - es erfolgt aber kein Zeilenwechsel (das wurde von mir - um Missverständnisse zu vermeiden - im letzten Forumbeitrag korrigiert).

3. "Mein Parser" akzeptiert {#asc 13} ohne vorangehendes Leerzeichen. Interessant.

Danke für deine Hinweise klein!
Peter
Win 10-1607 64 bit - PhraseExpress 13.0.67i

carismo
Posts: 9
Joined: 03 Jan 18, 10:13

Re: Makroprogrammierung verstehen

Post by carismo » 11 Jan 18, 05:53

Guten Morgen,

Vielen, vielen Dank für die ganzen Tips und Informationen!!
Ihr könnt Euch nicht vorstellen, wie mich das in der letzten Zeit umgetrieben hat. Für mich gehts auch ums Prinzip-ohne es merken habe ich ohne Makros zu verstehen einfach vor mich hingelebt! Ich merke, dass ich den Anschluss verloren habe...
Ich werde am Wochenende mal die Einzelheiten ausprobieren und versuchen Eure Anleitungen umzusetzen- für Eure Mühen wollte ich mich schon einmal bedanken!!

Klein
PhraseExpress Expert
Posts: 154
Joined: 24 Mar 14, 16:11

Re: Makroprogrammierung verstehen

Post by Klein » 11 Jan 18, 08:38

Peter Stotz wrote:
10 Jan 18, 23:25
... 2. {#asc 13} wird als {asc13} in meiner Systemumgebung ohne Reaktion übergangen - es erfolgt aber kein Zeilenwechsel (das wurde von mir - um Missverständnisse zu vermeiden - im letzten Forumbeitrag korrigiert).
Anbei ein Bild, wie es bei mir aussieht. Ist aber aus meiner Sicht die korrekte Ausgabe.
asc13_verhalten.jpg
... 3. "Mein Parser" akzeptiert {#asc 13} ohne vorangehendes Leerzeichen. Interessant.
Die Aussage nehme ich wieder zurück. Lag wahrscheinlich an der späten Zeit. ;-) Beim erneuten Test ist mit und ohne Leerzeichen alles in Ordnung. :-)

LG klein
You do not have the required permissions to view the files attached to this post.

carismo
Posts: 9
Joined: 03 Jan 18, 10:13

Re: Makroprogrammierung verstehen

Post by carismo » 11 Jan 18, 13:22

gibt´s denn für Befehle wie #asc 13 logische Erklärungen, also ist es die Abkürzung eines englischen Wortes und"#" ein feststehendes Zeichen in der Computerwelt?
Gibt´s ne Quelle, wo ich die gängigen Befehle mit "Übersetzung" sehen kann?

Klein
PhraseExpress Expert
Posts: 154
Joined: 24 Mar 14, 16:11

Re: Makroprogrammierung verstehen

Post by Klein » 11 Jan 18, 14:19

carismo wrote:
11 Jan 18, 13:22
... Gibt´s ne Quelle, wo ich die gängigen Befehle mit "Übersetzung" sehen kann?
Eine Quelle wurde Dir von Peter ja schon genannt. Es ist die Übersicht über die ganzen Makrobefehle des PEX. Dort sind die ganzen Befehle aufgelistet, erklärt und meist mit einem Beispiel versehen.

In der PEX-Makrosprache werden mit Hilfe des {#asc}-Befehls ASCII-Zeichen ausgegeben. Dies ist in dem Abschnitt hier beschrieben. Welche Zahlenfolge welches Zeichen erzeugt kann man entsprechend über die Zeichentabelle von Windows erfahren. Die druckbaren Zeichen sind auch beim Einfügen des Makro-Befehls sichtbar, wie auf dem Bild hoffentlich erkennbar ist.
ASCII.jpg
Dann gibt es allerdings noch einige nicht-druckbare ASCII-Zeichen. Dazu gehört eben der "Carriage Return". Eine Übersicht über Steuerzeichen findest Du zum Beispiel bei Wikipedia. Und hier noch eine Tabelle über den kompletten ASCII-Code.
Allerdings brauchst Du diese Sachen meist gar nicht, weil das im PEX auch anders geht. So kann man nämlich einfach auch Sondertasten ausgeben lassen. {#ENTER} würde in dem Fall den gleichen Effekt haben.

Von Peter wird allerdings sehr gern das {#asc 13} genutzt, weil es manchmal einen kleinen zeitlichen Vorteil bietet. (Den entsprechenden Beitrag habe ich allerdings gerade nicht parat.)

HTH LG klein
You do not have the required permissions to view the files attached to this post.

Klein
PhraseExpress Expert
Posts: 154
Joined: 24 Mar 14, 16:11

Re: Makroprogrammierung verstehen

Post by Klein » 12 Jan 18, 13:49

Peter Stotz wrote:
10 Jan 18, 23:25
...
1. Jep, das And-Zeichen & wird als Unterstrich _ ohne nachfolgendes Leerzeichen angezeigt.
Wo du recht hast hast du recht, Adlerauge.
Da müssen die Entwickler nachsehen...
Nachtrag am 11.01.2018: Workaround: Beim -text-Parameter zwei && verwenden!
gerade die Version 13.0.70 heruntergeladen --> Das Kaufmanns-Und wird jetzt in Formularen richtig dargestellt.

carismo
Posts: 9
Joined: 03 Jan 18, 10:13

Re: Makroprogrammierung verstehen

Post by carismo » 14 Jan 18, 18:32

Hallo,
Sonntag abend...endlich kann ich mich mal auf diese Sache konzentrieren!
Ich möchte gern der Reihe nach vorgehen.
carismo wrote:
10 Jan 18, 10:19

Probleme:
1. ich habe es nicht hinbekommen, dass in der Checkbox die bereits erstellten Testbausteine durch ein "einfügen" Makro eingesetzt werden und musste alle nochmals per Hand imDialog "Checkbox "eingeben.
Klein wrote:
10 Jan 18, 13:42
1. Das geschilderte Problem verstehe ich nicht. Kann Dir hier somit nicht weiterhelfen.
Damit wollte ich ausdrücken, dass ich die einzelnen Produkte (also alle Artikel, die aus dem jeweiligen Bereich, z.B. Brot,stammen) als Textbausteine angelegt hatte und eigentlich bei den checkboxes über ein insert Makro diese in die checkbox einfügen wollte. Das ging allerdings nicht und so habe ich (nachdem ich alle Brotsorten schon als jeweils einzelnen Textbaustein angelegt hatte), diese beim erstellen der checkbox nochmals per Hand eingetippt.
Das Einfügen per insert Makro hat nicht geklappt.

carismo
Posts: 9
Joined: 03 Jan 18, 10:13

Re: Makroprogrammierung verstehen

Post by carismo » 14 Jan 18, 19:36

carismo wrote:
10 Jan 18, 09:56
1. Wenn ich Text schreibe, ploppen dauernd Vorschläge von Phraseexpress auf, weil ich z.B. ein "b" schreibe, werden Worte vorgeschlagen, die mit "b" hinterlegt sind. Nun passiert das aber auch, wenn das "B" mitten im Wort steht...wo stelle ich ein, das es nur bei einem einzelnen "b" vorgeschlagen wird?
ich möchte z.B. die anatomische Bezeichnung "bukkal" mit einem "b" als Autotext hinterlegen und diese nach manueller Bestätigung ausführen...
ich dachte es mir nun so, dass mir "bukkal" angeboten wird, wenn ich ein einzelnes "b" schreibe...also ohne einen Buchstaben vor dem "b"
Es wird mir aber immer angeboten wenn ich ein Wort mit "b" schreibe. (z.B. bei schreiben o.ä.)
Kann ich das irgendwo einstellen??
Klein wrote:
10 Jan 18, 13:42
Ich habe die mal anhand Deiner Vorgabe die Phrase für das Brot erstellt.

Code: Select all

{#form -text Brotliste für Einkaufszettel}{#formcheckbox -text Vital & Fit -vals Vital & Fit {#asc 13}}{#formcheckbox -text Goldentoast -vals Goldentoast {#asc 13}}{#formcheckbox -text Grahambrot -vals Grahambrot {#asc 13}}{#formcheckbox -text Aufbackbrötchen -vals Aufbackbrötchen {#asc 13}}{#formcheckbox -text Laugenstangen/-brezeln -vals Laugenstangen/-brezeln {#asc 13}}
SUPER-Dankeschön!!
jetzt sind in der Checkbox aber alle Brotsorten angekreuzt...das wollte ich andersherum. Also das nichts ausgewählt ist und ich die Sorte ankreuze, die ausgegeben werden soll.

Peter Stotz wrote:
10 Jan 18, 20:50
Der Textbaustein Einkaufsliste könnte den Autotext #ekl bekommen und steuert als "Hauptprogramm"
die Erstellung der Einkaufsliste.
Weitere Textbausteine können als "Unterprogramme" mit dem #insert-Makro eingebunden werden.
Die Einkaufsliste wäre dann praktisch ein Makro, das die Auswahlen aus den verschiedenen Listen (Brotsorten, Hygieneartikel etc. ) aneinanderreiht? Diese Auswahlen sind ja aber auch schon Makros (Checkboxes) und basieren auf den einzelnen Textbausteinen der Bereiche Brot, Hygieneartikel etc.?
Also muss ich doch zuerst alle Artikel abspeichern (Brotsorten etc.)
muss dann aus diesen eine Checkbox "Brot" erstellen (die Brotliste)
und dann alle Listen (Getränke, Gemüse etc.) im Makro Einkaufsliste zusammenführen.

Bei mir sieht das so aus:
Peter Stotz wrote:
10 Jan 18, 20:50
Der Textbaustein Einkaufsliste könnte den Autotext #ekl bekommen und steuert als "Hauptprogramm"
die Erstellung der Einkaufsliste.
Weitere Textbausteine können als "Unterprogramme" mit dem #insert-Makro eingebunden werden.
Die Einkaufsliste wäre dann praktisch ein Makro, das die Auswahlen aus den verschiedenen Listen (Brotsorten, Hygieneartikel etc. ) aneinanderreiht? Diese Auswahlen sind ja aber auch schon Makros (Checkboxes) und basieren auf den einzelnen Textbausteinen der Bereiche Brot, Hygieneartikel etc.?
Also muss ich doch zuerst alle Artikel abspeichern (Brotsorten etc.)
muss dann aus diesen eine Checkbox "Brot" erstellen (die Brotliste)
und dann alle Listen (Getränke, Gemüse etc.) im Makro Einkaufsliste zusammenführen.

Bei mir sieht das so aus:
Bildschirmfoto 2018-01-14 um 19.02.26.png
Ist vielleicht die Ordnerstruktur falsch? Ich habe in den Unterordnern von "Einkauf" die einzelenen Artikel hinterlegt. Aber wenn ich jetzt bei der Brotliste versuche die Brotsorten über ein Insert Makro einfügen zu lassen, geht das nicht. Ich dachte es mir so:
Bildschirmfoto 2018-01-14 um 19.17.17.png
das sieht dann bei Ausführung leider so aus:
Bildschirmfoto 2018-01-14 um 19.31.44.png
und das Ergebnis ist das:
Bildschirmfoto 2018-01-14 um 19.32.05.png

Ich wollte eigentlich noch weiter machen, aber momentan merke ich, dass ich hier genug zutun habe zu verstehen, wie ich umdenken muss!

Danke im Voraus!
You do not have the required permissions to view the files attached to this post.

carismo
Posts: 9
Joined: 03 Jan 18, 10:13

Re: Makroprogrammierung verstehen

Post by carismo » 14 Jan 18, 20:13

carismo wrote:
14 Jan 18, 19:36
SUPER-Dankeschön!!
jetzt sind in der Checkbox aber alle Brotsorten angekreuzt...das wollte ich andersherum. Also das nichts ausgewählt ist und ich die Sorte ankreuze, die ausgegeben werden soll.
Habe es entfernt (-def true)!
Nur damit ihr seht, ich bemühe mich meinen Möglichkeiten entsprechend...
Ging auch aus Euren Antworten hervor-sorry!

Peter Stotz
PhraseExpress Expert
Posts: 597
Joined: 27 Feb 08, 15:07

Re: Makroprogrammierung verstehen

Post by Peter Stotz » 15 Jan 18, 10:08

Hey, carismo!

1. Konzept geht vor Details
PhraseExpress bietet i.d.R immer viele Realisierungsmöglichkeiten, man muss für jede Aufgabenstellung das am besten passende Konzept suchen und testen.
Für die Konzeptprüfung reicht meist ein sehr reduzierter Beispielcode.
Es ist effizienter, Codedetails erst später hinzuzufügen, wenn sich das Konzept als praktikabel erweist (z.B. reichen für jede Einkaufskategorie zunächst 2 oder 3 Artikelbeispiele).
Die Einkaufsliste wäre dann praktisch ein Makro, das die Auswahlen aus den verschiedenen Listen (Brotsorten, Hygieneartikel etc. ) aneinanderreiht? Diese Auswahlen sind ja aber auch schon Makros (Checkboxes) und basieren auf den einzelnen Textbausteinen der Bereiche Brot, Hygieneartikel etc.?
Die Einkaufsliste besteht bei meinem Vorschlag (Forumbeitrag vom Mi 10. Jan 2018, 21:50) aus
mehreren Textbausteinen, jeweils einen für jede Einkaufskategorie.
Sie werden mithife des, als "Hauptprogramm" benannten Textbausteins, miteinander kombiniert (nacheinander mit #insert ausgeführt).
Jeder Textbaustein für eine Einkaufskategorie enthält wiederum jeweils mehrere #formcheckbox-Makros zur Artikelauswahl.
Du müsstest nur den Code der beiden Beispielphrasen in jeweils einen Textbaustein als Inhalt einkopieren und den als "Hauptprogramm" benannten Textbaustein starten, dann kannst du die praktische Funktion nachvollziehen (und ggf. den Code beliebig ausbauen).
Dein Lösungsansatz über eine Textbaustein-Ordnerstruktur ist anders, aber auch machbar...

2. Bitte KEINE "unendlich" fortgeführten Forumbeiträge
Für alle im Forum ist es enorm hilfeich, streng thematisch vorzugehen, was tendenziell bedeutet:
Wann immer möglich für jedes neue Thema/jede neue Problemdarstellung ein gesondertes, neues Forumthema anlegen und pro Beitrag wenige, konkrete Fragen formulieren
(huch, das klingt jetzt ja schon etwas extrem, aber das ist wirklich effizienter als ein immer weiter fortgeführter Themenfaden in einem Beitrag...).

Weiterin viel Erfolg und gute Fortschritte mit deiner Einkaufsliste!
Peter
Win 10-1709 64 bit - PhraseExpress 13.0.70i

Klein
PhraseExpress Expert
Posts: 154
Joined: 24 Mar 14, 16:11

Re: Makroprogrammierung verstehen

Post by Klein » 15 Jan 18, 13:52

carismo wrote:
14 Jan 18, 18:32
... Damit wollte ich ausdrücken, dass ich die einzelnen Produkte (also alle Artikel, die aus dem jeweiligen Bereich, z.B. Brot,stammen) als Textbausteine angelegt hatte und eigentlich bei den checkboxes über ein insert Makro diese in die checkbox einfügen wollte. Das ging allerdings nicht und so habe ich (nachdem ich alle Brotsorten schon als jeweils einzelnen Textbaustein angelegt hatte), diese beim erstellen der checkbox nochmals per Hand eingetippt.
Das Einfügen per insert Makro hat nicht geklappt.
Jetzt habe ich es verstanden.

Ich hänge hier mal eine Datei an, die drei verschiedene Einkaufslisten enthält. Bei der von Peter geposteten Version gefällt mir nicht, dass immer alle Listen aufgerufen werden. Deshalb ist bei meiner Einkaufsliste noch eine Vorauswahl enthalten. Damit könnte man für die verschiedenen Geschäfte eine komplette Liste anlegen und dann nur die tatsächlich notwendigen Unterlisten auswählen. Die Form ist allerdings noch verbesserungsfähig, weil erst mal das Konzept verdeutlicht werden soll.
Als zweite Liste ist eine Variante enthalten, die die bereits erzeugten Phrasen mit den Produktnamen mit nutzt. Damit lässt sich wahrscheinlich eher eine einfache Erweiterung der Liste umsetzen. Über die Sinnhaftigkeit habe ich mir dabei keine Gedanken gemacht.
In der dritten Variante ist es möglich, entsprechende Stückzahlen für die Einkaufsposten mit anzugeben. Hier wäre auch eine Umsetzung mittels Schieberegler möglich. Die hinterlegten Maximalstückzahlen helfen vielleicht, den Lagervorrat nicht ausufern zu lassen. ;-)
einkaufsliste.pxp
You do not have the required permissions to view the files attached to this post.

carismo
Posts: 9
Joined: 03 Jan 18, 10:13

Re: Makroprogrammierung verstehen

Post by carismo » 15 Jan 18, 18:39

sorry ich weiss nicht, wie ich Datei öffnen muss.
Ist es ein Problem, dass ich die Macversion nutze?
Ich habe sie runtergeladen und "öffnen mit" und dann Phraseexpress versucht-geht nicht.
Bildschirmfoto 2018-01-15 um 18.41.40.png
You do not have the required permissions to view the files attached to this post.

Klein
PhraseExpress Expert
Posts: 154
Joined: 24 Mar 14, 16:11

Re: Makroprogrammierung verstehen

Post by Klein » 16 Jan 18, 08:40

carismo wrote:
15 Jan 18, 18:39
... Ist es ein Problem, dass ich die Macversion nutze? ...
Das kann natürlich sein, da diese Datei mit der Windowsversion erstellt wurde. :-(

Dann wohl auf die etwas umständliche Art:
  • Hier die Hauptphrase, in der die jeweiligen Listen ausgewählt werden können:

    Code: Select all

    Einkaufsliste (erstellt am {#date}):
    
    {#formcheckbox -text Soll Brot eingekauft werden? -vals {#insert #brot}}
    {#formcheckbox -text Sollen Getränke eingekauft werden? -vals {#insert #getränk}}
    Ab zur Kasse!
  • Dann kommt hier als Beispiel die Brotliste, bei der die verschiedenen Brotsorten in der Phrase enthalten sind.

    Code: Select all

    {#form -text Brotliste für Einkaufszettel}{#formcheckbox -text Vital & Fit -vals Vital & Fit{#asc 13}}{#formcheckbox -text Goldentoast -vals Goldentoast{#asc 13}}{#formcheckbox -text Grahambrot -vals Grahambrot{#asc 13}}{#formcheckbox -text Aufbackbrötchen -vals Aufbackbrötchen{#asc 13}}{#formcheckbox -text Laugenstangen/-brezeln -vals Laugenstangen/-brezeln{#asc 13}}
  • Hier ist die Brotliste, in der die schon vorhandenen Phrasen einfach eingefügt werden. Die vorhandenen Phrasen müssen natürlich mit einem entsprechenden Autotext versehen sein.

    Code: Select all

    {#form -text Brotliste für Einkaufszettel}{#formcheckbox -text {#insert #brot_01} -vals {#insert #brot_01}{#asc 13}}{#formcheckbox -text {#insert #brot_02} -vals {#insert #brot_02}{#asc 13}}{#formcheckbox -text {#insert #brot_03} -vals{#insert #brot_03} {#asc 13}}{#formcheckbox -text {#insert #brot_04} -vals {#insert #brot_04}{#asc 13}}{#formcheckbox -text {#insert #brot_05} -vals {#insert #brot_05}{#asc 13}}{#formcheckbox -text {#insert #brot_06} -vals {#insert #brot_06}{#asc 13}}
  • Und zum Schluss noch eine mögliche Brotliste, bei der man auch die Mengen vorgeben kann.

    Code: Select all

    {#form -text Brotliste für Einkaufszettel}{#settemp -name #brot_merk_01 -content {#formnum -text Vital & Fit [Stck.] -def 0 -min 0 -max 10}}{#check -text {#gettemp #brot_merk_01} -case > 0 -output {#gettemp #brot_merk_01} Stk. Vital & Fit{#asc 13}}{#settemp -name #brot_merk_02 -content {#formnum -text Goldentoast [Pack] -def 0 -min 0 -max 5}}{#check -text {#gettemp #brot_merk_02} -case > 0 -output {#gettemp #brot_merk_02} Packung Goldentoast{#asc 13}}{#settemp -name #brot_merk_03 -content {#formnum -text Grahambrot [Stck.] -def 0 -min 0 -max 3}}{#check -text {#gettemp #brot_merk_03} -case > 0 -output {#gettemp #brot_merk_03} Stk. Grahambrot{#asc 13}}{#settemp -name #brot_merk_04 -content {#formnum -text Aufbackbrötchen [Tüte] -def 0 -min 0 -max 3}}{#check -text {#gettemp #brot_merk_04} -case > 0 -output {#gettemp #brot_merk_04} Tüte(n) Aufbackbrötchen{#asc 13}}{#settemp -name #brot_merk_05 -content {#formnum -text Laugenstangen/-brezeln [Stck.] -def 0 -min 0 -max 15}}{#check -text {#gettemp #brot_merk_05} -case > 0 -output {#gettemp #brot_merk_05} Stk. Laugenstangen/-brezeln{#asc 13}}
Hoffe das hilft Dir weiter.

LG klein

Post Reply