home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung 2 / Power-Programmierung CD 2 (Tewi)(1994).iso / c / library / dos / menu / kiwi / demoprg / edit.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-03-29  |  7.9 KB  |  346 lines

  1. #include<kiwi_inc.h>
  2. #include<kiwilib.h>
  3. #include<kiwipro.h>
  4. #include<demopro.h>
  5.  
  6.  
  7. /*     initialisiere Editmenu                    */
  8. MENU edits[6]={
  9. "Datensatz     ",0,1,"Eingabe eines kompletten Datensatzes",
  10. "Texteingabe   ",0,1,"Eingabe einer Textpassage",
  11. "Passwort      ",0,1,"Verdeckte Eingabe eines Passwortes",
  12. "──────────────",-1,0,"",
  13. "Radiobuttons  ",0,1,"Zeigt die Möglichkeiten mit Radiobuttons in einer Masken",
  14. "List & Buttons",0,1,"Zeigt die Möglichkeiten mit Radiobuttons in einer Masken",
  15. };
  16.  
  17.  
  18.  
  19.  
  20. /*     Definiere Datensatz                    */
  21. struct datensatz{    
  22.     char anrede[8];
  23.     char vorname[35];
  24.     char name[35];
  25.     int plz;
  26.     char ort[50];
  27.     char strasse[50];
  28.     int alter;
  29.     DATUM tag;
  30.     ZEIT uhr;
  31.     float groesse;
  32.     long verdienst;
  33. };
  34.  
  35.  
  36. #define STRING_LEN 100
  37. extern int screen_mode;
  38. extern long int maus_speed;
  39.  
  40. /*****************************************************************************
  41. *Name :editmenu
  42. *Typ  :int
  43. *Zweck:Steuert das Geschehen bei editmenu
  44. *
  45. *
  46. *        Name    Typ    Zweck
  47. *Aufrufpara :
  48. *
  49. *Rueckgabep :
  50. *
  51. *Funktionswt:        0    Immer
  52. *
  53. *****************************************************************************/
  54. int editmenu()
  55. {
  56. int i,c,wahl,ptr,alter1=0,alter2=0;
  57. WINDOW sw1=0,sb=0,pw=0,sw2=0,win=0;
  58. struct datensatz record;
  59. char text[6][STRING_LEN],name1[20],name2[20];
  60. char string[30];
  61. VSCREEN vs;
  62. RADIO radio1=2,radio2=4;
  63.  
  64.  
  65. init_string(string,sizeof(string));    /* loesche Daten    */
  66. for(i=0;i<6;i++)init_string(text[i],sizeof(text[i]));
  67. init_string(record.anrede,sizeof(record));
  68.  
  69. set_help_name("Editor");
  70. wahl=choose_sub_menu(edits,6,&sb);
  71. switch(wahl){
  72.  
  73. case 0:    set_help_name("Datensatz Eingabe");
  74.     if(dialog2("Sollen alle Eingabefelder invertiert werden \n oder nur das aktuelle Eingabefeld",
  75.         "Alle","Nur Eingabe",AM,AM)==1)
  76.         set_scanf(INVERT_ALL);
  77.     else    set_scanf(INVERT_INPUT);
  78.  
  79.     set_color_table(4);
  80.     init_editor(EDIT_ROW);
  81.     set_edit_mode(EDIT_EXIT_TASTEND);
  82.     set_edit_mode(EDIT_EXIT_CUREND);
  83.     set_scanf_exit_code(1,F9,0);
  84.  
  85. /******************************************************************************
  86. Code generated by KIWI ScreenManager V 1.00 
  87. generate at Date :12.11.1990  Time :16:40:47.40
  88. ******************************************************************************/
  89.  
  90. sw1=load_window("DEMO10  .WND");
  91.  
  92.  
  93. i=scanf_mask(sw1,0,    "x",    record.anrede,    /* Type=S Len=  8  */
  94.                 record.vorname,/* Type=S Len= 35  */
  95.                 record.name,    /* Type=S Len= 35  */
  96.                 &record.plz,    /* Type=D Len=  4  */
  97.                 record.ort,    /* Type=S Len= 50  */
  98.                 record.strasse,/* Type=S Len= 50  */
  99.                 &record.alter,    /* Type=D Len=  2  */
  100.                 &record.tag,    /* Type=M Len=  0  */
  101.                 &record.uhr,    /* Type=T Len=  0  */
  102.                 &record.groesse,/* Type=F Len= 10  */
  103.                 &record.verdienst);/* Type=L Len= 10  */
  104.  
  105.  
  106. close_window(sw1);
  107.  
  108. /************************************ EOC *************************************/
  109.  
  110.  
  111.  
  112.     set_color_table(0);
  113.     NORMAL
  114.     break;
  115.  
  116. case 1:    set_help_name("Text Eingabe");
  117.     sw1=open_vs_window("Eingabe Text",8,5,72,14,DOPPELT,105,10);
  118.     sw2=open_window("Kontrollfenster",8,16,72,24,EINFACH);
  119.     vs=get_linked_screen(sw1);
  120.     link_virtuell_screen(vs,sw2,0,0);
  121.  
  122.     init_editor(EDIT_FIELD);/* Schalte Editor auf Feldmodus    */
  123.     display_string("Geben Sie bitte den Text ein. Ende mit ESC",sw1,AM,1);
  124.     set_window_color(sw1,FLIP);
  125.     wlocate(sw1,1,1);/* zeige Eingangsfeld        */
  126.     for(i=0;i<6;i++)display_string2(text[i],sw1,2,2+i,sizeof(text[0]));
  127.     ptr=0;
  128.  
  129.     do
  130.     {
  131.         if(ptr % 2)set_edit_mode(EDIT_UPPER_ONLY);
  132.         else       set_edit_mode(EDIT_LOWER_ONLY);
  133.  
  134.         c=edit_string(text[ptr],sw1,2,2+ptr,sizeof(text[ptr]));
  135.         if(c==13 || c==14 || c==206 || c==202)ptr++;
  136.         else if(c==208)ptr--;
  137.         /* Gleiches Spiel wie bei Datensatzeingabe    */        
  138.         if(ptr<0)ptr=5;
  139.  
  140.     }while(c!=27 && ptr<6);
  141.  
  142.     set_edit_mode(EDIT_NO_CASE);
  143.     set_window_color(sw1,FLIP);
  144.     display_string("Beliebige Taste für weiter",sw1,AM,8);
  145.     wait_of_action();
  146.  
  147.     close_window(sw2);
  148.     close_window(sw1);
  149.     break;
  150.  
  151. case 2:    set_help_name("Passwort Eingabe");
  152.     sw1=open_window("Eingabe Passwort",8,10,72,17,DOPPELT);
  153.     init_editor(EDIT_ROW);
  154.     display_string("Geben Sie bitte das Passwort ein",sw1,AM,1);
  155.     set_window_color(sw1,FLIP);
  156.     set_edit_mode(EDIT_CURSOR_OFF);/* Cursor weg    */
  157.     set_edit_mode(EDIT_INSERT_OFF);/* kein Insertmode    */
  158.     /* Eingabe erfolgt in sw1, aber pw wird druebergelegt    */
  159.     wahl=wait_input();    
  160.     pw=load_window("demo11.wnd");
  161.     ungetch_keyboard(wahl);
  162.     edit_string(string,sw1,AM,2,sizeof(string));
  163.     close_window(pw);
  164.     /* Jetzt zeige was eingegeben wurde    */
  165.     set_edit_mode(EDIT_CURSOR_ON);
  166.     set_edit_mode(EDIT_INSERT_ON);
  167.     set_window_color(sw1,FLIP);
  168.     display_string("Ihre Eingabe war ",sw1,AM,3);
  169.     display_string(string,sw1,AM,4);
  170.     display_string("Beliebige Taste für weiter",sw1,AM,5);
  171.     wait_of_action();
  172.     close_window(sw1);
  173.     break;
  174.  
  175. case 3: break;
  176.  
  177. case 4:    set_help_name("Radiobuttons");
  178.     init_string(name1,sizeof(name1));
  179.     init_string(name2,sizeof(name2));
  180.     win=load_window("radio1.wnd");
  181.     scanf_mask(win,0,"x",    name1,        /* Type=S Len= 20  */
  182.                 &alter1,        /* Type=D Len=  2  */
  183.                 &radio1,        /* Type=R Len=  6  */
  184.                 &radio2,        /* Type=R Len=  6  */
  185.                 name2,        /* Type=S Len= 20  */
  186.                 &alter2);        /* Type=D Len=  2  */
  187.  
  188.  
  189.     close_window(win);
  190.     break;
  191.  
  192. case 5:    display_file_content();    
  193.     break;
  194.  
  195. default:break;
  196. }
  197.  
  198. close_window(sb);
  199. return(0);
  200. }
  201.  
  202.  
  203.  
  204.  
  205. /*****************************************************************************
  206. *Name :kill_selectet_file
  207. *Typ  :int
  208. *Zweck:Loescht die datei mit remove
  209. *
  210. *
  211. *        Name    Typ    Zweck
  212. *Aufrufpara :    pfad    char*    Pfad
  213. *        datei    char*    Dateiname
  214. *
  215. *Rueckgabep :
  216. *
  217. *Funktionswt:        0    Immer
  218. *
  219. *****************************************************************************/
  220. int kill_selectet_file(char *file)
  221. {
  222.  
  223. remove_file(file);    /* Loesche Datei        */
  224.  
  225. return(0);
  226. }
  227.  
  228.  
  229.  
  230. /*****************************************************************************
  231. *Name :print_selectet_file
  232. *Typ  :int
  233. *Zweck:Druckt die Datei
  234. *
  235. *
  236. *        Name    Typ    Zweck
  237. *Aufrufpara :    pfad    char*    Dateipfad
  238. *        datei    char*    Dateiname
  239. *
  240. *Rueckgabep :
  241. *
  242. *Funktionswt:        -1    Datei nicht da sonst 0
  243. *
  244. *****************************************************************************/
  245. int print_selectet_file(char *file)
  246. {
  247. unsigned char ch;
  248. FILE *in;
  249. WINDOW win1;
  250.  
  251. if((in=fopen(file,"rb"))==NULL)/* Oeffne Datei        */
  252. {
  253.     set_error_name("Dateilesen Fehler");
  254.     get_error();
  255.     return(-1);
  256. }
  257.  
  258. win1=open_window("Hinweis",20,15,60,20,EINFACH);
  259. display_string("Escape Taste für Beenden",win1,AM,3);
  260. do
  261. {
  262.     ch=fgetc(in);        /* Lese zeichen    */
  263.     print_char(ch,1);    /* Auf Druckausgabkanal    */
  264.  
  265. }while(!feof(in) && input()!=27);
  266.  
  267. flush_printer();
  268. fclose(in);
  269. close_window(win1);
  270.  
  271. return(0);
  272. }
  273.  
  274.  
  275. #include<kiwiwin.h>
  276.  
  277.  
  278. int frontcolor(struct inter_func_com *ipc)
  279. {
  280. int col;
  281. UCHAR atr;
  282. WINDOW win,winpos;
  283.  
  284. col=(*(int *)(ipc->ptr));
  285. win=ipc->win;
  286.  
  287. if((winpos=get_window_pos(win-1))==(-1))return(0);
  288. atr=(window_typ[winpos].attribut & 240);
  289.  
  290. switch(col){
  291. case 0: set_window_attribut(win,(VSCHWARZ | atr));
  292.     break;
  293. case 1: set_window_attribut(win,(VBLAU | atr));
  294.     break;
  295. case 2: set_window_attribut(win,(VGRUEN | atr));
  296.     break;
  297. case 3: set_window_attribut(win,(VROT | atr));
  298.     break;
  299. case 4: set_window_attribut(win,(VMAGENTA | atr));
  300.     break;
  301. case 5: set_window_attribut(win,(VWEIS | atr));
  302.     break;
  303. default :break;
  304. }
  305.  
  306. return(0);
  307. }
  308.  
  309.  
  310.  
  311. int backcolor(struct inter_func_com *ipc)
  312. {
  313. int col;
  314. UCHAR atr;
  315. WINDOW win,winpos;
  316.  
  317. col=(*(int *)(ipc->ptr));
  318. win=ipc->win;
  319.  
  320. if((winpos=get_window_pos(win-1))==(-1))return(0);
  321. atr=(window_typ[winpos].attribut & 15);
  322.  
  323. switch(col){
  324. case 0: set_window_attribut(win,(atr | HSCHWARZ));
  325.     break;
  326. case 1: set_window_attribut(win,(atr | HBLAU));
  327.     break;
  328. case 2: set_window_attribut(win,(atr | HGRUEN));
  329.     break;
  330. case 3: set_window_attribut(win,(atr | HROT));
  331.     break;
  332. case 4: set_window_attribut(win,(atr | HMAGENTA));
  333.     break;
  334. case 5: set_window_attribut(win,(atr | HWEIS));
  335.     break;
  336. default :break;
  337. }
  338.  
  339. return(0);
  340. }
  341.  
  342.  
  343.  
  344.  
  345.  
  346.