C-Aktion für Radio-Box

PBO-WE

Level-1
Beiträge
165
Reaktionspunkte
6
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo.

Ich möchte gerne diese Radio-Box auswerten und damit die Größe von Kurvenfenstern anpassen.
Ich schreibe die Größe für die Fenster in eine Variable. Funktioniert auch alles so weit, aber wenn ich auf die Radio-Box klicke, bzw die Position des Punktes ändere, wird immer die letzte Zeile meiner C-Aktion bearbeitet und dieser Wert in die Variable geschrieben.
Hab leider keine Ahnung von C.

Code:
if ("Startbild","RadioBox1","Index")1;
SetTagWord("AuflösungBreite",1024);
if ("Startbild","RadioBox1","Index")2;
SetTagWord("AuflösungBreite",1280);

Soll heißen, dass beim Punkt in Feld 1 die Auflösung 1024 und beim Punkt in Feld 2 die Auflösung 1280 betragen soll.

Kann mir jemand sagen was ich falsch mache?
Ich habs auch schon mit GetIndex versucht, aber auch ohne erfolg.
Die C-Aktion wird ausgeführt: Ereignis - Propertythemen - Ausgabe/Eingabe - Selektiertes Feld / Änderung

Danke
 
Ich verknüpfe die Eigenschaft "Selektiertes Feld" immer mit einer internen Variablen (im Beispiel radioProp).
Dann könntest du einen anderen Wert im Skript folgendermaßen schreiben:

Code:
DWORD ret;
DWORD aufloesung;

ret = GetTagDWord("radioProp");
if (ret == 1) {
 aufloesung = 1024;
}
else if (ret == 2) {
  aufloesung = 1280;
}
SetTagDWord("TestDWORD",  aufl);
In radioProp ist je nach gewählten Index immer ein Bit gesetzt. Also wenn du mehrere Einträge hast, vergleichen auf 1, 2, 4, 8 , ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo.
Leider funktioniert das nicht so richtig.
Der Punkt in der Radio-Box springt immer beim Klicken um.
Die Variable ändert sich auch jedes mal,
aber das Schreiben meiner Variable "auflösung" (Kurvenfenster_Breite) ist nicht immer richtig. Mal ändert sie sich auf 1024, wenn ich auf 1024 klicke, mal nicht. Dann ändert sie sich auf einmal, wenn ich auf 1280 klicke auf 1024...
Aber es wird doch die Var RadioBox1 gelesen und auf 1 oder 2 verglichen und dann der Wert entsprechend in Kurvenfenster_Breite geschrieben.
Verstehe das nicht...

Kann es sein, dass die Aktion schneller angeworfen wird, als dass sich die Var RadioBox1 von 1 auf 2 und umgekehrt ändern kann?

Code:
#include "apdefap.h"
void OnPropertyChanged(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName,  long  value)
{
DWORD ret;
DWORD aufloesung;

ret = GetTagDWord("RadioBox1");
if (ret == 1) {
 aufloesung = 1024;
}
else if (ret == 2) {
  aufloesung = 1280;
}
SetTagDWord("Kurvenfenster_Breite",  aufloesung);
}
 

Anhänge

  • Test.zip
    12,5 KB · Aufrufe: 4
Wenn du mit dem OnPropertyChange Event arbeitest, kannst du direkt den übergebenen Wert (value) abfragen:

Code:
if (value == 1) {
  SetTagDWord("Kurvenfenster_Breite",  1024);
}
else if (value == 2 ) {
  SetTagDWord("Kurvenfenster_Breite",  1280);
}
Du musst nur dafür sorgen dass "Kurvenfenster_Breite" einen entsprechenden Startwert hat, da ansonsten nur ein anderer Wert drinsteht wenn jemand eine Option gewechselt hat.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke!!!
Jetzt funktioniert es.
Gibt es irgendwelche Literatur, wo man hilfe zu diesen C-Aktionen bekommt?
Ich hab da nämlich absolut keine Ahnung von.

Gruß
 
Zurück
Oben