| TIP: Click on subject to list as thread! | ANSI |
| echo: | |
|---|---|
| to: | |
| from: | |
| date: | |
| subject: | [2/6] Formlib |
>>> Part 2 of 6...
Attrib = f_f->titattrib;
fast_gotoxy(40 - (strlen(f_f->formtitle) /2),1);
fast_cprintf("%s",f_f->formtitle);
}
while(count maxfields)
{
Attrib = f_f->fieldtitattrib;
tempx = f_f->fieldx[count] - strlen(f_f->fieldtitles[count]) -1;
tempy = f_f->fieldy[count];
fast_gotoxy(tempx,tempy);
fast_cprintf("%s",f_f->fieldtitles[count]);
fast_gotoxy(f_f->fieldx[count],f_f->fieldy[count]);
Attrib = f_f->fieldattrib;
fast_cprintf("%*c",f_f->fieldlen[count],' ');
if(f_f->havedata == FORMTRUE)
{
fast_gotoxy(f_f->fieldx[count],f_f->fieldy[count]);
fast_cprintf("%s",f_f->data[count]);
}
count++;
}
FORM_showeditmode(1);
}
int get_form_input(struct form* f_f,int startfield)
{
int key = 0,curfield,curpos = 0,count = 0,change = FORMFALSE;
int maxpos = 1;
int maxlen;
int maxfield = f_f->maxfields;
int insmode = 1;
char fdata[FORMMAXFIELD][80];
char *ptr;
if(startfield > maxfield || startfield < 0) curfield = 0;
else curfield = startfield;
maxlen = f_f->fieldlen[curfield];
if(f_f->havedata == FORMTRUE)
{
while(count data[count]);count++;}
maxpos = strlen(fdata[curfield]);
}
else
{
count = 0;
while(count < maxfield) strcpy(fdata[count++],"");
}
FORM_puthelp(f_f,curfield);
FORM_repos(f_f,curfield,curpos);
Attrib = f_f->fieldattrib;
fast_cursortype(NORMALCURSOR);
while(key != END_FORM_INPUT)
{
key = FORM_getkey();
switch(key)
{
case UARROW :fdata[curfield][maxpos] = '\0';
if(curfield > 0) curfield--;
else curfield = maxfield-1;
curpos = 0;maxpos = strlen(fdata[curfield]);
maxlen = f_f->fieldlen[curfield];
FORM_puthelp(f_f,curfield);
FORM_repos(f_f,curfield,curpos);
break;
case DARROW :fdata[curfield][maxpos] = '\0';
if(curfield < maxfield-1) curfield++;
else curfield = 0;
curpos = 0;maxpos = strlen(fdata[curfield]);
maxlen = f_f->fieldlen[curfield];
FORM_puthelp(f_f,curfield);
FORM_repos(f_f,curfield,curpos);
break;
case RARROW :if(curpos < maxpos) FORM_repos(f_f,curfield,++curpos);
break;
case LARROW :if(curpos > 0) FORM_repos(f_f,curfield,--curpos);
break;
case HOME :fdata[curfield][maxpos] = '\0';
curpos = 0;curfield = 0;maxpos = strlen(fdata[curpos]);
FORM_puthelp(f_f,curfield);
FORM_repos(f_f,curfield,curpos);
break;
case END :fdata[curfield][maxpos] = '\0';
curpos = 0;curfield = 0;maxpos = strlen(fdata[curpos]);
FORM_puthelp(f_f,curfield);
FORM_repos(f_f,curfield,curpos);
break;
case ENTER :fdata[curfield][maxpos] = '\0';
if(curfield < maxfield-1) curfield++;
else curfield = 0;
curpos = 0;maxpos = strlen(fdata[curfield]);
maxlen = f_f->fieldlen[curfield];
FORM_puthelp(f_f,curfield);
FORM_repos(f_f,curfield,curpos);
break;
case BSP :if(curpos > 0)
{
change = FORMTRUE;
count = curpos;
ptr = &fdata[curfield][curpos-1];
while(count < maxpos)
{
*ptr++ = fdata[curfield][count++];
}
curpos--;
fdata[curfield][--maxpos] = '\0';
FORM_repaint(f_f,curfield,fdata[curfield]);
FORM_repos(f_f,curfield,curpos);
}
break;
case INSERT :insmode ^= 1;FORM_showeditmode(insmode);
insmode == 0 ? fast_cursortype(NORMALCURSOR):
fast_cursortype(SOLIDCURSOR);
break;
case DELETE :if(maxpos > 0)
{
change = FORMTRUE;
count = curpos;
ptr = &fdata[curfield][curpos];
if(curpos < maxpos)
{
while(count < maxpos)
{
>>> Continued to next message...
___ Blue Wave/DOS v2.21
--- Maximus 3.01
* Origin: The Software Parlour (3:635/544)SEEN-BY: 50/99 78/0 620/243 623/630 632/349 635/503 544 727 711/401 409 410 SEEN-BY: 711/413 430 808 809 932 934 712/515 713/888 714/906 800/1 7877/2809 @PATH: 635/544 50/99 711/808 809 934 |
|
| SOURCE: echomail via fidonet.ozzmosis.com | |
Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.