home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: InfoMgt
/
InfoMgt.zip
/
kim21.zip
/
KMASK.KIM
< prev
next >
Wrap
Text File
|
1995-07-01
|
21KB
|
876 lines
rem Datum : Jun 95
rem Version : 2.1
rem Programm : Maskengenerator
rem Programmierer : JK
deffloat _OS_SYS
rem 0 = WINDOWS / OS2
rem 1 = DOS
_OS_SYS = 0
deffloat a,i,t,flag,taste , _jk_hoehe
defstring objekt
dimfloat _x_pos,1,100
dimfloat _y_pos,1,100
dimfloat _b_pos,1,100
dimfloat _h_pos,1,100
dimfloat _ob_flag,1,100
dimfloat _ob_typ,1,100
dim _ob_id,1,100
dim _ob_inhalt,1,100
dim _ob_flagsA,1,100
dim _ob_flagsB,1,100
dimmemo _memo,32000
rem *** Anzahl der Objekte ***
deffloat _ob_anzahl
defstring _dateiname
rem Fenstergröße
deffloat _x,_y,_breite,_hoehe
_x=2
_y=2
_breite=75
_hoehe=15
rem Hoehe fuer Postionsberechnung Eingestellt auf 640x480
_jk_hoehe=24
_dateiname="NONAME.MSK"
rem Definiert eine Palette mit der Vordergrundsfarbe 7 und Hintergrund 0
def_palette 1,15,0
def_palette 2,1,15
load_dat "icon.dat",a
def_window_st "window",_x,_y,_breite,_hoehe,"KIM-Maskengenerator 1.0"
call fenster_inhalt()
win_paint "window"
set_item "pr2",_dateiname
defstring ttt
while i<>1000
win_ev i
get_item_pos objekt,taste
if taste=13 then
call auswerten(objekt,i)
endif
wend
end
rem ---------------------------------------------------------------------
rem U N T E R P R O G R A M M E
rem ---------------------------------------------------------------------
modul auswerten(char obj,float i)
deffloat a,flag,pos
defstring suche,zeichen,combo_obj,objekt
if obj="datei_1" then
_dateiname="NONAME.MSK"
call fenster_clear()
exitmod
endif
if obj="datei_2" then
call laden()
rem endmod
endif
if obj="datei_3" then
call speichern(0)
exitmod
endif
if obj="datei_4" then
call speichern(1)
exitmod
endif
if obj="datei_5" then
msgbox "Wollen Sie das Programm beenden ?",1,flag,""
if flag=1 then
i=1000
endif
endif
if obj="bearbeiten_1" then
call fixiere_objekte()
exitmod
endif
if obj="bearbeiten_2" then
call neupos_objekte()
exitmod
endif
if obj="bearbeiten_3" then
msgbox "Wählen Sie das Objekt im Fenster mit einem Klick !",0,flag,""
call loesche_objekt()
exitmod
endif
if obj="bearbeiten_4" then
msgbox "Wählen Sie das Objekt aus der Combobox !",0,flag,""
exitmod
endif
rem Falls ein Objekt_neu Menüpunkt gewählt wurde
mid obj,zeichen,1,3
if zeichen="ob_" then
mid obj,zeichen,4,3
val zeichen,flag
call neues_objekt(flag)
exitmod
endif
if obj="p_code" then
call code_bilden()
endif
rem Ein Objekt wurde aus der Combobox ausgewählt
mid obj,zeichen,1,2
if zeichen="ob" then
mid obj,zeichen,3,10
val zeichen,pos
if pos>999 then
rem Es handelt sich um eine Auswahl der Combobox
pos=pos/1000
form pos,zeichen,0,1
objekt="ob"+zeichen
call eig_bearbeiten(pos,objekt)
endif
endif
endmod
modul fenster_inhalt()
def_toolbar "tool",0,0,90,5 ;"border"
def_prompt "pr1",0,0," Datei :"
def_prompt "pr2",0,1," "
def_combo "combo",0,0,15,10
def_scrollbar "scroll",1,0,0,0,0
add_item "combo","scroll"
add_item "tool","pr1","pr2","combo"
def_pulldown_item "p_objekt","&Objekt_neu",1
def_pulldown_item "p_bearbeiten","&Bearbeiten",1
def_pulldown_item "p_code","&Code",0
def_pulldown_item "p_datei","&Datei",1
def_popup_item "datei_1","&Neu"
def_popup_item "datei_2","&Laden"
def_popup_item "datei_3","&Speichern"
def_popup_item "datei_4","Speichern &unter"
def_popup_item "datei_5","&Quit"
def_popup_item "bearbeiten_1","&Fixieren"
def_popup_item "bearbeiten_2","&Position neu"
def_popup_item "bearbeiten_3","&Löschen"
def_popup_item "bearbeiten_4","&Eigenschaften"
def_popup_item "ob_1" ,"Feldname"
def_popup_item "ob_2" ,"String"
def_popup_item "ob_3" ,"Datum"
def_popup_item "ob_4" ,"Zeit"
def_popup_item "ob_5" ,"Text"
def_popup_item "ob_6" ,"Gruppe"
def_popup_item "ob_7" ,"Push-Button"
def_popup_item "ob_8" ,"Radio-Button"
def_popup_item "ob_9" ,"Checkbox"
add_item "p_objekt",..
"ob_1",..
"ob_2",..
"ob_3",..
"ob_4",..
"ob_5",..
"ob_6",..
"ob_7",..
"ob_8",..
"ob_9"
add_item "p_datei","datei_1","datei_2","datei_3","datei_4","datei_5"
add_item "p_bearbeiten","bearbeiten_1","bearbeiten_2","bearbeiten_3","bearbeiten_4"
def_pulldown_menu "menu",1 ;"border"
add_item "menu","p_datei","p_objekt","p_bearbeiten","p_code"
add_item "window","menu","tool"
def_scrollbar "scrollx",0,0,0,0,0
add_item "window","scrollx"
endmod
modul speichern(float flag)
deffloat ok
defstring datei
if flag=1 then
msgbox "Datei speichern ?",1,ok,""
if ok=1 then
if _OS_SYS=1 then
call dateiauswahl("*.msk",datei)
else
load "window","*.msk",datei,"Datei speichern "
endif
if datei="" then
msgbox "Maske wurde nicht gespeichert !",0,ok,""
else
_dateiname=datei
set_item "pr2",_dateiname
call code_speichern(datei)
endif
endif
else
set_item "pr2",_dateiname
call code_speichern(_dateiname)
endif
endmod
modul laden()
deffloat ok
defstring datei
if _OS_SYS=1 then
call dateiauswahl("*.msk",datei)
else
load "window","*.msk",datei,"Datei laden "
endif
if datei="" then
exitmod
else
call code_laden(datei)
_dateiname=datei
set_item "pr2",_dateiname
endif
endmod
modul neues_objekt(float flag)
defstring obj$,zahl$,text$,combo_id$,zahl2$
deffloat l
_ob_anzahl=_ob_anzahl+1
form _ob_anzahl,zahl$,0,1
form _ob_anzahl*1000,zahl2$,0,1
obj$ ="ob"+zahl$
combo_id$="ob"+zahl2$
if flag=1 then
text$="Feldname"+zahl$
def_string obj$,1,_hoehe-5,15,text$;"color on","view only"
endif
if flag=2 then
text$="String"+zahl$
def_string obj$,1,_hoehe-5,15,text$;"color on","border","view only"
endif
if flag=3 then
text$="Datum"+zahl$
def_string obj$,1,_hoehe-5,15,text$;"color on","border","view only"
endif
if flag=4 then
text$="Zeit"+zahl$
def_string obj$,1,_hoehe-5,15,text$;"color on","border","view only"
endif
if flag=5 then
text$="Text"+zahl$
def_text obj$,1,_hoehe-5,15,2,255,text$;"color on","border","view only"
endif
if flag=6 then
text$="Gruppe"+zahl$
def_group obj$,1,_hoehe-5,15,2,text$;"color on","border"
endif
if flag=7 then
text$="PushButton"+zahl$
def_button obj$,1,_hoehe-5,15,"",text$;"auto size","center"
endif
if flag=8 then
text$="RadioButton"+zahl$
def_button obj$,1,_hoehe-5,15,"",text$;"radio"
_ob_flagsA[_ob_anzahl]='"radio"'
endif
if flag=9 then
text$="Checkbox"+zahl$
def_button obj$,1,_hoehe-5,15,"",text$;"checkbox"
_ob_flagsA[_ob_anzahl]='"checkbox"'
endif
rem Combo-Box Element anfügen
def_string combo_id$,0,0,20,text$
add_item "combo",combo_id$
len text$,l
_ob_id[_ob_anzahl]=text$
_x_pos[_ob_anzahl]=1
_y_pos[_ob_anzahl]=_hoehe-5
_b_pos[_ob_anzahl]=l
_h_pos[_ob_anzahl]=1
_ob_flag[_ob_anzahl]=0
_ob_typ[_ob_anzahl]=flag
_ob_inhalt[_ob_anzahl]=""
color_item obj$,1
set_item_status obj$,0,"editmode"
add_item "window",obj$
rem V 2.1
event_on_item "combo","create"
event_on_item "combo","redisplay"
event_on_item "window","redisplay"
endmod
modul fixiere_objekte()
deffloat i,x,y,breite,hoehe,br,ho
defstring obj$,zahl$
for i=1 to _ob_anzahl
rem Objekt nicht gelöscht
if _ob_flag[i]=0 and _ob_typ[i]>0 then
form i,zahl$,0,1
obj$="ob"+zahl$
color_item obj$,2
set_item_status obj$,1,"editmode"
textwidth obj$,"X",breite
textheight obj$,"X",hoehe
get_item_xy obj$,x,y,br,ho
if _jk_hoehe>0 then
hoehe=_jk_hoehe
endif
_x_pos[i]=x/breite
_y_pos[i]=y/hoehe
_b_pos[i]=br/breite
_h_pos[_ob_anzahl]=(ho/hoehe)
endif
next
event_on_item "window","redisplay"
endmod
modul neupos_objekte()
deffloat i,x,y,breite,hoehe,br,ho
defstring obj$,zahl$
for i=1 to _ob_anzahl
form i,zahl$,0,1
obj$="ob"+zahl$
color_item obj$,1
set_item_status obj$,0,"editmode"
next
event_on_item "window","redisplay"
endmod
modul loesche_objekt()
deffloat i,taste,pos
defstring obj,zeichen,combo_obj
call fixiere_objekte()
while i<>1000
win_ev i
get_item_pos obj,taste
mid obj,zeichen,1,2
if zeichen="ob" then
beep
sub_item "window",obj
mid obj,zeichen,3,10
val zeichen,pos
_ob_flag[pos]=1
form pos*1000,zeichen,0,1
combo_obj="ob"+zeichen
sub_item "combo",combo_obj
call toolbar_neu()
i=1000
endif
wend
call neupos_objekte()
endmod
modul code_bilden()
deffloat i,x,y,breite,hoehe,br,ho,l
defstring obj$,zahl$,datei,date
defstring x$,y$,breite$,hoehe$,text$,leer$
datum date
if _OS_SYS=1 then
call dateiauswahl("*.*",datei)
else
load "window","*.*",datei,"Code bilden"
endif
if datei="" then exitmod : endif
kill datei
open 1,datei
puts 1,"rem Programmierer : MASKI 1.0"
puts 1,"rem Datum : ",date
puts 1,"rem ------------------------------------------------------------"
puts 1,""
puts 1,""
puts 1," call fenster_inhalt() "
puts 1,' win_paint "window" '
puts 1," dummy_event "
puts 1," end"
puts 1,""
puts 1,""
puts 1,"MODUL fenster_inhalt()"
puts 1,""
puts 1,'DEF_WINDOW_ST "window",',_x,",",_y,",",_breite,",",_hoehe,',"Test"'
call fixiere_objekte()
rem 1. Schritt Definitionen bilden
for i=1 to _ob_anzahl
form _x_pos[i],x$,0,1
form _y_pos[i],y$,0,1
form _b_pos[i],breite$,0,1
form _h_pos[i],hoehe$,0,1
text$=_ob_inhalt[i]
len text$,l
rem if l<_b_pos[i] then
rem fillstr _b_pos[i]-l,leer$," "
rem text$=text$+leer$
rem endif
rem Objekt nicht gelöscht
if _ob_flag[i]=0 then
if _ob_typ[i]=1 then
if text$="" then text$=" " : endif
puts 1,'DEF_PROMPT "',_ob_id[i],'",',x$,",",y$,',"',text$,'"',
endif
if _ob_typ[i]=2 then
puts 1,'DEF_STRING "',_ob_id[i],'",',x$,",",y$,",",breite$,',"',text$,'"',
endif
if _ob_typ[i]=3 then
puts 1,'DEF_INPUT_DATE "',_ob_id[i],'",',x$,",",y$,",",breite$,',"',text$,'",""',
endif
if _ob_typ[i]=4 then
puts 1,'DEF_INPUT_TIME "',_ob_id[i],'",',x$,",",y$,",",breite$,',"',text$,'",""',
endif
if _ob_typ[i]=5 then
puts 1,'DEF_TEXT "',_ob_id[i],'",',x$,",",y$,",",breite$,",",hoehe$,',255,"',text$,'"',
endif
if _ob_typ[i]=6 then
puts 1,'DEF_GROUP "',_ob_id[i],'",',x$,",",y$,",",breite$,",",hoehe$,',"',text$,'"',
endif
if _ob_typ[i]=7 then
puts 1,'DEF_BUTTON "',_ob_id[i],'",',x$,",",y$,",",breite$,',"","',text$,'"',
endif
if _ob_typ[i]=8 then
puts 1,'DEF_BUTTON "',_ob_id[i],'",',x$,",",y$,",",breite$,',"","',text$,'"',
endif
if _ob_typ[i]=9 then
puts 1,'DEF_BUTTON "',_ob_id[i],'",',x$,",",y$,",",breite$,',"","',text$,'"',
endif
rem Flags anfügen falls welche vorhanden
compress _ob_flagsA[i]
compress _ob_flagsB[i]
puts 1,";",
if _ob_flagsA[i]<>"" then
puts 1,_ob_flagsA[i],
if _ob_flagsB[i]<>"" then
puts 1,",",_ob_flagsB[i]
else
puts 1,""
endif
else
puts 1,'""'
endif
endif
next
puts 1,""
puts 1,""
puts 1,'ADD_ITEM "window",..'
rem 2.Schritt Daten an das Hauptfenster anfügen
for i=1 to _ob_anzahl
if _ob_flag[i]=0 then
if i<>_ob_anzahl then
puts 1,'"',_ob_id[i],'",..'
else
puts 1,'"',_ob_id[i],'"'
endif
endif
next
puts 1,""
puts 1,""
puts 1,"ENDMOD"
close 1
call neupos_objekte()
call in_zw_ablage(datei)
endmod
modul eig_bearbeiten(float nr,char objekt)
deffloat i,taste,pos
defstring obj,zeichen,combo_obj
DEF_WINDOW_ST "win_eig",2,2,75,12,"Eigenschaften"
DEF_PROMPT "x1",2,1,"ID-Kennung "
DEF_STRING "x2",13,1,31,"";"border"
DEF_PROMPT "x3",2,2,"Inhalt "
DEF_STRING "x4",13,2,31,"";"border"
DEF_PROMPT "x5",2,4,'Flags z.B. "border","center","auto size"'
DEF_STRING "x6",2,6,64,"";"border"
DEF_STRING "x7",2,7,64,"";"border"
DEF_BUTTON "x8",2,9,12,""," Schließen "
ADD_ITEM "win_eig","x1","x2","x3","x4","x5","x6","x7","x8"
set_item "x2",_ob_id[nr]
set_item "x4",_ob_inhalt[nr]
set_item "x6",_ob_flagsA[nr]
set_item "x7",_ob_flagsB[nr]
win_paint "win_eig"
while i<>1000
win_ev i
get_item_pos obj,taste
if taste=13 then
if obj="x8" then
get_item "x2",_ob_id[nr]
get_item "x4",_ob_inhalt[nr]
get_item "x6",_ob_flagsA[nr]
get_item "x7",_ob_flagsB[nr]
form nr*1000,zeichen,0,1
combo_obj="ob"+zeichen
set_item combo_obj,_ob_id[nr]
compress _ob_inhalt[nr]
if _ob_inhalt[nr]<>"" then
set_item objekt,_ob_inhalt[nr]
endif
i=1000
endif
endif
wend
event_on_item "win_eig","end"
endmod
modul code_speichern(char datei)
deffloat i,x,y,breite,hoehe,br,ho,l
defstring obj$,zahl$
defstring x$,y$,breite$,hoehe$,text$,leer$
kill datei
open 1,datei
call fixiere_objekte()
puts 1,"MASK"
puts 1,_ob_anzahl
for i=1 to _ob_anzahl
if _ob_flag[i]=0 then
puts 1,_ob_id[i]
puts 1,_ob_typ[i]
puts 1,_x_pos[i]
puts 1,_y_pos[i]
puts 1,_b_pos[i]
puts 1,_h_pos[i]
puts 1,_ob_inhalt[i]
puts 1,_ob_flagsA[i]
puts 1,_ob_flagsB[i]
endif
next
close 1
call neupos_objekte()
endmod
modul code_laden(char datei)
deffloat i
defstring obj$,zahl$
defstring text$
open 1,datei,"r"
gets 1,text$
if text$<>"MASK" then
msgbox "Keine Maskendatei !",0,x,""
close 1
exitmod
endif
call fenster_clear()
gets 1,_ob_anzahl
for i=1 to _ob_anzahl
gets 1,_ob_id[i]
gets 1,_ob_typ[i]
gets 1,_x_pos[i]
gets 1,_y_pos[i]
gets 1,_b_pos[i]
gets 1,_h_pos[i]
gets 1,_ob_inhalt[i]
gets 1,_ob_flagsA[i]
gets 1,_ob_flagsB[i]
next
close 1
call objekt_bilden()
endmod
modul objekt_bilden()
defstring obj$,zahl$,text$,combo_id$,zahl2$
deffloat l,i,flag
for i=1 to _ob_anzahl
form i,zahl$,0,1
form i*1000,zahl2$,0,1
obj$ ="ob"+zahl$
combo_id$="ob"+zahl2$
flag=_ob_typ[i]
if flag=1 then
text$="Feldname"+zahl$
def_string obj$,_x_pos[i],_y_pos[i],_b_pos[i],text$;"color on","view only"
endif
if flag=2 then
text$="String"+zahl$
def_string obj$,_x_pos[i],_y_pos[i],_b_pos[i],text$;"color on","border","view only"
endif
if flag=3 then
text$="Datum"+zahl$
def_string obj$,_x_pos[i],_y_pos[i],_b_pos[i],text$;"color on","border","view only"
endif
if flag=4 then
text$="Zeit"+zahl$
def_string obj$,_x_pos[i],_y_pos[i],_b_pos[i],text$;"color on","border","view only"
endif
if flag=5 then
text$="Text"+zahl$
def_text obj$,_x_pos[i],_y_pos[i],_b_pos[i],_h_pos[i],255,text$;"color on","border","view only"
endif
if flag=6 then
text$="Gruppe"+zahl$
def_group obj$,_x_pos[i],_y_pos[i],_b_pos[i],_h_pos[i],text$;"color on","border"
endif
if flag=7 then
text$="PushButton"+zahl$
def_button obj$,_x_pos[i],_y_pos[i],_b_pos[i],"",text$;"auto size","center"
endif
if flag=8 then
text$="RadioButton"+zahl$
def_button obj$,_x_pos[i],_y_pos[i],_b_pos[i],"",text$;"radio"
_ob_flagsA[_ob_anzahl]='"radio"'
endif
if flag=9 then
text$="Checkbox"+zahl$
def_button obj$,_x_pos[i],_y_pos[i],_b_pos[i],"",text$;"checkbox"
_ob_flagsA[_ob_anzahl]='"checkbox"'
endif
if flag>0 then
compress _ob_inhalt[i]
if _ob_inhalt[i]<>"" then
set_item obj$,_ob_inhalt[i]
endif
rem Combo-Box Element anfügen
def_string combo_id$,0,0,20,text$
add_item "combo",combo_id$
color_item obj$,1
set_item_status obj$,0,"editmode"
add_item "window",obj$
endif
next
rem V 2.1
event_on_item "combo","create"
event_on_item "combo","redisplay"
event_on_item "window","redisplay"
endmod
modul fenster_clear()
deffloat i
defstring zahl$,obj$
if _ob_anzahl=0 then exitmod : endif
rem Alten Bestand löschen ....................
for i=1 to _ob_anzahl
_ob_id[i]=""
_ob_typ[i]=0
_x_pos[i]=0
_y_pos[i]=0
_b_pos[i]=0
_h_pos[i]=0
_ob_inhalt[i]=""
_ob_flagsA[i]=""
_ob_flagsB[i]=""
_ob_flag[i]=0
form i,zahl$,0,1
obj$="ob"+zahl$
sub_item "window",obj$
form i*1000,zahl$,0,1
obj$="ob"+zahl$
sub_item "combo",obj$
next
_ob_anzahl=0
call toolbar_neu()
rem .................................................
endmod
modul in_zw_ablage(char datei)
if _os_sys=0 then
deffloat ok
DEF_WINDOW_ST "tempwin",20,10,40,3,"Kopiere Daten in die Ablage"
win_paint "tempwin"
loadmemo datei,_memo,ok
if ok=1 then
setclip _memo
endif
wait 1
event_on_item "tempwin","end"
endif
endmod
modul toolbar_neu()
defstring obj$,zahl$,text$,combo_id$,zahl2$
deffloat l,i,flag
rem Löschen der Toolbar
sub_item "window","tool"
def_toolbar "tool",0,0,90,5 ;"border"
def_prompt "pr1",0,0," Datei :"
def_prompt "pr2",0,1," "
def_combo "combo",0,0,15,10
def_scrollbar "scroll",1,0,0,0,0
add_item "combo","scroll"
add_item "tool","pr1","pr2","combo"
add_item "window","tool"
win_paint "window"
set_item "pr2",_dateiname
rem Combobox-Inhalt aufbauen
for i=1 to _ob_anzahl
form i,zahl$,0,1
form i*1000,zahl2$,0,1
obj$ ="ob"+zahl$
combo_id$="ob"+zahl2$
flag=_ob_flag[i]
if flag=0 then
rem Combo-Box Element anfügen
def_string combo_id$,0,0,20,_ob_id[i]
add_item "combo",combo_id$
endif
next
rem V 2.1
event_on_item "combo","create"
event_on_item "combo","redisplay"
endmod
rem drive.inc