abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
Programmierung
Alles über Programmierung in GDL und Python

Skriptablauf im Parameterskript

Anonymous
Nicht anwendbar
Hallo Forum,

ich möchte im User Interface eines GDL-Objekts (Plankopf) per Knopfdruck die Werte eines als Parameter angelgten Arrays mit 6 Zeilen und 4 Spalten so ändern, das alle Werte des Arrays genau eine Zeile höher rutschen.
Soweit ich das überblicke funktioniert das nur im Parameterskript mittels
</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">PARAMETERS var[1][1] = var[1][2]...und das für sämtliche Werte, die letzte Zeile soll leer bleiben also
</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">PARAMETERS var[6][1] = ""Jetzt fehlt mir noch ein Button, mit dem ich das ganze einmalig auslösen kann. Irgendwelche Ideen?
Danke schonmal,
Sebastian
7 ANTWORTEN 7
Anonymous
Nicht anwendbar
Eine Möglichkeit:
Nimmm einen Booleschen Parameter (Ankreuzfeld) z.B. mit dem Namen "swi" und starte das Parameterscript von Dir, in dem Moment, wo swi=1 ist.
IF GLOB_MODPAR_NAME="swi" THEN
If swi then
...... !Hier Dein script
ENDIF
PARAMETERS swi=0
ENDIF
Frank Beister
Advisor
@Jochen
Und komme nicht auf die Idee über die Checkbox ein Bitmap als Button zu legen. 😉
@Sebastian
Im Ernst, das solltest du nicht machen, auch wenn das hier im Forum oft empfohlen wurde. Das wird von AC ab Version 10 unter Windows nicht mehr unterstützt.

Ab AC10 gibt es eine Erweiterung des UI_BUTTON-Befehls, womit du einen Button zur Aktivierung erzeugen kannst. Wurde er angeklickt, enthält beim nächsten Skriptdurchlauf ein spezieller GLOBAL den Buttoncode. Eigentlich komfortabel. Geht aber nicht für alles und ist nicht abwärtskompatibel.
bim author since 1994 | bim manager since 2018 | author of selfGDL.de | openGDL | skewed archicad user hall of fame | author of bim-all-doors.gsm
Anonymous
Nicht anwendbar
Hallo,
So hab' ich es jetzt auch erstmal gemacht.
Das Problem ist , dass wenn ich diese if Schleife ins Parameterskript schreibe, und dann im Objekt das Häckchen setze, dann läuft das ganze Skript so lange durch, bis ich das Häckchen wieder deaktiviere (d.h. alle meine Werte sind mit "" überschrieben).
Es klappt nur, wenn ich direkt im Skript am Ende den Schalter wieder auf "false" setze. Oder?
Dann ist die Benutzung aber insofern irritierend, das sich das Häckchen im Skript nicht aktivieren lässt, die Werte aber trotzdem verändert werden...
zzyzx
Newcomer
ja, das deaktivieren (bzw. rücksetzen auf 0) musst du im parameterskript machen, sonst wird das nix.

am besten, du kopierst dir den skriptschnipsel von Jochen in dein parameterskript.
</font>
  • <font size="2" face="Verdana, Helvetica, sans-serif">IF GLOB_MODPAR_NAME="swi" THEN bewirkt, dass die anweisung nur ausgeführt wird, wenn du den parameter swi veränderst</font></li>
  • <font size="2" face="Verdana, Helvetica, sans-serif">If swi then bewirkt, dass es nur ausgeführt wird, wenn du die checkbox auch angekreuzt hast</font></li>
  • <font size="2" face="Verdana, Helvetica, sans-serif">PARAMETERS swi=0 setzt die checkbox wieder zurück auf 0</font></li>
<font size="2" face="Verdana, Helvetica, sans-serif"> wenns außer dem manuellen ankreuuzen noch andere auslöser geben soll, kannst du auch mit gosub...return arbeiten - aber vorsict, dass sich das skript nich in endlosschleifen verheddert. :winken:
Anonymous
Nicht anwendbar
Du kannst die Veränderungen auch in einem anderen Parameter mitschreiben (erhöhen) und das im UI ggf. durch einen Hinweis ("Werte gelöscht") ändern. Dann mußt du diesen Parameter nur immer zurücksetzen:

IF GLOB_MODPAR_NAME="swi" THEN PARAMETERS changes=changes+1 ELSE PARAMETERS changes=0
Anonymous
Nicht anwendbar
@zzyzx
Also: es funktioniert wenn ich beide Bedingungen ('IF GLOB_MODPAR_NAME="swi" THEN' und 'IF swi THEN') in einer Schleife abfrage und gleichzeitig über einen Parameter zählen lassen, ob das ganze Skript nur genau 1 mal abgelaufen ist.
So kann man das Häckchen setzen und dazu eine Meldung ausgeben "Werte geändert". Anschließend kann man das Häckchen wieder deaktivieren, ohne das Werte geändert werden.

@Ove Bodj
Das hab' ich noch nicht ganz verstanden...
Anonymous
Nicht anwendbar
PARAMETER-SKRIPT
</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">IF GLOB_MODPAR_NAME="swi" THEN

If swi then
!...... Hier Dein script
ENDIF

PARAMETERS swi=0, changes=changes+1

ELSE

PARAMETERS changes=0

ENDIFUI-Skript
</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">UI_INFIELS "swi" 10,10,15,15
UI_OUTFIELD "Zeile löschen" 30,10,120,15
IF changes THEN UI_OUTFIELD "Sie haben "+STR(changes,1,0)+" Zeilen gelöscht."So oder so ähnlich. Habe de Code nicht getestet, sollte aber funktionieren.

[ 30. März 2007, 08:45: Beitrag editiert von: Ove Bodj ]

Keine Antwort gefunden?

Andere Beiträge
im Board ansehen

Zurück zum Board

Neueste Lösungen durchsuchen

Akzeptierte Lösungen zeigen

Eine neue Diskussion starten!

Neues Thema erstellen