|
| |
Пост N: 23
Зарегистрирован: 03.01.10
|
|
Отправлено: 09.07.10 20:56. Заголовок: Append from
Есть почти готовый пример. Правда делал для COPY TO, но ведь какая разница. Немного изменил, но что-то в этом роде.... k:=0 l:= Kdonor->(LastRec()) // или еще как-нибудь посчитать // инициализация индикатора D_IRWait(x+5,y+1,"отбор и поиск данных ",l,k,40,; Menucolor,MenuHcolor,.F.,.F.,.F.) // копирование информации @ x+1,y+30 say "всего: " +Str(l,6) // изменено для примера! @ x+2,y+28 say "прочитано: "+Str(k,6) copy to (WORK+"wrk401r") rest for ChangeDate(m->maildate,m->mailTime,@k) Function ChangeDate(maildate,mailTime,k) Local mDate,ret k++ // !!! D_IRWait(,,"отбор и поиск данных ",,k,40,; Menucolor,MenuHcolor,.F.,.F.,.F.) // это ... уже не важно mDate := if(Empty(Kdonor->DATEL),Kdonor->DATEF,Kdonor->DATEL) ret := ; mDate > maildate.or.(mDate = maildate.and.; TimeToSec(mailTime) < TimeToSec(Kdonor->TIMEL)) Return(ret) // собственно и есть индикатор и в этом окне можно показывать // соотношение всего / прочитано FUNCTION D_IRWait(Lin,Col,Text,Maxps,Pos,Li,Lc,Hc,Shad,Rest,Soun) STATIC nIntens,nBln,Ucolor,Scr STATIC eFirst:=.T.,Lcolor,HColor STATIC nOld,nProc,Txt,Sn,Sh,Rs STATIC nT,nL,nR,nB,Lind,MaxPos LOCAL Ocolor:=SETCOLOR(),n,prc,l // закрытие "змейки" IF PCOUNT()=0 IF Rs RESTSCREEN(nT-1,nL-1,nB+2,nR+2,Scr) ENDIF nOld:=nProc:=0 ; eFirst:=.T. IF Sn TONE (50,1) ;TONE (200,1); TONE (100,2); TONE (150,1) ENDIF SET(_SET_INTENSITY,nIntens) ; SETBLINK(nBln) Lcolor:=HColor:=Ucolor:=Scr:=nIntens:=nOld:=nProc:=Txt:=NIL nT:=nL:=nR:=nB:=MaxPos:=NIL SETCOLOR(Ocolor) RETURN (NIL) ENDIF // первое вхождение IF eFirst Maxpos := IF( Maxps==NIL,1,MaxPs) Pos := IF( Pos==NIL,0,Pos) Lind := IF( Li==NIL,20,IF(Li< 20, 20 , Li ) ) Txt := Text LColor := IF(LC==NIL,SETCOLOR(),LC) HColor := IF(HC==NIL,"*"+SETCOLOR(),HC) Sh := IF(Shad==NIL,.T.,Shad) Rs := IF(Rest==NIL,.T.,Rest) Sn := IF(Soun==NIL,.T.,Soun) eFirst:=.F. ; nOld:=0 ; nProc:=0 SET(_SET_INTENSITY,.T.) SETBLINK(.F.) SETCOLOR(LColor) Ucolor:=LEFT(HColor,AT(",",Hcolor)-1)+"*" nT:=IF(Lin==NIL,INT(MAXROW()/2-2),Lin) nL:=IF(Col==NIL,INT((MAXCOL()-Lind-6)/2),Col) nB:=IF(Lin==NIL,INT(MAXROW()/2+2),nT+5) nR:=IF(Col==NIL,INT((MAXCOL()-Lind-6)/2+Lind+8),Col+Lind+8) Scr:=SAVESCREEN(nT,nL,nB+1,nR+1) D_ScrShow(.F.) nB := IF(Txt == NIL, nB , nB-1) IF Sh SHADOW(nT+1,nL+2,nB+1,nR+1) ENDIF @ nT,nL CLEAR TO nB,nR-1 DISPBOX(nT,nL,nB,nR-1,B_SINGLE,Lcolor) D_ScrShow(.T.) nT++ ; nL++ ; nB-- ; nR-- IF TxT == NIL @ nT,nL+Lind/2-13 SAY "Всего " + TRANSFORM(MaxPos,"99999999"); COLOR LColor ELSE @ nT,nL+INT((nR-nL+1-LEN(Txt))/2) SAY Txt ; COLOR LColor ENDIF @ nT+1,nL SAY "0%" Color LColor @ nT+1,nL+2 SAY REPLICATE("-",Lind) Color HColor @ nT+1,nR-4 SAY "100%" Color LColor *@ nT+1,nL+2 SAY REPLICATE(" ",Lind) Color HColor IF Txt == NIL @ nT+2,nL+Lind/2-13 SAY "Обработано " + TRANSFORM(Pos,"99999999") ; COLOR LColor ENDIF IF Txt<>Text Txt:=Text @ nT,nL+1 SAY SPACE(nR-nL-3) COLOR LColor @ nT,nL+INT((nR-nL+1-LEN(Txt))/2) SAY Txt COLOR LColor ENDIF ELSEIF Pos < MaxPos // еще не конец n:=INT(Lind/MaxPos*Pos) Prc:=ROUND(Pos/MaxPos*100,0) IF n != nOld @ nT+1,nL+2+nOld SAY REPLICATE(" ",n-nOld) COLOR ("*"+HColor) ENDIF IF Txt == NIL @ nT+2,nL+Lind/2-2 SAY TRANSFORM(Pos,"99999999") COLOR LColor ENDIF IF Txt<>Text Txt:=Text IF Txt == NIL Txt :="" ENDIF @ nT,nL+1 SAY SPACE(nR-nL-3) COLOR LColor @ nT,nL+INT((nR-nL+1-LEN(Txt))/2) SAY Txt COLOR LColor ENDIF IF prc != nProc IF n > 1 l:=ALLTRIM(STR(Prc)) @ nT+1,nL+2 SAY CENTERS(l+"%",n) COLOR Ucolor ENDIF ENDIF nProc := prc ; nOld := n ELSE // все @ nT+1,nL+2 SAY REPLICATE(" ",Lind) COLOR ("*"+HColor) @ nT+2,nL+Lind/2-2 SAY IF(Txt==NIL,TRANSFORM(Pos,"99999999"),""); COLOR LColor @ nT+1,nL+Lind/2-1 SAY "100%" PICTURE "XXXX" COLOR UColor @ nT+1,nL+2 SAY CENTERS("100%",Lind) COLOR Ucolor n := 0 nOld := 0 Pos := 0 ENDIF RETURN (NIL)
|