Servus Zusammen,
hab gerade ein Problem bei der Anzeige von den Dialogbuttons.
KRC2
Version: V4.1.7 SP05
Also man kann 7 Buttons frei programmieren. Ich brauche weniger und dadurch bleibt der letzte Button durch einen alten Eintrag erhalten. Das möchte man natürlich nicht.
Die Buttons sollen so aussehen.
JA NEIN
1 2 3 4 5 6 7
Nur 1 und 2 sollen beschriftet sein der Rest soll leer bleiben. Jetzt ist es so das 7 noch einen alten Eintrag hat "Alles Quit".
Hab gelesen das $MSG_T.DLG_FORMAT ein bestimmtes Format haben muss. Habe es aber noch nicht hinbekommen. Bei neueren Version funktioniert das ohne Probleme. Hab schon mehrere Möglichkeiten ohne Erfolg probiert.
Kann mir jemand da ein Tipp geben?
Probleme bei der Anzeige von Dialogbuttons
- ASK_ROBOTER
- Erledigt
-
-
Musst du mal probieren, ist schon sehr alt das Programm und habe seit dem auch nicht mehr viel mit den Knöpfen gemacht. Poste doch mal deinen Code, vielleicht sieht man dann ja was.
INT iANSWER, icounter, iNr
DECL MSG_T EMPTY_MSGdoStoerung=TRUE
EMPTY_MSG={MSG_T: VALID FALSE,RELEASE FALSE,TYP #QUIT,MODUL[] "MAIN",KEY[] " ",PARAM_TYP #KEY,PARAM[] " ",DLG_FORMAT[] " ",ANSWER 0}
iANSWER=0
icounter=0MSG_NOCHMAL:
$MSG_T=EMPTY_MSG
$MSG_T.VALID=FALSE
$MSG_T.TYP=#DIALOGSWITCH iNr
CASE 1
$MSG_T.KEY[]="FehlerNr: 1! x Minuten kein Job gefunden"
CASE 2
$MSG_T.KEY[]="FehlerNr: 2! kein Teil entnommen BAZ1"
DEFAULT
ENDSWITCH
$MSG_T.DLG_FORMAT[]="OK"
$MSG_T.VALID=TRUE
WHILE (($MSG_T.VALID==TRUE) AND (icounter<20))
HALT
WAIT SEC 0.2
icounter=icounter+1
ENDWHILE
IF icounter>=20 THEN
GOTO MSG_NOCHMAL
ENDIF
iANSWER=$MSG_T.ANSWERbMerker_Interrupt=TRUE
WHILE TRUE
INTERRUPT OFF 35
bMerker_Interrupt=FALSE
WAIT SEC 0.25
INTERRUPT ON 35
WAIT SEC 0.25
bMerker_Interrupt=TRUE
ENDWHILE______________________________________
Und hier nochmal etwas, wo ich die Knöpfe definiert habe:
INT iANSWER, icounter
DECL MSG_T EMPTY_MSGEMPTY_MSG={MSG_T: VALID FALSE,RELEASE FALSE,TYP #QUIT,MODUL[] "MAIN",KEY[] " ",PARAM_TYP #KEY,PARAM[] " ",DLG_FORMAT[] " ",ANSWER 0}
iANSWER=0
icounter=0MSG_NOCHMAL:
$MSG_T=EMPTY_MSG
$MSG_T.VALID=FALSE
$MSG_T.TYP=#DIALOG
$MSG_T.KEY[]="Waehlen Sie den gewuenschten Greifer!"
$MSG_T.DLG_FORMAT[]="Greifer 0|Greifer 1|Greifer 2|Greifer 3|Greifer 4|ZURUECK"
$MSG_T.VALID=TRUE
WHILE (($MSG_T.VALID==TRUE) AND (icounter<20))
HALT
WAIT SEC 0.2
icounter=icounter+1
ENDWHILE
IF icounter>=20 THEN
GOTO MSG_NOCHMAL
ENDIF
iANSWER=$MSG_T.ANSWER
SWITCH iANSWER
CASE 1
GreiferNrwechsel (0)
CASE 2
GreiferNrwechsel (1)
CASE 3
GreiferNrwechsel (2)
CASE 4
GreiferNrwechsel (3)
CASE 5
GreiferNrwechsel (4)
CASE 6
;--Sprung zurueck in Hauptmenue
RETURN
DEFAULT
ENDSWITCH -
Hallo Dos,
danke schon mal für die Beispiele. Hab aber das Problem noch nicht lösen können Komme auch erst am Wochenende an die Anlage wieder drann um irgendwas zu testen.
Im großen und ganzen habe ich das auch so. Hier ein ein kleines Beispiel.DEF Prog_a()
MSGTXT[]="Robi in einer definierten Position.Wollen Sie den Robi automatisch Home fahren?"
KeyTxt[]=" Ja | | Nein "
KCPTOOL (#DIALOG,Msgtxt[],KEYTXT[],0,0.0,I_FKEY)
if (I_FKEY==1) then
;ja gedrueckt
wait for (findpos(0))
else
;nein
WAIT FOR $IN_HOME
endif
ENDDer Text und die Tasten sind in der config.dat deklariert.
DECL CHAR MSGTXT[80]
MSGTXT[]="Robi in einer definierten Position.Wollen Sie den Robi automatisch Home fahren? "
DECL CHAR KEYTXT[70]
KEYTXT[]=" "Das Programm KCPTOOL() steuert dann die Anzeige. So wie bei dir. Bei neueren Versionen gibt es auch keine Probleme nur bei der alten Version: V4.1.7 SP05.
Hab einige Sachen probiert. Wie zum Beispiel:
KeyTxt[]=" Ja | | Nein | | | | " ; keine 70 Zeichen
KeyTxt[]=" Ja | | Nein " ; genau 70 Zeichen
KeyTxt[]=" Ja | | Nein | | | | " ; genau 70 Zeichen mit den "|" zusammen.
Was mir noch aufgefallen ist das $MSG_T.DLG_FORMAT[] vor dem Anzeigen nicht mit Leerzeichen beschrieben wird? War ja auch nie nötig
Vielleicht funktioniert es bei der alten Version wenn ich vorher erst mal den alten Inhalt von $MSG_T.DLG_FORMAT[] überschreiben und danach den eigentlichen Text in .Format[] schreibe.
Am Wochenende gibts dann mehr Infos....... -
So! Nach einigem Probieren habe ich es aufgegeben Egal was ich es mache der letzte Button 7 hat fast immer irgendeine unerwünschte Beschriftung. Hab auch vor dem eigentlichen setzen der Variable $DLG_FORMAT[] alle Zeichen mit " " beschrieben, ging auch nicht.
Und nun...........wie es aussieht müssen die Leute damit klar kommen.
Werde mich mit dem Problem auch nicht mehr länger herumschlagen.
Schönen Sonntag noch :ylsuper: -
hehe, wie sich manches wie ein Virus verbreitet
Da hat APT vor vielen Jahren wegen der damals besch... KRC2 Meldungsverwaltung mal für die eigene Verwendung eine universelle "KCPTOOL" Bibliothek geschrieben, und seitdem begegnet es einem mit EXAKT dem gleichen Syntax bei den verschiedensten Firmen immer und immer wieder
...hoffe du hast dein Problem unter der V4.x BOF-Version in den Griff bekommen, KCPTOOL entstand auf V5.2
Grüsse, APT
-
Schau mal in das Prog,
das sollte eigentlich funktioniert (Im FOLD Dialog ist alles eigentlich gut erklärt zu dem du Probleme hast).Ich würds mit "Softkey[7] = {sk_type #EMPTY}" probieren oder "Softkey[3] = {sk_type #VALUE, sk_txt[] " . " }"
einfach mit nen Leerzeichen oder Punkt beschreiben.
Du musst aber in meinem Prog bei der Declarierung der Variable "Sofkey[3]" auf 7 erhöhen (sieht dann so aus "Sofkey[7]").
Die declarierung ist vor der INI Zeile im Fold "Decleration der Meldungsvariablen" zu finden.
Ich hab damals versucht das Programm so zu schreiben, dass es übersichtlich ist und eigentlich keine Fragen offen bleiben
sollten. Wenn irgendwas fehl einfach melden damit ich es noch hinzu fügen kann.Als zweites Prog hab ich mal nen Bsp. angehongen wo wir das ganze verwenden (Das Cell Programm)
Ich hoffe das bringt dir was befor du ganz verzweifelst
-
APT, Sieh es doch als Ehre an, dass alle Deinen Code nutzen...
Ich habe für Sachen, die rausgingen immer auch nen Programmkopf geliefert. Wenn mir mein Code ohne Kopf begegnet, dann bitte ich freundlich um Nachrüstung... -
Hallo Zusammen,
hab die Linie so mit den ganzen Programmen übernommen! Und natürlich auch verwendet. Hier in Stuttgart bei Mercedes sieht der Programmkopf so aus:;************************************************************
;* Programm : Utility-SRC zum Dialog mittels KCP *
;* Filename : KCPTOOL.SRC *
;* Quelle : KCPMSG.SRC *
;* Zielsystem : KR-C1 *
;* Zielsoftware : V2.2.8 *
;* Kunde : - *
;* Autor : Christian Stein *
;* (c) Ch. Stein AG, 5004 Aarau *
;*==========================================================*
;* AENDERUNGSGESCHICHTE: *
;* Vers. Datum/Visum Beschreibung *
;*----------------------------------------------------------*
;* 0.1 09.08.00 / pk Entwurf *
;* 1.0 10.08.00 / pk Nutzungsfreigabe *
;* 1.1 27.06.11 /ohu Deklarationen hinter die Def-Zeile@ Toud: Dein Beispiel ist für die KRC4...ich hatte das Problem mit der KRC2. Aber Trotzdem Danke.
Und bei der KRC4 hat sich zum Glück da einiges getan und funktioniert besser.
Köpfe werden immer wieder gerne mal entfernt ist manchmal ärgerlich.
Gruß Paulaner -
...mach ich. ist ja schön wenn man merkt dass man ab-und-zu ausser chaos auch mal halbwegs brauchbares zu produzieren scheint. geht dir ja sicher auch so, immerhin spielst du in der top-liga.
...hab grad zur kontrolle in den spiegel geschaut. "christian stein" bin ich trotzdem nicht, da hat sich mein ehemaliger chef zum autor gemacht hat, hehe
@Paulaner
ich glaube mich zu erinnern, dass der 7. softkey auch bei mir manchmal probleme machte, wenn nur leerzeichen angezeigt werden sollten. probier mal für den letzten key irgend ein zeichen das keinem auffällt, z.b. underline _
-
@ Toud: Dein Beispiel ist für die KRC4...ich hatte das Problem mit der KRC2. Aber Trotzdem Danke.
Nicht ganz richtig, das zeugs hab ich letztes Jahr geschrieben und da hatten wir noch keinen KRC4.
Daher weiß ich dass es auf ner KRC 2 auch lauffähig ist, allerdings erst ab dem Softwarestand 5.5.Wenns bei dir nicht läuft haste warscheinlich noch nen älteres Modell, dazu hab ich dann leider doch
nichts.Dann mal noch nen schönes WE
-
Hallo Toud,
ok das wusste ich nicht das man diese Funktionen schon ab der V5.5 verwenden kann. Aber ich habe da eine alte Krüke die Probleme bereitet.
Version: V4.1.7 SP05@APT
ich habe sowas programmiert:
if (bdiAblagePlatz1Frei==false) and (bdiAblagePlatz2Frei==false) then
MSGTXT[]="Alle Plaetze belegt. Robi bewegt sich wieder in Grundstellung "
KEYTXT[]=" Ok | _ | _ | _ | _ | _ | _ "
KCPTOOL (#dialog,MSGTXT[],KEYTXT[],0,0.0,I_FKEY)
return -1
endif
if (bdiAblagePlatz2Frei==true) and (bdiAblagePlatz1Frei==false) then
MSGTXT[]="Greifer wird am Bahnhof 2 abgelegt. "
KEYTXT[]=" Ok | _ | _ | _ | _ | _ | _ "
KCPTOOL (#dialog,MSGTXT[],KEYTXT[],0,0.0,I_FKEY)
return 2
else
if (bdiAblagePlatz2Frei==false) and (bdiAblagePlatz1Frei==true) then
MSGTXT[]="Greifer wird am Bahnhof 1 abgelegt. "
KEYTXT[]=" Ok | _ | _ | _ | _ | _ | _ "
KCPTOOL (#dialog,MSGTXT[],KEYTXT[],0,0.0,I_FKEY)
return 1
else
;beide plätze frei auswahl
repeat
MSGTXT[]="Beide Plaetze frei. Welcher Platz soll angefahren werden? "
KEYTXT[]=" Platz 1 | Platz 2 | _ | _ | _ | _ | Abbrechen "
KCPTOOL (#dialog,MSGTXT[],KEYTXT[],0,0.0,I_FKEY)
until ((i_fkey==1) or (i_fkey==2) or (i_fkey==3))
if (i_fkey==1) thenDas verrückte ist dass der MSGTXT richtig angezeigt wird. So weit so gut. Aber die Buttons wo eigentlich Ok stehen müsste steht immer Weiter!!
Von wo kommt das "weiter"? Auch wenn ich über Satzanwahl springe und mehrmals Meldungen ausgebe erscheint "weiter". Erst bei den Plätzen 1 oder 2 wird es wieder richtig angezeigt.
Selstam seltsam.... Und nirgends habe ich irgendwo im keytxt ein "weiter" verwendet
Gruß Paulaner
Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren
Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen