 '
 'Dialib  (C)1993  Bernd Schieferdecker
 '
 ' DIALOGBOX AUFBAUEN, BEARBEITEN UND BILDSCHIRM RESTAURIEREN
 '
 'Start_Edit: Nummer des ersten editierbaren Feldes (sonst 0)
 '      Tree: Adresse des Objektbaums von GADDR
 '       Ret: Nummer des Knopfes, mit dem der Dialog verlassen wurde
 '
 DEF PROC Form_All(Start_Edit%L,Tree%L,R Ret%L)
   LOCAL X%L,Y%L,W%L,H%L
   Form_Center(Tree%L,X%L,Y%L,W%L,H%L)
   Form_Dial(0,X%L,Y%L,W%L,H%L)
   Form_Dial(1,X%L,Y%L,W%L,H%L)
   Objc_Draw(0,8,X%L,Y%L,W%L,H%L,Tree%L)
   Form_Do(Start_Edit%L,Tree%L,Ret%L)
   Form_Dial(2,X%L,Y%L,W%L,H%L)
   Form_Dial(3,X%L,Y%L,W%L,H%L)
   Change_Object(0,0,Ret%L,Tree%L)
 END_PROC
 DEF PROC Form_Place(X%L,Y%L,Start_Edit%L,Tree%L,R Ret%L)
   WPOKE Tree%L+16,X%L+3: WPOKE Tree%L+18,Y%L+3
   LOCAL W%L= WPEEK(Tree%L+20)+6,H%L= WPEEK(Tree%L+22)+6:'  weil 3+3 Rand (s.o.)
   Form_Dial(0,X%L,Y%L,W%L,H%L)
   Form_Dial(1,X%L,Y%L,W%L,H%L)
   Objc_Draw(0,8,X%L,Y%L,W%L,H%L,Tree%L)
   Form_Do(Start_Edit%L,Tree%L,Ret%L)
   Form_Dial(2,X%L,Y%L,W%L,H%L)
   Form_Dial(3,X%L,Y%L,W%L,H%L)
   Change_Object(0,0,Ret%L,Tree%L)
 END_PROC' Idee von Ralf Schlegel, OK! 13, S. 25
 '
 ' TEXT AUS EDITIERFELD ERMITTELN bzw. EINTRAGEN
 '
 DEF PROC Get_Text(Obj%L,Tree%L,R Txt$)
    LOCAL Obj_Strukt%L,Ob_Spec%L,Tedinfo%L,Te_Ptext%L,A$=""
    Obj_Strukt%L=Tree%L+24*Obj%L
    Ob_Spec%L=Obj_Strukt%L+12
    Tedinfo%L= LPEEK(Ob_Spec%L)
    Te_Ptext%L= LPEEK(Tedinfo%L)'Zeiger auf Text!!!
    WHILE PEEK(Te_Ptext%L)<>0:A$=A$+ CHR$( PEEK(Te_Ptext%L)):Te_Ptext%L=Te_Ptext%L+1: WEND
    Txt$=A$
 END_PROC
 DEF PROC Put_Text(Obj%L,Tree%L,Txt$)
    LOCAL Obj_Strukt%L,Ob_Spec%L,Tedinfo%L,Te_Ptext%L,I%L
    Obj_Strukt%L=Tree%L+24*Obj%L
    Ob_Spec%L=Obj_Strukt%L+12
    Tedinfo%L= LPEEK(Ob_Spec%L)
    Te_Ptext%L= LPEEK(Tedinfo%L)'Zeiger auf Text!!!
    Txt$=Txt$+ CHR$(0)
    FOR I%L=1 TO LEN(Txt$)
       POKE Te_Ptext%L+I%L-1, ASC( MID$(Txt$,I%L,1))
    NEXT I%L
 END_PROC
 '
 ' ATTRIBUTE VON BUTTONS NDERN (Objektstatus)
 '
 ' Flag: 1 = Attribut verleihen, 0 = Attribut lschen
 ' Obj : Nummer des Objekts
 ' Tree: Adresse des Objektbaums im Speicher
 '
 DEF PROC But_Selected(Flag%L,Obj%L,Tree%L)
   Change_Object(0,Flag%L,Obj%L,Tree%L)
 END_PROC
 DEF PROC But_Crossed(Flag%L,Obj%L,Tree%L)
   Change_Object(1,Flag%L,Obj%L,Tree%L)
 END_PROC
 DEF PROC But_Checked(Flag%L,Obj%L,Tree%L)
   Change_Object(2,Flag%L,Obj%L,Tree%L)
 END_PROC
 DEF PROC But_Disabled(Flag%L,Obj%L,Tree%L)
   Change_Object(3,Flag%L,Obj%L,Tree%L)
 END_PROC
 DEF PROC But_Outlined(Flag%L,Obj%L,Tree%L)
   Change_Object(4,Flag%L,Obj%L,Tree%L)
 END_PROC
 DEF PROC But_Shadowed(Flag%L,Obj%L,Tree%L)
   Change_Object(5,Flag%L,Obj%L,Tree%L)
 END_PROC
 '
 DEF PROC Change_Object(Nr%L,Flag%L,Obj%L,Tree%L)
    LOCAL Obj_Struct%L,Ob_State%L,State%L
    Obj_Strukt%L=Tree%L+24*Obj%L' Adresse der Struktur
    Ob_State%L=Obj_Strukt%L+10' Adresse von OB_STATE
    State%L= WPEEK(Ob_State%L)'  Wert von OB_STATE
    BIT (Nr%L,State%L)=Flag%L' 1=aktiv, 0=nicht aktiv
    WPOKE Ob_State%L,State%L
 END_PROC
 '
 ' ABFRAGEN, OB BUTTON EINEN BESTIMTEN OBJEKTSTATUS HAT
 '
 '     Obj : Objektnummer
 '    Tree : Adresse des Objektbaums im Speicher
 ' Rckgabe: -1 = Attribut ist aktiv
 '            0 = Attribut nicht gesetzt
 '
 DEF FN But_Selected%L(Obj%L,Tree%L)=FN Get_Object_Status%L(0,Obj%L,Tree%L)
 DEF FN But_Crossed%L(Obj%L,Tree%L)=FN Get_Object_Status%L(1,Obj%L,Tree%L)
 DEF FN But_Checked%L(Obj%L,Tree%L)=FN Get_Object_Status%L(2,Obj%L,Tree%L)
 DEF FN But_Disabled%L(Obj%L,Tree%L)=FN Get_Object_Status%L(3,Obj%L,Tree%L)
 DEF FN But_Outlined%L(Obj%L,Tree%L)=FN Get_Object_Status%L(4,Obj%L,Tree%L)
 DEF FN But_Shadowed%L(Obj%L,Tree%L)=FN Get_Object_Status%L(5,Obj%L,Tree%L)
 '
 DEF FN Get_Object_Status%L(Nr%L,Obj%L,Tree%L)
   LOCAL Obj_Struct%L,Ob_State%L,State%L
   Obj_Strukt%L=Tree%L+24*Obj%L' Adresse der Struktur
   Ob_State%L=Obj_Strukt%L+10' Adresse von OB_STATE
   State%L= WPEEK(Ob_State%L)'  Wert von OB_STATE
   RETURN BIT(Nr%L,State%L)
 END_FN
 '

