fox.1djelovic,
Ljubitelji Lisice,
Dobrodošli u najbržu temu na Sezamu.
fox.2dr.grba,
-> #1, djelovic>> Dobrodošli u najbržu temu na Sezamu.
A sad da mi svaki obeća po jedno piće (:
fox.3sbrk,
-> #2, dr.grbaSB> >> Dobrodošli u najbržu temu na Sezamu.
SB>
SB> A sad da mi svaki obeća po jedno piće (:
Evo ja oću, al' da ne vodiš porodicu. :)
fox.4djelovic,
-> #2, dr.grba> A sad da mi svaki obeća po jedno piće (:
Polako, sad Foksovci tek treba da opravdaju poverenje :). Moj najveći strah
je da će ova tema ostati prazna ako Maksima zgazi autobus :). Zato Max, pazi
kako prelaziš ulicu.
fox.5ab.comp,
-> #1, djelovic ==> Dobrodošli u najbržu temu na Sezamu.
Mašala!
Pozdrav
█ █ █ █
▄▄█ █ █▄▄ █▄▄
fox.6mradic,
čiveli! Dobili smo svoju temu! Ojha! ;)
Treba opravdati poverenje, pa, po protokolu, reč dajem iskusnijim
Fox-ovcima od sebe... GO FOR IT! :)
fox.7goxx,
-> #6, mradic■ čiveli! Dobili smo svoju temu! Ojha! ;)
Dosta bre više sa tim radovanjem. ;)) Punite nam pad bezveze. Ili pišite
nešto ili da vas vratimo u baze.podataka. ;)))
Goran
fox.8max.headroom,
-> #4, djelovic> Polako, sad Foksovci tek treba da opravdaju poverenje :).
> Moj najveći strah je da će ova tema ostati prazna ako
> Maksima zgazi autobus :). Zato Max, pazi kako prelaziš
> ulicu.
Od kada pišem u temu, dooobro gledam em levo, em desno :) Vernim po-
klonicima Fox-a (starim i novopečenim) spremam seriju o BROWSE-ru.
Izlazi za koji dan.
fox.9max.headroom,
------------------------------------------------------------------------
ANSWERS TO COMMONLY ASKED QUESTIONS
FOXPRO FOR WINDOWS V2.5
------------------------------------------------------------------------
MAIN TABLE OF CONTENTS
Cross-Platform Questions
Interface Features
Report Writer
Screen Builder
Product Support Questions
Na FAQ se nadovezuje i:
------------------------------------------------------------------------
ADDITIONAL INFORMATION ABOUT FOXPRO FOR WINDOWS V2.5
------------------------------------------------------------------------
faqfp25w.arjfox.10max.headroom,
PSSQA.TXT
**********************************************************
Answers to Commonly Asked Questions About
Microsoft(R) FoxPro(R) for Windows(TM) Version 2.6
(C)1994 Microsoft Corporation. All Rights Reserved.
**********************************************************
========
CONTENTS
========
Part Description
---- -----------
1 Cross-Platform
2 Interface Features
3 Report Writer
4 Screen Builder
5 Printer Drivers
-----------------------------------------------------------
Na FAQ se nadovezuje i:
README.TXT
**********************************************************
Release Notes for
Microsoft(R) FoxPro(R) for Windows(TM) Version 2.6
(C)1994 Microsoft Corporation. All Rights Reserved.
This README provides information not contained in the
FoxPro online Help file or print documentation, and provides
corrections to both. Information in Help is more current than
information in the print documentation.
**********************************************************
=========
CONTENTS
=========
Part Description
---- -----------
1 New Features in FoxPro 2.6
2 New and Enhanced Commands and Functions
3 Notes about the Catalog Manager
4 Notes about Wizards
5 Macro Key Support in FoxPro 2.6
6 FoxPro and Other Applications
7 International and Cross-Platform Recommendations
8 Installation Questions and Answers
9 Product Support Questions and Answers
----------------------------------------------------------
faqfp26w.arjfox.11max.headroom,
Skup funkcija koje olakšavaju život pri pozivanju fajlova, direkto-
rijuma i još gomile slične salate gde je potrebno izvući ekstenziju,
path, dodati po koji backslash, itd, itd.
fnc1.arjfox.12mradic,
FoxPro poseduje konfiguracioni fajl CONFIG.FPW.
Kako u njega da ubelezim da mi se obrise ekran svaki put
kada udjem u Fox ili nesto slično? Probao sam sa:
command = clear
command = set defa to c:Đ...
i to ne radi. Zasto?
Pozdrav!
fox.13mradic,
-> #12, mradic█ command = set defa to c:Đ...
Kah, opet sebe ispravljam (vezani za CONFIG.FPW). Treba:
DEFAULT = c:ĐfoxprowĐ...
Ipak, ostaje pitanje: kako da mi se obriše ekran po ulasku u Fox
za Windows ili neka druga komanda (USE <baza> i sl)?
Hvala!
fox.14nbjvsa,
-> #12, mradic> FoxPro poseduje konfiguracioni fajl CONFIG.FPW.
> Kako u njega da ubelezim da mi se obrise ekran svaki put
> kada udjem u Fox ili nesto slično? Probao sam sa:
>
> command = clear
> command = set defa to c:Đ...
>
> i to ne radi. Zasto?
FoxPro dozvoljava pisanje više COMMAND naredbi u konfiguracionom fajlu,
ali izvršava samo jednu i to poslednju (zato ti i nije obrisan ekran jer
je izvršeno command = set defa to c:Đ...).
Ako ti je potrebno više COMMAND naredbi napravi jedan .PRG, npr. START.PRG
sa sledećim sadrzajem:
CLEAR
SET DEFA TO C:Đ...
.
.
a u CONFIG dodaj samo jednu naredbu
command = do START.PRG
Pozdrav Nenad
fox.15ab.comp,
-> #13, mradic ==> Ipak, ostaje pitanje: kako da mi se obriše ekran
==> po ulasku u Fox
Staviš mu svič -t u (PIP) Command Line.
Pozdrav
█ █ █ █
▄▄█ █ █▄▄ █▄▄
fox.19max.headroom,
FoxPro for DOS/Windows 2.5 - BROWSE komanda (#4)
BROWSER I ESTETIKA
------------------
Kao što je ranije napomenuto, postoji određeni broj faktora koji utiču
na fizičko pojavljivanje Browse prozora. Ako se prozor definiše, a po-
tom navede posle WINDOW opcije BROWSE komande, BROWSE prozor preuzima
oblik i osobine ranije definisanog prozora. Pošto se završi rad sa
Browser-om, nemojte zaboraviti da učinite jedno RELEASE pomenutog pro-
zora - tako oslobađate preko potrebnu memoriju. Evo primera:
DEFINE WINDOW prozor FROM 10,10 SIZE 20,40
BROWSE FIELDS ;
polje1:H="Prvo polje", ;
polje2:H="Drugo polje" ;
WINDOW prozor ;
NOAPPEND NOMODIFY NODELETE ;
TITLE "Demo Browse prozor"
RELEASE WINDOW prozor
(*) BROWSE NOMODIFY poseduje jedan "propust" - u slučaju da kreirate
novi zapis u Browse prozoru, bićete u mogućnosti da pomenuti zapis
menjate, sve dok iz njega ne izađete (tj. pređete na neki drugi
zapis). Da bi predupredili ovakvo "nekorektno" ponašanje, radije
koristite BROWSE WHEN .F.
IN WINDOW opcija Browser-a omogućava smeštanje Browse prozora u neki
drugi prozor, sa tim da su odsečeni scroll bar-ovi. Ako je neophodno
da se scroll bar-ovi pojavljuju, definišite drugi prozor i koristite i
WINDOW, i IN WINDOW opcije BROWSE komande. Primer:
CLEAR ALL
CLEAR
USE roba IN 0 ALIAS roba1
USE roba AGAIN IN 0 ALIAS roba2
USE roba AGAIN IN 0 ALIAS roba3
SELECT roba1
DEFINE WIDNOW t1 FROM 0,0 SIZE 10,39 DOUBLE
BROWSE WINDOW t1 NOWAIT
SELECT roba2
DEFINE WINDOW FROM 13,39 SIZE 10,39 DOUBLE
ACTIVATE WINDOW t2
BROWSE IN WIDNOW t2 NOWAIT
SELECT roba3
DEFINE WINDOW t3 FROM 27,0 SIZE 12,39 DOUBLE
ACTIVATE WINDOW t3
DEFINE WINDOW t4 FROM 1,1 SIZE 8,35 IN WINDOW t3
BROWSE IN WINDOW t3 WINDOW t4 NOWAIT
MANIPULACIJE NAD BROWSE PROZOROM
--------------------------------
Korisnik može vršiti manipulacije nad Browse prozorom na više načina -
podeliti ga na dva dela, razbiti ga na dve particije, naterati ga da
se jedna particija pojavljuje u Edit modu, onemogućiti prikazivanje
mreže linija (iliti "grid"-a), itd. Sve pomenuto se postiže upotrebom
PARTITION nnn, LPARTITION, NOLINK, LEDIT, REDIT, NOGRID i NORGRID
opcija.
Moguće je dodeliti određeni font koji će važiti za čitav Browse pro-
zor, kao i stil (znakovi su u italik-u, podebljani, ili podvučeni).
Samo zapamtite da su nazivi kolona uvek podebljani (Bold style).
U FoxPro-u za Windows-e možete menjati boju pozadine, boju izabranog
polja, izabranog teksta, i okvira Browser-a. Nemojte se mučiti sa bo-
jenjem okvira, jer zaista ne doprinosi drastičnom povećanju estetike
ekrana. Windows-i kontrolišu boju tankih osvetljenih (highlighted)
traka koje označavaju da je baš to polje izabrano. Da bi se ovo izme-
nilo, moraćete da se "provučete" kroz Control Panel/Colors meni.
(*) Kada se Browse prozor zatvori, FoxPro vrši tzv. "snapshot" (pre-
nos određenih bitnih podataka) oblika prozora i širine polja u tre-
nutno aktivni FOXUSER fajl. To, naravno, traje. Ako želite postizanje
maksimuma performansi, koristite SET RESOURCE OFF setovanje (na samom
početku programa). Bićete zapanjeni kojom će tada briznom Browse pro-
zor vraćati kontrolu programu.
fox.16max.headroom,
FoxPro for DOS/Windows 2.5 - BROWSE komanda (#1)
BROWSE Komanda
UVOD
----
Komanda BROWSE je zasigurno najkomplikovanija i, verovatno, najviše
upotrebljavana kao alat FoxPro-a. Razmatrajući njene 32 klauzule,
ispada da joj je u HELP-u posvećeno najviše prostora. Što je najvažni-
je, moguće je sastavljati male aplikacije koristeći samo jednu BROWSE
komandu - sve u svemu, veoma funkcionalno i opšte upotrebljivo. Kroz
dalji tekst oprobani Fox-ovci će, eventualno, pokupiti po koji intere-
santni "tip of the day", dok će oni manje verzirani verovatno shvatiti
sa kakvim moćnim oruđem raspolaže predmetni paket.
BROWSE komanda se koristi za prikazivanje, odabir i unos podataka. Mo-
žete je upotrebiti bilo gde (kako programski, tako i ekranski), sa
bilo kojim skupom željenih polja, odn. podataka. Evo jednog komple-
ksnijeg primera upotrebe ove komande:
BROWSE FIELDS ;
check :1 :H=" ", ;
faktura.sifra :23 :H="Šifra kupca", ;
kupci.naziv :20 :H="Naziv kupca" :W=.F., ;
kupci.telefon :17 :H="Telefon" :R, ;
x = UPPER(kupci.kontakt):H="Osoba za kontakt" ;
WINDOW prozor ;
TITLE "Spisak kupaca kojima su poslate ponude" ;
NOAPPEND NODELETE NOMODIFY;
WHEN chkoffx4() ;
VALID:F chkonx4() ;
FREEZE check ;
NOWAIT
Kao što se iz primera da videti, komanda je "razbijena" po linijama -
što zbog preglednosti, što zbog eventualne (olakšane) promene parame-
tara. Najjednostavniji način "projektovanja" jedne BROWSE komande je
iz Command prozora - zadavanjem znaka za rastavljanje komande na li-
nije (;) moguće je interaktivno menjati i dodavati potrebne parametre
i, ako sve ispada baš kako je predviđeno, prebaciti tako kreiranu
BROWSE komandu u program.
U slučaju da polja želite prikazati po vertikali (dakle - svaki red
jedno polje), jednostavno komandu BROWSE zamenite komandom EDIT (si-
ntaksa je identična).
fox.17max.headroom,
FoxPro for DOS/Windows 2.5 - BROWSE komanda (#2)
POSTAVLJANJE BROWSERA U PROZOR
------------------------------
U slučaju da koristite BROWSE komandu bez odgovarajućih parametara,
verovatno je da rezultat neće izgledati onako kakvim ste ga zamišlja-
li. BROWSE, normalno, kreira prozor u gornjem-levom uglu Desktop-a, i
prikazuje sva postojeća polja baze iz tekuće radne oblasti (work
area). Nazivi kolona su ujedno i nazivi polja, a naslov BROWSE prozora
je ALIAS ime baze.
(*) U slučaju da BROWSE komandu pozovete bez WINDOW parametra, a defi-
nisali ste i aktivirali prozor, rezultujući BROWSE prozor zauzima me-
sto u vašem, aktiviranom prozoru.
Nekako je najpametnije ne dopustiti samom Fox-u da se brine o ovim
problemima. Najpovoljnija varijanta je da sami zadate potrebne parame-
tre "gde", "kako" i "šta" - tako u vlastitoj aplikaciji nećete imati
neočekivanih "obrta", a i korisnicima će biti, svakako, udobnije.
Dakle, potrebno je zadati gde će se, na ekranu, pojaviti BROWSE pro-
zor, nazive kolona, kao i naslov samog BROWSE prozora. Programiranje
BROWSEra je, može se zaključiti, zamalo pa učenje novog jezika.
Prva stvar koju treba uraditi je, kao što je već pomenuto, definisanje
BROWSE prozora. Dakle, upotrebom DEFINE komande određujete koordinate
i veličinu prozora (u slučaju da se koristi FoxPro fox DOS, potrebno
je navesti i koja se šema boja koristi. Najčešće - COLOR SCHEME 10, te
da li želite da prozor baca senku). Međutim, tako definisan prozor NE-
MOJTE aktivirati.
Kada FoxPro vidi WINDOW parametar u BROWSE komandi, on automatski kre-
ira novu kopiju navedenog prozora. U slučaju da ste prozor već aktivi-
rali, dobićete dve kopije prozora, pa ćete biti primorani da onu
ekstra kopiju deaktivirate. Daleko je jednostavnije prepustiti BROWSE
komandi da aktivira vlastitu kopiju prozora, i po završetku upotrebe
je ukloni. U svakom slučaju, morate pomoću RELEASE WINDOW vratiti
memoriju alociranu sa DEFINE WINDOW.
Kao što gorenavedeni primer pokazuje, BROWSE FIELDS parametar prati
zadati spisak polja - svako polje se može individualno "isprogramira-
ti". Opcije koje se odnose na svako polje ponaosob se zadaju iza nje-
govog naziva i odvojene su dvotačkom (:).
Najčešće korišćena opcija uz naziv polja je :H (Header) - svakako je
korisniku lakše kada vidi "Datum rođenja" kao naziv kolone, nego
"dat_rodj" (što programeru, verujem, govori dovoljno). Dakle, da bi se
promenio naziv kolone potrebno je, posle naziva polja, uneti i:
:H="Datum rođenja"
U slučaju da je naziv kolone kraći od širine polja, on se automatski
centrira. Ako je naziv kolone duži, širina polja se povećava da obu-
hvati ceo naslov. Ova osobina "rastegljivosti" širine polja se može
zaobići korišćenjem :## opcije - dvotačka praćena odgovarajućom bro-
jnom vrednošću. Ta brojna vrednost je fiksna širina polja, nezavisna
od stvarne dužine polja koje se prikazuje, ili naziva kolone. Dogodi
li se da je naziv kolone duži, biće odsečen, kao i eventualni sadržaj
polja.
Ako dopustite Fox-u da sam odredi širinu prikazanih polja, vaš izbor
fonta utiče na njegov izbor. Fox automatski podešava širinu kolone
prema podatku koji je duži: dužini naslova, ili dužini polja. Sa fixed
fontom (Courier, ili FoxFont) takav problem se ne javlja, ali kada se
koristi neki proporcionalni font (Arial, ili MS Serif), sadržaj prvog
zapisa određuje širinu celog polja. U slučaju da je naziv kolone
kratak, a prvi zapis sadrži puno blankova, ili uskih karaktera, FoxPro
može odabrati širinu koja je preuska za ostale podatke iz kolone. Tada
je rešenje ili koristiti fixed fontove, ili opcijom :## ručno podesiti
širinu kolone.
FORMATIRANJE POLJA U BROWSERU
-----------------------------
Pošto ste izabrali naziv kolone i njenu širinu, verovatno je da ćete
hteti da neko od polja formatirate. :P= opcija vam omogućava da to i
učinite, koristeći string koji se sastoji od PICTURE, odn. FUNCTION
znakova (slično kao i kod SAY i GET komandi). Evo onih najčešće kori-
štenih:
č! Samo velika slova.
čR Tzv. "non-template" karakteri (poštanski broj, broj
žiro-računa, itd).
č$ Valuta
čL Nule se, na početku, zamenjuju prazninama.
čZ Praznine se, na početku, zamenjuju nulama.
čB,I,J Poravnavanje uz levu ili desnu ivicu, odn.
centriranje.
Normalno, karakter stringovi, datumi i Boolean vrednosti se poravnava-
ju uz levu marginu kolone, a brojne vrednosti uz desnu.
fox.18max.headroom,
FoxPro for DOS/Windows 2.5 - BROWSE komanda (#3)
BROWSE VALIDACIJA
-----------------
Verovatno je da ćete hteti da odlučite da li je korisniku omogućen,
ili zabranjen unos/izmena prikazanih podataka. Da bi vam olakšali po-
sao, tvorci Fox-a su pripremili sledeće opcije za validaciju:
- :R označava polje kao "Read Only", tj. njegov sadržaj nije dozvo-
ljeno menjati.
- BROWSE NOMODIFY opcija onemogućava promenu bilo kog polja ili za-
pisa u BROWSE prozoru.
- FREEZE opcija daje korisniku mogućnost kretanja samo po određenoj
koloni.
(*) Za razliku od Fox-a za DOS, default ponašanje Windows verzije BRO-
WSER-a je da je polje na koje se stane već "selektovano", tj. priti-
sak na bilo koji taster će stari sadržaj polja obrisati i uneti novu
vrednost. Da bi se isto postiglo i pod DOS-om, neophodno je zadati
picture opciju :P="čK".
Svako polje može, takođe, imati i VALID i WHEN opcije. :W= određuje da
li je kursoru uopšte dozvoljeno da stane na odgovarajuće polje. :W=.F.
zabranjuje prelazak kursora na naznačeno polje i on, jednostavno, pre-
skače preko njega. Logičke vrednosti .T. ili .F. mogu biti i rezultati
navedenih UDF-ova (User Defined Functions).
:V= opcija je, u stvari, VALID na nivou polja. Ako zadati izraz vrati
logičko .F. - nije moguće napustiti polje, osim ako se ne pritisne ESC
taster. Ako se pritisne ESC sadržaj polja se vraća na prvobitni, i
program nastavlja sa radom.
Za validaciju podataka moguće je koristiti i "čM" funkciju za biranje
podatka iz zadate liste, i to kao deo :P= opcije. Koristeći SPACE ta-
ster skačete sa jednog na drugi ponuđeni podatak iz liste. Tako se
izbegavaju eventualne greške pri unosu, u slučaju da imate sužen skup
podataka koji čine sadržaj polja.
:V= izraz se izračunava jedino ako je sadržaj polja izmenjen. U sluča-
ju da hoćete da primorate VALID f-ju da izračunava rezultat i ako ni-
ste ništa menjali, potrebno je da dodate i opciju :F posle :V izraza
(Force Validation). Ako korisnik unese podatak koji vraća logičko .F.,
ispisuje se "Invalid Input" poruka u gornjem-desnom uglu ekrana (ako
status-bar nije aktivan). Ako želite da se pojavi neka vaša poruka o
greški, koristite :E= opciju.
Malo manje fleksibilan vid validacije podataka omogućuje :B= opcija,
koja dozvoljava samo unos podataka koji podpadaju u zadati interval
veličina. Kao i kod :V opcije, stupa u dejstvo jedino ako je podatak
izmenjen (ovo se može zaobići korišćenjem :F opcije posle navedenog
niza dozvoljenih veličina).
Evo i primera:
BROWSE FIELDS ;
polje1 :H="Naziv kolone":12, ;
polje2 :W=fwhen() :V=fvalid():F :E="Greška!", ;
polje3 :B=12000,14000:F:P="č$ 999,999", ;
polje4 :5:P="čM Da,Ne,Možda", ;
polje5 :W=.F.:H="Nema unosa"
CALCULATE OPCIJA
----------------
BROWSE komanda omogućava kreiranje polja koja nastaju kao rezultat ka-
lkulacija određenih vrednosti (npr. sadržaja neka druga dva, ili više,
polja). Calculate polje kreirate tako što kao naziv polja zadate odre-
đeni niz karaktera (po vlastitoj želji), praćen znakom jednakosti, a
potom praćen bilo kojim ispravnim FoxPro izrazom. Izraz može sadržati
matematičku relaciju između polja baze, ili konstantu, FoxPro f-ju,
UDF, ili već neku kombinaciju navedenih vrednosti. To može biti i
IIF() f-ja, čiji sadržaj određuju neka druga polja, odn. drugi fakto-
ri.
Calculate se može iskoristiti i da bi ponovno prikazalo neko polje iz
baze (njegova kopija); naravno, naslove mogi biti drugačiji. Pomenuto
se da korisno upotrebiti u slučaju da imate nekoliko dugačkih polja
koja, da bi im videli sadržaj, pomeraju čitav ekran udesno i time vas
ostavljaju bez mogućnosti praćenja podataka na levoj strani (tj. prvih
polja u BROWSE prozoru). Evo i primera:
BROWSE FIELDS
firma :12:H="Firma", ;
osoba :30:H="Osoba za kontakt", ;
telefon :H="Telefon":P="čR (###) 999-9999 9999", ;
grad :H="Grad", ;
pbr :H="Poštanski broj", ;
kredit :H="Kredit":P="č$ 999,999,999", ;
x1=firma:12:H="Firma" ;
WHEN bwhen() ;
VALID bvalid()
Moguće je koristiti i BROWSE WHEN opciju da bi se utvrdilo da li kori-
snik ima pravo da menja neki od zapisa. Ako f-ja vrati logičko .F.,
zapis se može samo čitati (read-only). Kao i kod WHEN i VALID opcija
drugih komandi, tako se ni kod BROWSE-a ne mora izračunavati izraz
koji je vezan baš za tekuće polje (ili bilo koje polje, uostalom). Mo-
žete ih koristiti za osvežavanje ekrana, skok na neki drugi zapis,
itd.
BROWSE VALID opcija određuje da li je uopšte moguće napustiti neki od
zapisa (bilo da se to pokuša kursorima, mišem, ili preko Control
menija). Kao i kod :V= opcije, ovaj izraz se izračunava samo u slučaju
da je sadržaj zapisa promenjen. Naravno, da bi se BROWSE VALID "nate-
rala" da izračuna izraz čak i ako sadržaj polja nije promenjen, potre-
bno je koristiti prekidač :F (Force Validation). Samo, obratiti pažnju
na sledeće: ako korisnik pritisne ESC taster, BROWSE prozor se zatva-
ra (odn. prestaje rad sa Browser-om), čak i u slučaju da je VALID
izraz bio .F. Ovo se može "preduprediti" tako što se ESC tasteru pri-
dodeli neka beskorisna funkcija. Primer:
ON KEY LABEL ESC *
BROWSE VALID vbrow():F
ON KEY LABEL ESC
fox.22max.headroom,
FoxPro for DOS/Windows 2.5 - BROWSE komanda (#7)
UNOS PODATAKA
-------------
Browser-ova namena nije striktno ograničena samo na prikazivanje poda-
taka - on može poslužiti i kao, npr. tabela u koju se podaci tek tre-
baju uneti. Ako projektujete aplikaciju single-user formata (dakle,
koristi je samo jedan korisnik, na jednoj mašini), nećete brinuti o
sistemu zaključavanja podataka; korisniku možete dozvoliti da menja
podatke direktno, bez ikakvog prethodnog proveravanja nije li neki
drugi korisnik na mreži (multi-user aplikacija) počeo da obrađuje tra-
ženi zapis.
Dakle, ako ste korisniku ipak dozvolili da direktno menja sadržaj ba-
ze, ipak morate uvesti kakvu-takvu kontrolu nad kvalitetom unesenih
podataka: VALID f-je na nivou polja, kao i BROWSE VALID f-je rade
upravo ovaj posao. Naravno, da bi održali totalnu kontrolu nad Browse-
rom, pazite i na ESC taster (ON KEY LABEL) - zamislite slučaj kada ko-
risnik slučajno uđe u Browse režim rada, ili ne unese odgovarajuće po-
datke (a definitivno želi napolje iz tabele). Takođe, u slučaju da ko-
ristite sistem numeracije zapisa (ili već neku sličnu ID vrednost),
nemojte očekivati od korisnika da on sam unosi ove vrednosti - to se
da vrlo elegantno izvesti odgovarajućim push-button-om sa naslovom
"Novi zapis", odn. izborom opcije iz menija, ili pritiskom na neki od
F tastera, kada se želi kreiranje novog zapisa u bazi (bitno je da ko-
risnik sve, za njega nebitne informacije NE unosi ručno - to mnogo
preciznije može da obavi i program; primer: pomenuta ID vrednost zapi-
sa).
Stoga, kada korisnik poželi kreiranje nove stavke (novog zapisa), pro-
gram će kreirati zapis, ali korisniku neće dati pristup sve dok odre-
đena polja ne popuni odgovarajućim ID vrednostima - takvo ID polje se
može, ali i ne mora pojavljivati u Browse listi (može, takođe, sa
jednim :R biti označeno kao polje koje je moguće samo čitati). U slu-
čaju da korisnik odustane od kreiranja novog zapisa, on mora biti
izbrisan (DELETE).
U suštini, mnogo je lakše i preglednije podatke u bazu unositi preko
.SPR ekrana za unos; na početku vidite Browse listu, a kada korisnik
pritisne odgovarajućći taster ili pokrene odgovarajuću opciju menija,
otvara se pomenuta .SPR maska. Tada se problem posmatra iz drugog ugla
- podatke koje korisnik unosi NE MORA unositi direktno u bazu; podaci
se mogu privremeno smestiti u memorijske promenljive, koje, u slučaju
da je korisnik zadovoljan unesenim, jednostavno "presele" u bazu
(REPLACE...WITH...). Sledeći program demonstrira jedan od pristupa
problemu:
SELECT partneri
ON KEY LABEL F4 DO novizapis
BROWSE FIELDS ;
firma:20, ;
adresa, ;
grad, ;
drzava, ;
telefon, ;
fax ;
NOAPPEND NODELETE NOMODIFY ;
TITLE "Pregled partnera <F4> - Unos novog partnera"
ON KEY LABEL F4
PROCEDURE novizapis
PUSH KEY CLEAR
STORE 0 TO akcija
DO novi.spr && Maska koja sadrži potrebne VALID filtere.
IF akcija = 1 && Samo u slučaju da je zapis OK.
REPLACE partneri.firma WITH m.firma
...
...
ENDIF
POP KEY
RETURN
fox.21max.headroom,
FoxPro for DOS/Windows 2.5 - BROWSE komanda (#6)
BROWSER I INKREMENTIRANO PRETRAčIVANJE
--------------------------------------
Do sada pominjani vid pregleda liste podataka odgovara u slučaju da ih
ima u manjem broju (stotinak, recimo). Ali, ako je u pitanju nekih pe-
tsto ili više zapisa, korisniku traženje željenog podatka predstavlja
pravu noćnu moru - najviše vremena se provede u skrolovanju. Ono što
se približava optimalnom rešenju je sledeće:
1. Korisniku se predstavi lista sa podacima (Browser, naravno).
2. Dozvoli mu se unos karaktera.
3. Svaki taster startuje rutinu koja vrednost tastera pridružuje
stringu pritisnutih tastera.
4. U aktivnoj bazi se vrši SEEK svaki put kada se stringu doda nova
vrednost.
Da ne bih dalje navodio detalje i ponavljao se, ne bi bilo zgoreg da
bacite pogled na moje prethodne poruke, gde je ovaj vid pretraživanja
(i to baš iz Browser-a) detaljno objašnjen.
IZBOR VIŠE ZAPISA UNUTAR BROWSER-A
----------------------------------
Ideja je sledeća: postoji Browse prozor u kome su liste partnera koji-
ma treba poslati fax sa ponudom. Postoji potreba da se pošalje cirku-
lar na nekoliko adresa. Postiže se na sledeći način:
* Koristi memorijsku promenljivu po principu:
* jedan karakter - jedan zapis (record)
CLOSE DATA
USE partneri
m.pickvar = SPACE(RECCOUNT())
ON KEY LABEL F5 DO toggle
BROWSE FILEDS ;
CALC = IIF(LEN(m.pickvar)>=RECNO(), ;
SUBSTR(m.pickvar,RECNO(),1),"") ;
:W=.F., partneri.firma, partneri.fax
ON KEY BLABEL F5
PROCEDURE toggle
IF LEN(m.pickvar) < RECNO()
m.pickvar = PADR(m.pickvar, RECNO())
ENDIF
m.pickvar = STUFF(m.pickvar,RECNO(),1, ;
IIF(SUBSTR(m.pickvar,RECNO(),1) = "*"," ","*"))
Ovo je, definitivno, najbrža tehnika u slučaju kada je potreban izbor
više od jednog zapisa iz Browser-a. Jedino ograničenje jeste to da ba-
za ne sme imati više od 65,000 zapisa. Međutim, ako se ispostavi da
nam treba manji broj zapisa iz neke veće baze, evo programskog rešenja
sa nešto lošijim performansama od gorenavedenog:
* Koristi indeksirani kursor
CLOSE DATA
CREATE CURSOR kursor (RECNO N(13), STATUS C(1))
INDEX ON recno TAG recno
SELECT 0
USE partneri ORDER firma
SET RELATION TO (RECNO()) INTO kursor
ON KEY LABEL F5 DO toggle
BROWSE FILEDS ;
CALC = kursor.status:H="Izbor":W=.F., ;
partneri.firma, ;
partneri.fax
ON KEY LABEL F5
USE IN kursor
PROCEDURE toggle
IF RECNO("partneri") <> kursor.recno
INSERT INTO kursor (RECNO, STATUS) VALUES ;
(RECNO("partneri"),"*")
ELSE
REPLACE kursor.status WITH IIF(kursor.status="*"," ","*")
ENDIF
U slučaju da izaberemo više od jednog, iz skupine od osam zapisa (baza
je glomazna), sledeći program bi bio nešto efikasniji:
* Koristi kursor sa jednim zapisom za svaki zapis originalne baze.
CLOSE DATA
CREATE CURSOR multpic3 (STATUS C(1))
SELECT 0
USE partneri ORDER firma
SET RELATION TO RECNO() INTO multpic3
ON KEY LABEL F5 DO toggle
BROWSE FIELDS ;
CALC = multpic3.status:H="Izbor":W=.F., firma, fax
ON KEY LABEL F5
USE IN multpic3
PROCEDURE toggle
IF RECNO("partneri") > RECCOUNT("multpic3")
FOR l_xx = RECCOUNT("multpic3") TO RECNO("partneri")
INSERT INTO multpic3 (status) VALUES(" ")
ENDFOR
GOTO (RECNO("partneri")) IN multpic3
ENDIF
REPLACE multpic3.status WITH IIF(multpic3.status="*"," ","*")
RETURN
Zapazite da navedeni kod koristi prednosti jedne interesantne Fox-ove
osobine, odn. ostavštine XBase jezika uopšte: kada se koristi nume-
rički izraz za uspostavljanje relacije sa bazom (INTO) koja nema de-
finisan "master index", FoxPro koristi broj zapisa (RECNO) odredišne
baze kao indeks. U programu, svaki put kada se pointer na zapis baze
"Partneri" promeni, FoxPro izvršava sledeću komandu:
GOTO (RECNO("partneri")) IN multpic3
fox.20max.headroom,
FoxPro for DOS/Windows 2.5 - BROWSE komanda (#5)
UPOTREBA BROWSERA ZA PREGLED/UNOS PODATAKA
------------------------------------------
BROWSE komanda se najčešće koristi upravo za pregled, odn. unos odre-
đenog podatka, ili skupine podataka. To je, naravno, moguće izvesti na
još stodva načina (preko GET polja, menija, popup-a, scroll lista, bu-
tton popup-a, itd), ali ću se ovde osvrnuti samo na Browser. Za po-
četak, evo jednostavnijeg primera:
BROWSE FIELDS ;
firma :24:H="Firma", ;
adr :H="Adresa", ;
pbr :H="Poštanski broj", ;
telefon :H="Telefon", ;
fax :H="Fax" ;
FONT "FoxPrint", 10 ;
PARTITION 28 LPARTITION REDIT ;
TITLE "Firme - kupci" ;
WINDOW t1
Rezultat:
╔════════════════════════════════════════════════════════╗
║ Firme - kupci ║
╠═════════════════════Đ══════════════════════════════════╣
║ Firma │ Firma Prva Firma ║
╠═════════════════════Á Adresa Prva adresa ║
║ Prva Firma Š│ Poštanski broj 11000 ║
║ Druga Firma Š│ Telefon (011) 772-778 ║
║ Treća Firma Š│ Fax (011) 445-332 ║
║ žetvrta firma Š├──────────────────────────────────Â
║ Peta Firma Š│ Frima Druga Firma ║
║ Šesta Firma Š│ Adresa Druga adresa ║
║ Sedma Firma Š│ Poštanski broj 11600 ║
║ Osma Firma Š│ Telefon (011) 752-755 ║
║ Deveta Firma Š│ Fax ║
╚═════════════════════¤══════════════════════════════════╝
Dakle, šta time dobijamo? Prvo - Browse prozor je podeljen na dva de-
la: na levoj polovini se nalazi naziv firme, dok se na desnoj polovini
(particiji) prozora nalaze detaljni podaci odabrane firme (leva parti-
cija je u Browse, a desna u Edit modu). Kako se podaci leve particije
skroluju, tako se automatski menja i desna particija. Ovo dobro dođe
kada imamo potrebu da prikažemo zapis koji sadrži veći broj polja -
više nismo ograničeni širinom, već visinom ekrana. Da bi se korisniku
omogućio skok na određeni podatak, i potom izmena detalja, najbolje je
taster ENTER "naoružati" sa jednim ON KEY LABEL. Rutina nazvana L3HOTW
čeka pritisak ili na ENTER, ili na desno dugme miša - rutina se de-
instalirama sama, pa se posle njene upotrebe ENTER taster može no-
rmalno koristiti bez pokretanja bilo kakve naknadne ON KEY LABEL ko-
mande. Evo te rutine:
PROCEDURE l3hotw
PARAMETERS sta
IF TYPE("khotw") = "U"
PUBLIC khotw, klk, krk
ENDIF
ON KEY LABEL ENTER
ON KEY LABEL RIGHTMOUSE
IF TYPE ("sta") = "L"
STORE .T. TO khotw
KEYBOARD(CHR(23)) PLAIN
ELSE
IF sta = "IN"
ON KEY LABEL ENTER DO l3hotw
ON KEY LABEL ENTER DO l3hotw
STORE .F. TO khotw
ELSE
STORE LASTKEY() TO klk
STORE READKET() TO krk
ENDIF
ENDIF
RETURN
Upotreba je jednostavna: vi pozivate L3HOTW da bi sačekivali pritisak
na taster ENTER ili desno dugme miša. Potom se poziva BROWSE komanda.
Korisnik iz nje izlazi pritiskom na tastere ENTER, ESC, ili desno
dugme miša, ili aktivirajući 'Close' button prozora. Potom se ponovo
poziva L3HOTW da bi se ukinuo ON KEY LABEL na navedene tastere (dakle,
vraća im se prvobitna funkcija). Ispituje se promenljiva 'khotw' - ako
je .T., korisnik je napravio izbor. I obratno. U slučaju da se pri-
tisne ENTER, ova rutina, zapravo, poziva samu sebe koristeći sledeći
trik: ako je rutina pozvana zbog aktiviranja ON KEY LABEL okidača
parametri se ne prosleđuju, te je i promenljiva 'sta' tipa Logical;
rutina uoči ovu činjenicu i u keyboard buffer smesti 'Ctrl + W', da bi
se napustio Browse mod. Evo i primera kako gorenavedenu rutinu pra-
ktično iskoristiti:
DO l3hotw WITH "IN" && ENTER i desno dugme miša (d.d.m.)
BROWSE FIELDS ;
izbor1:H="Naslov1", ;
izbor2:H="Naslov2", ;
izbor3:H="Naslov3" ;
NOAPPEND NODELETE NOMODIFY ;
TITLE "Izbor" ;
WINDOW c1
DO l3hotw WITH "OUT" && U slučaju da ENTER i d.d.m. i dalje čekaju
na pritisak da bi pokrenule rutinu.
IF khotw && khotw = .T.
* Korisnik je napravio izbor ;
* sledi rutina koja nešto radi...
ELSE
* Korisnik nije napravio izbor ;
* sledi rutina koja radi nešto drugo...
ENDIF
Primetite da su uz BROWSE komandu navedene i NOAPPEND, NODELETE i
NOMODIFY opcije - to je urađeno zato što je, u ovom slučaju, Browse
jednostavna lista po kojoj se vrši izbor određenog podatka. Korisnik,
dakle, nije u stanju ništa da promeni. Kada smo završili sa Browser-
om, proveravamo stanje promenljive 'khotw' da bi saznali da li je
korisnik odabrao neki podatak. U slučaju da nam, iz nekog razloga,
zatreba - imamo i LASTKEY() i READKEY() vrednosti, takođe smeštene u
promenljive ('klk' i 'krk').
fox.25max.headroom,
FoxPro for DOS/Windows 2.5 - BROWSE komanda (#10)
IZNALAčENJE TEKUĆEG ZAPISA U BROWSE PROZORU
-------------------------------------------
U slučaju da se koristi gorenavedeni tzv. integrisani Browser, kori-
sniku je potrebno obezbediti indikator tekućeg zapisa. Normalno, kada
je korisnik u samom Browser-u, to nije nikakav problem (broj record-a
se ispisuje automatski). Međutim, kada ste van Browser-a, tekući zapis
se nigde ne navodi. Rešenje problema je u sledećem:
1. Potrebno je ubaciti dodatno calculated polje u BROWSE komandu.
2. Vršiti update memorijske promenljive tekućim zapisom u Browser-u.
3. Resetovati promenljivu kada se korisnik pomeri na neki drugi zapis
u istom Browse prozoru.
Primer:
CLOSE DATA
DEFINE WINDOW browse AT 1,0 SIZE 10,75 FLOAT FONT "Arial",10
USE partneri
partner = RECNO() && Postavljanje promenljive
BROWSE FIELDS ;
t1 = IIF(RECNO("partneri")=m.partner,">"," "):H="":1:W=.F. ;
firma ;
NOWAIT ;
WHEN bwhen() ;
VALID :F bvalid(čpartner, "partneri") ;
WINDOW browse
DEFINE WINDOW prozor AT 15,0 SIZE 10,75 FLOAT FONT "Arial",10
ACTIVATE WINDOW prozor
SCATTER MEMVAR MEMO
č 2,5 GET m.firma
č 4,5 GET m.grad
č 6,5 GET m.drzava
READ CYCLE
PROCEDURE bwhen
SCATTER MEMVAR MEMO
SHOW GETS WINDOW prozor
partner = RECNO("partneri")
RETURN .F.
PROCEDURE bvalid
PARAMETERS p_var, p_window
IF UPPER(WONTOP()) == UPPER(p_window)
p_var = 0
ENDIF
RETURN .T.
BROWSE I RAD U MREčI
--------------------
Kada se vrši pregled/izmena podataka preko Browse prozora, postoje
sledeće opcije koje se tiču zaključavanja zapisa:
* Dozvoliti korisniku da vrši direktan unos/izmenu podataka u Browse
prozoru, bez pozivanja na eksplicitno zaključavanje (komade RLOCK() i
sl.). Umesto toga se osloniti na FoxPro-ovo implicitno zaključavanje
zapisa koje korisnik pokušava da promeni.
* Ne dozvoliti direktnu izmenu podataka u Browse prozoru, već ON KEY
LABEL komandom čekati na pritisak tastera koji aktivira određeni .SPR
fajl sa potrebnim GET poljima - zapis koji se na taj način "povuče" u
pomenuti .SPR fajl mora se eksplicitno zaključati.
* Kada se vrši Browse children zapisa parent zapisa, potrebno je za-
ključati parent zapis pre nego što se korisniku dozvoli da uđe u Bro-
wse prozor - tako će Fox automatski zaključavati i children zapise
koje korisnik pokušava da promeni.
* Koristiti BROWSE WHEN RLOCK() komandu za eksplicitno zaključavanje
svakog zapisa na koji korisnik stane. Koristiti f-ju tipa VALID :F
funlock() koja poziva UDF za otključavanje zapisa pošto ga korisnik
napusti.
* Kada se vrši Browse children zapisa parent zapisa, iskopirati chi-
ldren zapise u kursor, u trenutku kada korisnik poželi da edituje po-
datke. Potom dozvoliti promenu podataka u kursoru i zaključati samo
originalne zapise kako bi se snimile promene nastale u kursoru.
NA KRAJU...
-----------
Šta reći, osim da je Browser sistem koji će Fox približiti korisniku
dovoljno da ovaj ne primeti "promenu sredine" (pogotovo ako pomenuti
nije imao kontakata sa kompjuterima). Dakle, navali na Browse! :)
fox.24max.headroom,
FoxPro for DOS/Windows 2.5 - BROWSE komanda (#9)
VIŠE BAZA U RELACIJI, VIŠE BROWSE PROZORA
-----------------------------------------
Vezano za temu - predstavljamo korisniku tri povezana Browse prozora
(povezana relacijama, da budem precizniji). U prozoru 1 je prikazana
baza partnera; u prozoru 2 - fakture koje su mu izdate; u prozoru 3 -
baza zaposlenih. Primer:
CLOSE DATA
USE partneri ORDER firma
USE racuni ORDER racbr IN 0
USE zaposleni ORDER ime IN 0
SET RELATION TO p_sifra INTO racuni
SELECT racuni
SET RELATION TO racbr INTO zaposleni
DEFINE WINDOW jedan AT 1,0 SIZE 10,SCOLS()/2 FLOAT ;
FONT "Arial", 10
DEFINE WINDOW dva AT 1,SCOLS()/2+2 SIZE 10,SCOLS()/2-4 ;
FLOAT FONT "Arial", 10
DEFINE WINDOW tri AT 12,0 SIZE 10,SCOLS() FLOAT ;
FONT "Arial", 10
SELECT partneri
BROWSE FIELDS ;
partneri.firma, ;
partneri.p_sifra ;
NOWAIT WINDOW jedan
SELECT racuni
BROWSE FIELDS ;
racuni.racbr, ;
racuni.p_sifra, ;
racuni.iznos ;
NOWAIT WINDOW dva
SELECT zaposleni
BROWSE FIELDS ;
zaposleni.datum, ;
zaposleni.ime, ;
zaposleni.p_sifra, ;
zaposleni.racbr ;
NOWAIT WINDOW tri
ON KEY LABEL F8 DO kraj
mvar = .F.
READ VALID mvar
PROCEDURE kraj
DEACTIVATE WINDOW ALL
RELEASE WINDOW ALL
mvar = .T.
CLEAR READ
Rezultat na ekranu:
Prozor: PARTNERI
----------------------
FIRMA P_SIFRA
----------------------
Firma jedan 001
Druga firma 002
Treca firma 003
----------------------
Prozor: RACUNI
------------------------------
RACBR P_SIFRA IZNOS
------------------------------
1/95 001 100.00
2/95 003 900.50
3/95 002 114.35
4/95 001 90.00
------------------------------
Prozor: ZAPOSLENI
----------------------------------------
DATUM IME P_SIFRA RACBR
----------------------------------------
02.01.95 čika čikić 001 1/95
05.02.95 Pera Perić 003 2/95
10.03.95 Pera Perić 002 3/95
11.03.95 čika čikić 001 4/95
----------------------------------------
INTERGRISANI BROWSE
-------------------
Ponekad se pojavi potreba za uvođenjem Browser-a u READ CYCLE petlju,
i to u sledećoj varijanti: prvo se unose podaci u GET polja, a čim se
unese poslednji podatak (dakle, poslednje GET polje) - aktivira se
Browse prozor. Solucija da se to radi automatski daleko je prihvatlji-
vija od prelaska sa prozora na prozor pritiskom na taster miša ili ko-
mbinaciju tastera (ON KEY LABEL Shift+F12 ACTIVATE WINDOW browse).
Dakle, kako glasi rešenje za automatizovanje pomenutog procesa? Na
prvi pogled, odgovor je jednostavan: postaviti WHEN okidač na invi-
sible button koji se nalazi odmah do poslednjeg GET polja. WHEN opcija
se poziva na UDF koji izgleda, otprilike, ovako:
PROCEDURE winvisible
ACTIVATE WINDOW browser
RETURN .F.
Međutim, ovo neće raditi. Evo kvake:
PROCEDURE winvisible
_CUROBJ = 0
KEYBOARD "šShift+F12ć"
RETURN .F.
fox.23max.headroom,
FoxPro for DOS/Windows 2.5 - BROWSE komanda (#8)
VIŠE BAZA I JEDAN BROWSE PROZOR
-------------------------------
BROWSE komanda omogućava programeru da u jedan Browse prozor smesti
podatke iz više baza odjednom. U primeru koji sledi prikazuju se po-
daci o isplatama novca radnicima jedne firme:
SELECT plate
SET ORDER TO datum
SET ORDER TO ime IN zaposleni
SET RELATION TO ime INTO zaposleni
BROWSE FIELDS ;
zaposleni.ime :H="Ime i prezime":22 ;
zaposleni.telefon:H="Telefon" :P="čR (###) 999-9999", ;
datum :H="Datum", ;
iznos :H="Iznos" :P="999,999.99" ;
NOAPPEND NODELETE NOMODIFY ;
TITLE "Isplate radnicima" ;
FONT "Arial", 10 STYLE "B"
Rezultat na ekranu:
IME I PREZIME TELEFON DATUM IZNOS
-------------------------------------------------------------
čika čikić (011) 555-543 11.01.95 100.00
čika čikić (011) 555-543 12.02.95 120.00
čika čikić (011) 555-543 11.03.95 90.00
Pera Mikić (011) 322-2342 10.01.95 500.00
Pera Mikić (011) 322-2342 15.02.95 560.50
Pera Mikić (011) 322-2342 16.03.95 700.00
Pera Mikić (011) 322-2342 10.04.95 720.00
itd, itd...
Još od verzije 2.0 moguće je uspostavljati one-to-many relacije. To je
dobro u slučaju da postoji parent zapis koji nema odgovarajući child
zapis - jer i njih moramo prikazati (tradicionalnom many-to-one rela-
cijom to nije moguće izvesti). Ono što sledi prikazuje išto što i pre-
thodni primer, primenom many-to-one relacije (posmatrano sa parent
strane):
SELECT zaposleni
SET ORDER TO ime
SET ORDER TO ime IN plate
SET SKIP TO zaposleni
BROWSE FIELDS ;
zaposleni.ime :H="Ime i prezime":22, ;
zaposleni.telefon:H="Telefon" :P="čR (###) 999-9999", ;
datum :H="Datum", ;
iznos :H="Iznos" :P="999,999.99" ;
NOAPPEND NODELETE NOMODIFY ;
TITLE "Isplate radnicima" ;
FONT "Arial", 10 STYLE "B"
Rezultat na ekranu:
IME I PREZIME TELEFON DATUM IZNOS
-------------------------------------------------------------
čika čikić (011) 555-543 11.01.95 100.00
********************** ************** 12.02.95 120.00
********************** ************** 11.03.95 90.00
Pera Mikić (011) 322-2342 10.01.95 500.00
********************** ************** 15.02.95 560.50
********************** ************** 16.03.95 700.00
********************** ************** 10.04.95 720.00
itd, itd...
Iako je ovaj drugi način prezentacije podataka (one-to-many) na oko
prikladniji, događa se da za jednog zaposlenog imamo toliko podataka u
bazi "Plate" da mu ime pri pregledu odskroluje sa liste (vidimo poda-
tke o isplatama, ali ne znamo o kome se radi). U tom slučaju postoji
još jedno rešenje: skroz desno u Browser-u dodati ime radnika upotrebom:
x = ime:H="Ime":20
fox.26mradic,
Svaka čast Maxu na 40 KB Browse materijala! :)
Jedno Browse pitanjce: želim da mi se otvori
Browse prozor koji će listati samo podatke koji
odgovaraju nekom upitu. Međutim, ako nema ni jednog
podatka, ne želim da mi se uopšte otvara Browse prozor.
Da li je to moguće i kako?
Zahvaljujem se unapred.
fox.27goxx,
■ BROWSE FIELDS ;
...
■ telefon :H="Telefon", ;
■ fax :H="Fax" ;
■ FONT "FoxPrint", 10 ;
■ PARTITION 28 LPARTITION REDIT ;
...
Radim clipper pa mi baš sintaksa browse komande fox-a nije jasna. Da li bi
mogla da se ovde baci sintaksa?
žini mi se da je ovako mnogo komplikovano i da recimo u clipper-u može mnogo
lepše da se sve to napiše (samo bez pljuvanja, molim :)).
Goran
fox.28ab.comp,
-> #27, goxx ==> Radim clipper pa mi baš sintaksa browse komande
==> fox-a nije jasna. Da li bi mogla da se ovde baci
==> sintaksa?
Evo sintakse, a uz poruku je ostatak.
Í─────────────────────────────────Ě
║ BROWSE ║
Ë─────────────────────────────────Ż
BROWSE
ŠFIELDS <field list>Ć
ŠFONT <expC1> Š, <expN1>ĆĆ
ŠSTYLE <expC2>Ć
ŠFOR <expL1>Ć
ŠFORMATĆ
ŠFREEZE <field>Ć
ŠKEY <expr1> Š, <expr2>ĆĆ
ŠLAST đ NOINITĆ
ŠLEDITĆ
ŠREDITĆ
ŠLOCK <expN2>Ć
ŠLPARTITIONĆ
ŠNOAPPENDĆ
ŠNOCLEARĆ
ŠNODELETEĆ
ŠNOEDIT đ NOMODIFYĆ
ŠNOLGRIDĆ ŠNORGRIDĆ
ŠNOLINKĆ
ŠNOMENUĆ
ŠNOOPTIMIZEĆ
ŠNOREFRESHĆ
ŠNORMALĆ
ŠNOWAITĆ
ŠPARTITION <expN3>Ć
ŠPREFERENCE <expC3>Ć
ŠRESTĆ
ŠSAVEĆ
ŠTIMEOUT <expN4>Ć
ŠTITLE <expC4>Ć
ŠVALID Š:FĆ <expL2>
ŠERROR <expC5>ĆĆ
ŠWHEN <expL3>Ć
ŠWIDTH <expN5>Ć
ŠŠWINDOW <window name1>Ć
ŠIN ŠWINDOWĆ <window name2>
đ IN SCREENĆĆ
ŠCOLOR SCHEME <expN6>
đ COLOR <color pair list>Ć
───────────────────────────────────
Opens the Browse window.
───────────────────────────────────
Pozdrav
█ █ █ █
▄▄█ █ █▄▄ █▄▄
browse.zipfox.29max.headroom,
-> #26, mradic> odgovaraju nekom upitu. Međutim, ako nema ni jednog
> podatka, ne želim da mi se uopšte otvara Browse prozor.
> Da li je to moguće i kako?
Probaj sa BROWSE...WHEN... kombinacijom, i to u odnosu na RECCOUNT()
funkciju koja vraća broj zapisa jedne baze (ako si na te podatke mi-
slio), odn. nešto odomaćenijom metodom:
IF RECCOUNT() > 0
BROWSE ...
ENDIF
fox.30max.headroom,
Spisak tema diskutovanih u PC.PROG.5:baze.podataka, a tiču se Fox-a:
11.12 ndragan Za šta služi FOXBIND.EXE.
11.12 ndragan Struktura MEMO (*.FPT) fajla.
11.4 timot FP 2.0/2.6 bug - CALC polje u Browser-u i PREFERENCE.
11.11 misa.m -//-
11.11 misa.m FP bug - PICTURE "č!" i komanda EDIT.
11.6 borko Univerzalni generator aplikacija.
11.15 ndragan -//-
11.13 ndragan Procedura za otvaranje baza + FPT Recovery algoritam
(uz poruku: REBFPT.FXP).
11.17 mradic Kako znati koja je promenljiva definisana, a koja ne?
11.18 djelovic -//-
11.39 ndragan -//- i objašnjenje sistemske promenljive _TALLY.
11.55 mradic -//-
11.27 mradic Dinamičke matrice?
11.49 mradic FP Win 2.6 problem - kako znati da li je u određeno GET
polje (promenljiva ili zapis) nešto uneseno?
11.56 mradic -//-
11.63 ndragan -//-
11.40 max.headroom Alat za kompresiju/dekompresiju podataka (Fox for Win)
(uz poruku: EDILZSSA.ARJ).
11.50 djelovic Kompresija i dekompresija podataka pod Win 3.11 (API).
11.54 djelovic -//-
11.41 max.headroom FoxPro for Windows Developer's Guide
(uz poruku: FOXDIGES.ARJ).
11.42 max.headroom FoxPro v2.0 (DOS) - Extended i Expanded memorija.
11.43 max.headroom Novosti Fox-a v2.6 for Windows.
11.45 max.headroom Tetris za FoxPro + source
(uz poruku: POPTRIS.ARJ).
11.46 max.headroom Answers to Commonly Asked Questions About Fox for Win
v2.6 (uz poruku: PSSQA.ARJ) - prebačen u R:ĐDATABASE
11.47 max.headroom Programski primer - pisanje pisama i cirkulara.
11.59 ndragan Novosti sa sajma u Mađarskoj.
11.62 max.headroom Events (događaji) i FoxPro.
11.64 ndragan -//-
11.65 gaston Program koji u Browser-u prikazuje otvorene radne
oblasti i baze u njima. Jednostavnije rukovanje bazama.
fox.31mradic,
-> #29, max.headroom█ Probaj sa BROWSE...WHEN... kombinacijom, i to u odnosu na
█ RECCOUNT() funkciju koja vraća broj zapisa jedne baze (ako si
█ na te podatke mi- slio), odn. nešto odomaćenijom metodom:
█
█ IF RECCOUNT() > 0
█ BROWSE ...
█ ENDIF
Verovatno je to ono što mi je potrebno, probaću.
Moj problem je jednostavan: imam dve tabele u
vezi 1:N i postavljam upit nad Parent tabelom (recimo,
prikaži samo one slogove kod kojih je 'mesto_pol = BEG',
a 'mesto_odl = NSD'). Sada on prvo treba da vidi ima li u
Parent tabeli upošte slogova koji odgovaraju upitu (ako
ih nema, ne otvarati Browse) i, ako može, ima li u Child
tabeli slogova u relaciji sa Parent tabelom.
Ako ima slogova (u Parent tabeli), prikaži SAMO
njih u Browse prozoru (kako se pomeram po Parent tabeli,
menjaju se slogovi u Child tabeli).
Ja sam napravio dva Browse prozora, ali nisam
znao kako da postavim filter, pa sam to probao sa SET
FILTER TO <...> pre Browse prozora, što je JAKO sporo i
neefikasno, zar ne?
Uostalom, počeo sam da čitam Tvoju storiju o
Browse prozoru, pa ću tamo valjda naći odgovor! :)
Pozdrav!
fox.32djelovic,
-> #30, max.headroom> Spisak tema diskutovanih u PC.PROG.5:baze.podataka, a tiču se Fox-a:
Hvala!
fox.33ab.comp,
-> #31, mradic ==> Browse prozoru, pa ću tamo valjda naći odgovor!
==> :)
Da ne citiram redom poruku, ukratko:
Radiš LOCATE ili SEEK() ako imaš indeks sa sastavljenim
ključem:
IF SEEK('BEGNSD')
SET SKIP TO child_table
BROW parent_table.field1, ;
....................
child_table.field1, ;
... KEY 'BEGNSD' REST
ENDIF
Ako nemaš indeks, radi LOCATE i FOR umesto KEY za filter.
Pozdrav
█ █ █ █
▄▄█ █ █▄▄ █▄▄
fox.34gaston,
Evo onog mog programa i ovde, ali kao ZIP fajl, da ne trosim mgogo vremena i
prostora.
Nesa Gaston
listzone.zipfox.35max.headroom,
-> #33, ab.comp> Ako nemaš indeks, radi LOCATE i FOR umesto KEY za filter.
U slučaju da nemaš indeks, nemoj da te mrzi da ga kreiraš :) Drasti-
čno ubrzava stvar (na kreiranje ti ode dva minuta, pogotovo ako je u
CDX formatu).
fox.36mradic,
FoxPro problem:
BROWSE FIELDS ... ;
FOR mesto.naziv = m.od ;
...
Ne radi! Kaze da je 'OD' nedefinisana varijabla,
sto naravno nije tacno (ispred Browse-a stavim '? m.od' i
lepo se ispise vrednost). Isto mi se desava i kod SET
RELATION TO. Zasto, pobogu?
fox.37mradic,
-> #33, ab.comp█ Radiš LOCATE ili SEEK() ako imaš indeks sa
█ sastavljenim
█ ključem:
Super! Koristio mi je deo koda koji si napisao, radi.
Zahvaljujem! :-)
fox.38max.headroom,
FoxPro v2.5 Win
Advanced Developers' Handbook (1/5)
fpadh.arjfox.39max.headroom,
FoxPro v2.5 Win
Advanced Developers' Handbook (2/5)
fpadh.a01fox.40max.headroom,
FoxPro v2.5 Win
Advanced Developers' Handbook (3/5)
fpadh.a02fox.41max.headroom,
FoxPro v2.5 Win
Advanced Developers' Handbook (4/5)
fpadh.a03fox.42mradic,
Kako pretraživati FoxPro bazu koristeći modem?
Pišem neki program u Fox-u za Windows, i hteo bih
da, jednog dana, mogu da čitam podatke iz baze i kada
nisam kod kuće. Nije problem kompajlirati i prilagoditi
program za DOS verziju, ali šta onda? Da li preko Doorway
programa ulaziti u takav Fox sa menijima, OK tasterima i
sličnim elementima, ili praviti sasvim novi
user-interface? (Ako neko zove iz TeleMate-a, uključio
bi 'Doorway' opciju i koristio ALT+x i Control+x
kombinacije.) Može li se, putem nekih biblioteka,
povezati Fox sa modemom? Koliko je sve to brzo? Ima li
neko bilo kakva iskustva po tom pitanju? Saveti? ...
Na Infosys BBS-u svojevremeno je postojao program
u kojem su se mogle naručiti knjige. Program je pisan u
Clipper-u i radio je preko Doorway-a, sa svim poljima za
unos, kako inače ova izgledaju u Clipper-u.
Hvala. ;)
fox.43sbrk,
-> #42, mradic>> Kako pretraživati FoxPro bazu koristeći modem?
COMET-MP is an add on communications library compatible with
dBASEIII/IV, FoxBase/Pro, Clipper S87/5.0, dBXL and QuickSilver.
COMET extends these database languages by adding powerful
communications capabilities. One of COMET's most unique features
is that all of its commands operate entirely in the background
leaving your program free to do other tasks. No longer do you
have to wait for lengthy file transfers to complete before being
returned to your database application. Imagine a data entry
person posting invoices while COMET handles incoming modem calls
and performs file transfers, all in the background!
COMET-MP (multi-port) supports the simultaneous use of
upto 5 COM ports. With user defined I/O port addresses and
interrupts, COMET-MP will work on virtually any IBM PC compatible
RS232 hardware including boards manufactured by companies such as
DigiBoard and AST Research.
a.afox.44sbrk,
čao mi je zbog greške. Datoteka uz prethodnu poruku (a.a)
se ustvari stvarno zove: DMETD4FP.ZIP ;)
fox.45max.headroom,
FoxPro v2.5 Win
Advanced Developers' Handbook (5/5)
fpadh.a04fox.46djelovic,
-> #45, max.headroom> Advanced Developers' Handbook (5/5)
Hvala na zanimljivom prilogu. BTW, bulajo, ovo bi moglo u dir?
fox.47bulaja,
-> #46, djelovic│ Hvala na zanimljivom prilogu. BTW, bulajo, ovo bi moglo u dir?
└───
Naravno. žekao sam da max pošalje sve delove, pa da to prepakujem :) u
jednu arhivu i stavim u dir.
fox.48ddabic,
-> #21, max.headroom> BROWSER I INKREMENTIRANO PRETRAZIVANJE
> --------------------------------------
> ..............
> ..............
> Da ne bih dalje navodio detalje i ponavljao se, ne bi bilo
> zgoreg da bacite pogled na moje prethodne poruke, gde je ovaj
> vid pretrazivanja (i to bas iz Browser-a) detaljno objasnjen.
Izvini Max ako te prekidam u necem vaznijem (divim se tvojim prilozima!!!)
ali ostalo mi je nejasno, i posle pregleda tvojih ranijih poruka o
inkrementalnom trazenju, kako da koristim ove funkcije u DOS verziji. Posto
se slabo bavim C-om (imam TC v.2.0 '88) interesuje me koji C mi treba da
bi napravio neku biblioteku i kako se to radi.
Probao sam da ono parce koda (L3INCR.C) kompajliram sa mojom verzijom
TC-a, ali fali mi onaj PRO_EXT.h. Kada uradim nesto u C kako od toga da
napravim biblioteku (za DOS ili WIN)?
fox.49sbrk,
Hi!
Evo javljam se sa jednim problemom. Nabavio sam jednu knjigu za FOX 4
WINDOWS i ukucavajući primere, jedna stvar nikako da mi proradi, a ja
nikako da ukapiram o čemu se radi, pa bih zamolio nekoga da pogleda.
Fajl će treba da se raspakuje u direktorij BOOK, staviti ga u root
diska. U dir-u BOOKĐPRG su programi, u BOOKĐSCX ekrani, u BOOKĐDBF
...
Problem verujem da nije komplikovan, ima samo tri-četr kratka sorsa:
TSCLIENT.PRG
TSMAIN.PRG
TSCLIENT.SPR
TSMENU.MPR
pre svega treba da se startuje TSSETUP.PRG da on namesti pathove itd.
Znači u Command window-u:
DO PRGĐTSSETUP
DO TSMAIN
Kada se pojavi meni Time, birati Submeni Clients. Otvoriće se prozor
(BOOKĐSCXĐTSCLIENT.SPR). E sad ..., kada se bira bilo koji POPUP
BUTTON, u gornjem desnom ćošku izađe prozorčić u kome bi trebalo da
piše NAZIV POPUPa (Add, Previous, Next...), a kada se bira EXIT, onda
bi trebalo da se da se prekine program. (Mora da se kuca ručno POP
MENU _MSYSMENU pošto program nepravilno završi rad, pa se SYSMENU ne
vrati)
U OVOME JE PROBLEM !
Promenljiva m.control u proceduri VCONTROL (u TSCLIENT.PRG) nikako da
dobije vrednost POPUPA (naziv). To treba da dobije u TSCLIENT.SPR u
liniji: (koliko sam ja uspeo da shvatim.) :)
č 8.923,9.600 GET m.pb ;
PICTURE "č*HNĐ<Add;Đ<Delete;Đ<Next;Đ<Previous;Đ<Search;Đ!Đ?EĐ<xit"
;
SIZE 1.769,10.333,0.667 ;
DEFAULT 1 ;
FONT "MS Sans Serif", 8 ;
STYLE "B" ;
VALID vcontrol (m.control)
Ova promenljiva m.pb lepo menja vrednost ako se biraju različiti
POPAP-i, ali se m.control ne ažurira pravilno ?! U knjizi naravno
podrazumevaju da ovo šljaka.
O čemu se radi?
Drugo: postoji li neki Shortcut za gašenje Dos prozora u Foxu? Ona
varijanta kada se recimo kuca: RUN DIR pa se onda otvori Dos prozor,
koji onda mora da se ugasi mišem u levom gornjem ćošku. Da ne bi
jurio miša po stolu, može li to sa tastature?
sbrkbook.arjfox.50sbrk,
-> #49, sbrk>> kada se bira bilo koji POPUP BUTTON,
PUSH BUTTON
Sorry.
fox.51max.headroom,
-> #48, ddabic> Probao sam da ono parce koda (L3INCR.C) kompajliram sa
> mojom verzijom TC-a, ali fali mi onaj PRO_EXT.h. Kada
> uradim nesto u C kako od toga da napravim biblioteku (za
> DOS ili WIN)?
Sve što sam napisao važi, na žalost, samo u slučaju da poseduješ
FoxPro LCK (Library Construction Kit), uz koji dobijaš i pomenuti
heder (PRO_EXT) fajl. LCK je, i dalje, retka zverka na ovim prostori-
ma. Već nedeljama se preganjam sa jednim piratom koji tvrdi da ga može
nabaviti budzašto, ali bez literature (meni slaba vajda, jer se u C
razumem k'o Marica u kriv q).
fox.52sbrk,
-> #51, max.headroomSB> LCK je, i dalje, retka zverka na ovim prostori-
SB> ma. Već nedeljama se preganjam sa jednim piratom koji tvrdi da ga
SB> može nabaviti budzašto, ali bez literature
LCK? Imam ja.Literaturu sam zaturio ;)
fox.53bulaja,
**** new file ****
MSDOS - R:\DATABASE
----------------------
fpadh zip 437165 FoxPro v2.5 for Win Advanced Developer's Handbook
faqfp25w arj 16781 FoxPro for Win v2.5: odgovori na česta pitanja (FAQ)
faqfp26w arj 22869 FoxPro for Win v2.6: odgovori na česta pitanja (FAQ)
3 file(s) 466 kb
<thanks to max.headroom>
fox.54ddabic,
-> #22, max.headroomJos jedno pitanjce u vezi Brows-a.
Kada nove zapise unosim direktno u brows preko nekog funkcijskog tastera
(on key label), a ne koristim .SPR za unos, za pozicioniranje na kljucno
polje (npr. sif_mat) koristim :W=nasif() (vidi primer) na svim ostalim
poljima osim na sif_mat, tako da je unos moguc samo u sif_mat. Ovo jeste
neko resenje ali nije dobro u svim situacijama (kad mi treba :W za neko
polje). Moze li ovo da se resi elegantnije?
Dakle, ako sam bio nejasan, kako da se dodavanjem novog zapisa u tabelu
pozicioniram uvek u isto polje nezavisno od trenutnog polozaja kursora?
....
....
on key label "+" do novi
brow fiel sif_mat :H="Sifra" :V=sifra() :E= "Neispravna sifra artikla" :F
:W=sif(), ;
sifmat.naziv :20 :H= "Naziv artikla" :W=.f., ;
sifmat.jm :3 :W=.f. ,;
kol :10 :H="Kolicina" :W=nasif() :V=zalihe() :E="Neispravno uneta kolicina",
;
pr_cena :10 :H="Cena" :W=nasif() :V=nivel() :E="Neispravna cena", ;
wind faktura
on key label "+"
.... itd.
* Dodavanje novog zapisa u tabelu
func novi
sele fakture
append blank
repl br_fakt with m.br_fakt
RETURN
* Prekidac za pozicioniranje na unos sifre artikla kada se radi novi zapis
func nasif
if empty(sif_mat) and allt(uppe(varr())) != "SIF_MAT"
RETURN .F.
ENDIF
fox.55ab.comp,
-> #54, ddabic ==> neko resenje ali nije dobro u svim situacijama
==> (kad mi treba :W za neko polje). Moze li ovo da
==> se resi elegantnije?
Probaj sa:
...........
pr_cena :10 :H="Cena" :W=nasif() .and. Neki_uslov() ;
------------------
:V=nivel() :E="Neispravna cena", ;
...........
Pozdrav
█ █ █ █
▄▄█ █ █▄▄ █▄▄
fox.56mradic,
-> #36, mradic█ Ne radi! Kaze da je 'OD' nedefinisana varijabla,
█ sto naravno nije tacno (ispred Browse-a stavim '? m.od' i
█ lepo se ispise vrednost). Isto mi se desava i kod SET
█ RELATION TO. Zasto, pobogu?
Heh, odgovaram sam sebi. 'OD' je nedefinisana varijabla zato sto
se program u medjuvremenu završio, a time se gube vrednosti svih
promenljivih iz procedura i slično (sem PUBLIC). Browse prozor je bio
u NOWAIT stanju! Već sam pljuvao po Fox-u i Microsoft-u, a grška je
bila u meni, c-c-c... ;))
fox.57max.headroom,
-> #54, ddabic> Dakle, ako sam bio nejasan, kako da se dodavanjem novog
> zapisa u tabelu pozicioniram uvek u isto polje nezavisno
> od trenutnog polozaja kursora?
Ja problem rešavam sa serijom KEYBOARD "šTABć"-ova. Potreban broj
TAB-ova (odn. BACKTAB-ova) izračunavam na osnovu polja na kojem se
trenutno nalazim :) Može da se sredi jednostavnom FOR...ENDFOR
petljom.
>* Prekidac za pozicioniranje na unos sifre artikla kada se
> radi novi zapis func nasif
> if empty(sif_mat) and allt(uppe(varr())) != "SIF_MAT"
> RETURN .F.
> ENDIF
Kuku, al' ga nagrdi :) Što ne daš čoveku da siđe dole, ako nije na
šifri? Ništa se pogubno neće dogoditi - polje 'šifra' je jedino polje
na kome držiš :F opciju, pa će ga po koji ENTER, ili TAB viška kad-tad
doterati dotle :)
U suštini i globalu, sistem unosa fakture i jeste takav da, posle uno-
sa cene artikla, tekuće polje bude ono skroz sa leve strane (prvo).
Ona gimnastika TAB,TAB,TAB... je potrebna samo u slučaju da se čovek
prešao negde u unosu, otišao da ispravi, pa najzad rešio da unese i
novu stavku. Sav taj sport na, recimo, 286 mašini ume da bude SPOR.
fox.58sbrk,
-> #49, sbrk>> Nabavio sam jednu knjigu za FOX 4 WINDOWS i ukucavajući
>> primere, jedna stvar nikako da mi proradi, a ja nikako da ukapiram
>> o čemu se radi, pa bih zamolio nekoga da pogleda.
Rešio sam problem :) Radi se o tome da promenljiva m.pb nije bila deklarisana
kao Char nego je po defaultu Num. Jedna linija m.pb = "" pre č GET linijue u
TSCLIENT.SPR je rešilo ceo problem. Knjiga iz koje je ukucao ceo primer je
pisana za Fox 2.5 4 Win. Nije moguće da je u toj verziji Foxa stavljeno da je
promenljiva u č GET funkciji Char po defaultu a u Foxu 2.6 da je Num.
postoji li neki Shortcut za gašenje Dos prozora u Foxu? Ona
varijanta kada se recimo kuca: RUN DIR pa se onda otvori Dos prozor,
koji onda mora da se ugasi mišem u levom gornjem ćošku. Da ne bi
jurio miša po stolu, može li to sa tastature?
fox.59ab.comp,
-> #58, sbrk ==> postoji li neki Shortcut za gašenje Dos prozora u
==> Foxu? Ona
Negde uspeva sa Alt+Space.
Pozdrav
█ █ █ █
▄▄█ █ █▄▄ █▄▄
fox.60mradic,
Hi!
Pokušao sam da u Fox-u pronađem jednu sasvim
uobičajenu finkciju, ali nisam uspeo. Reč je o funkciji
koja izdvaja (vraća) deo stringa sa određene pozicije i
određene dužine.
U Pascal-u je to COPY (<string>, <pozicija>, <dužina>).
Postoji li nešto takvo kod Fox-a (sem LEFT () i sl.)?
Hvala. ;)
fox.61oki.,
-> #60, mradic>> Pokušao sam da u Fox-u pronađem jednu sasvim
>> uobičajenu finkciju, ali nisam uspeo. Reč je o funkciji
>> koja izdvaja (vraća) deo stringa sa određene pozicije i
>> određene dužine.
>> U Pascal-u je to COPY (<string>, <pozicija>, <dužina>).
>> Postoji li nešto takvo kod Fox-a (sem LEFT () i sl.)?
U Fox-u se zove SUBSTR:
SUBSTR (<expC>,<expN1> [,<expN2>])
? SUBSTR("abcdef",3) daje "cdef"
? SUBSTR("abcdef",3,2) daje "cd"
Detalje potraži u HELP-u.
fox.62mradic,
-> #60, mradic█ Pokušao sam da u Fox-u pronađem jednu sasvim
█ uobičajenu finkciju, ali nisam uspeo. Reč je o funkciji
█ koja izdvaja (vraća) deo stringa sa određene pozicije i
█ određene dužine.
Kah, opet ispravljam sebe. ;) Kada sam postavljao
gornje pitanje mislio sam na jedno, a napisao drugo. ;)
Ne verujem da iko ne zna da postoji funkcija SUBSTR()
koja vraća baš ovo što sam u citiranom delu naveo.
No, ja sam hteo sledeće: postoji li gotova
funkcija kojom mogu određenom delu stringa da promenim
podstring? Recimo, u stringu "kompjuter" promeni peti
znak u "w" i slično. Jasno, sve se ovo može
isprogramirati kroz petlju, ali ako već postoji... ;)
Hvala!
fox.63oki.,
-> #62, mradic>> No, ja sam hteo sledeće: postoji li gotova
>> funkcija kojom mogu određenom delu stringa da promenim
>> podstring? Recimo, u stringu "kompjuter" promeni peti
>> znak u "w" i slično. Jasno, sve se ovo može
>> isprogramirati kroz petlju, ali ako već postoji... ;)
Koliko ja znam, ne. Za tako nešto sam koristio kombinaciju
LEFT(..)+"w"+SUBSTR i sl., zavisno po potrebi. Mislim da ti
neće biti teško da jednom napraviš takvu jednu funciju koju
posle izrabljuj po želji. :))
fox.64ab.comp,
-> #62, mradic ==> znak u "w" i slično. Jasno, sve se ovo može
==> isprogramirati kroz petlju, ali ako već
==> postoji... ;)
Imaš STUFF().
Pozdrav
█ █ █ █
▄▄█ █ █▄▄ █▄▄
fox.65sbrk,
U vezi sledećeg POPUP-a:
DEFINE POPUP klient ;
FROM 1,0 TO 13,30 ;
PROMPT FIELDS PADR(klient.id,15)+"đ"+klient.naziv ;
TITLE "Izaberi klienta" ;
FOOTER "Izaberi klienta" ;
IN WINDOW klient
Trenutno mi Fox po default-u koristi neki proporcionalan
(verovatno) SYSTEM font u ovom POPUP-u što mi pravi 2 problema:
a) nema naših slova (inače je u pitanju W4Wg CEE) i
b) proporcionalan je, tako da nikako ne mogu da izvedem da ona
uspravna linija gore ("đ"), bude u istoj vertikali sa ostalima.
Ili da se upotrebi neproporcionalan font ili da se nekako odredi
dužina stringa u milimetrima, inčima - svejedno. Kao neka naredba
PADR ali da se dužina stringa ne određuje brojem slova, nego
dužinom u mm, recimo.
1. Može li da se promeni font u POPUP prozoru? Kao i font za Header
i Footer.
2. U HELP-u kaže da se TITLE i FOOTER ignorišu u Fox-u 4 Windows ???
Kod mene rade.
fox.66ndragan,
Izvinjotka svima, promaklo mi je svečano otvaranje. Sad ću ja da vas
stignem.
Max, drži tebe, dolećavam :)
fox.67ndragan,
-> #12, mradic/ command = clear
Osim toga, ima još dva programa koji se mogu navesti poimence u konfigu,
to su
_startup="[ime_programa]"
_shell="[ime_programa]"
Mislim da ima još jedan, markira se kao _assist='...'. Ne znam kako se
tačno određuje redosled pozivanja ako se navedu sva tri, videti u
početnim poglavljima helpa. A, da, po difoltu se prvo poziva onaj CatMan
(and the other cat people).
fox.68ndragan,
-> #16, max.headroom/ kupci.naziv :20 :H="Naziv kupca" :W=.F., ;
Moguća je čak i ovako trikovita kombinacija:
alias.polje : p=fn() , ...
Fn() može da bude bilo kakav izraz, funkcija itd, bitno da je string i
da se ponaša kao pikčer. Kombinujući sa : V=vf() : ...
postigao sam da u jednoj koloni imam u nekim slogovima pikčer 999.999, a
u drugim samo 9 - ne pitajte za šta mi je trebalo. Valid funkcija,
inače, ima pet redi, a pikčer je glasio p=iif(ima_ono,"999.999","9")
fox.71ndragan,
-> #57, max.headroom/ Ja problem rešavam sa serijom KEYBOARD "šTABć"-ova. Potreban broj
Pade mi sad na um da bi, ako već varr() pozvan za vreme brauza vraća
ispravan naziv kolone u kojoj je kursor, možda i _curobj trebalo da
sadrži redni broj kolone. U tom slučaju bi i jedno
Store 1 to _curobj
moglo da odradi skok na prvu kolonu, i to direktno, bez viška
osvežavanja ekrana (što serija tabova vrlo lako može da izazove, ako si
se bar malo preračunao sa veličinom prozora).
fox.69ndragan,
-> #17, max.headroom/ i veličinu prozora (u slučaju da se koristi FoxPro fox DOS, potrebno
/ je navesti i koja se šema boja koristi. Najčešće - COLOR SCHEME 10, te
Što se veličine prozora tiče, najbolje mi se svidela (u dosu) varijanta
sa
define window za_brauz from 4, -1 size 12, scol()+1
tako da levi i desni okvir leže tačno izvan ekrana. Dobro, nestao je
klizač, ali slučaj za koji mi je trebalo je selekcija dva tri sloga iz
baze od 20, tako da se pitanje skrola ni ne postavlja.
/ čL Nule se, na početku, zamenjuju prazninama.
/ čZ Praznine se, na početku, zamenjuju nulama.
Obrnuo si: @L daje leve nule, @Z daje blenkove ako je vrednost nula.
tran(1, "@L 999") --- '001'
tran(1, "@Z 999") --- ' 1'
tran(0, "@Z 999") --- ' '
fox.70ndragan,
-> #18, max.headroom/ - :R označava polje kao "Read Only", tj. njegov sadržaj nije dozvo-
/ ljeno menjati.
...ali može da se šeta kursorom preko njega, što i nije loše ako je
polje duže nego što je širina kolone, pa onda može da se prošeta
kursorom do (nevidljivog) kraja stringa, koji onda postaje vidljiv, jer
string skroljne ulevo.
Ako vam treba preskakanje kolone, najbolje je da u nju ulaze na sveti
nikad, tj :w=.f.
Inače, foksov brauz ima ružnu osobinu da kad ste u numeričkoj koloni
imali, recimo, 19, pa počeli da kucate 2; ako je kolona dovoljno široka
da ono 2 nije pregazilo ni prvu cifru od 19, a iz polja izađete
strelicom naviše/naniže, u polju ostaje 219. Enter vas, naravno, spasava
toga, ali on vas vodi u kolonu desno. Jedno rešenje je
push key
on key label enter keyb '{enter}{dnarrow}' plain
browse ...
pop key
...pa onda lepo koristite enter i on vas vodi u polje _ispod_ tekućeg.
/ Za validaciju podataka moguće je koristiti i "čM" funkciju za biranje
Ovo ne radi u dos verziji, kao i neke druge varijante ludačkih pikčera -
jednostavno, ono što ne može da stane u jedan red, neće ići, a za @M baš
kaže da ne može.
fox.72ndragan,
-> #25, max.headroom/ 2. Vršiti update memorijske promenljive tekućim zapisom u Browser-u.
/ 3. Resetovati promenljivu kada se korisnik pomeri na neki drugi zapis
/ u istom Browse prozoru.
Ovo ume da bude sporo, i to pod dosom, a da ne spominjem prozore. Da bi
se rečeni indikator iole pomerio, foks svaki put osvežava ceo brauz
prozor. Probaj čuveni test zvani 'baza od 7000 slogova i leganje na
strelicu naniže'. U suštini, nema načina da se bilo šta promeni u
browse...nowait prozoru osim ponovnog aktiviranja brauza ili show window
bwtitle refresh, a ako to očekuješ da će da radi brzinom kojom tatastura
ponavlja pritisnut taster, neće ići.
Rešio sam taj problem (kao i farbanje tekućeg sloga) pod dosom, a za
pendžere nemam živaca - sve je tako grozno sivo/belo. Za efikasno
farbanje treba Visual Fox 3.0, barem.
fox.74ndragan,
-> #58, sbrk/ postoji li neki Shortcut za gašenje Dos prozora u Foxu? Ona
Pif editor - tamo treba nešto da se pročačka. Vidi u helpu za Run, piše
i šta treba. Ja sam u stvari imao obrnut problem - štogod pozovem,
odskroluje i nestane, zatvori prozor pa nemam pojma šta je ispisalo.
Mislim da i taj može da se zatvori sa alt+f4.
fox.75ndragan,
-> #62, mradic/ funkcija kojom mogu određenom delu stringa da promenim
nov_string=Stuff(stari_string, od, koliko, zamena)
od - od kojeg znaka počinje zamena
koliko - koliko znakova se zamenjuje. Može bilo šta od 0 do preostale
dužine stringa
zamena - string koji se ubacuje umesto izbačenih znakova
Jednostavno i moćno, i sasvim brzo. Postoji i u kliperu, sa istim
parametrima.
fox.73ndragan,
-> #26, mradic/ odgovaraju nekom upitu. Međutim, ako nema ni jednog
/ podatka, ne želim da mi se uopšte otvara Browse prozor.
Locate for ...
if found()
browse rest for ...
endif
Obrati pažnju na _rest_ - kad si već utrošio vreme da nađeš prvi slog,
ovim stavljaš foksu do znanja da brauz ne krene opet ispočetka da traži,
nego od tekućeg sloga nadalje. Dosad nenađebivo najbrža kombinacija,
naročito ako postoji indeks po polju koje ulazi u uslov (ne mora da je
aktivan indeks, samo da je otvoren).
fox.76sbrk,
-> #74, ndragan>> / postoji li neki Shortcut za gašenje Dos prozora u Foxu? Ona
>>
>> Pif editor - tamo treba nešto da se pročačka. Vidi u helpu za Run, piše
>> i šta treba.
Fala, ali sam problem rešio tako što sam poslušao nekoga ovde ko mi je
predložio Alt-Space-C.
fox.77ab.comp,
-> #76, sbrk ==> Fala, ali sam problem rešio tako što sam poslušao
==> nekoga ovde ko mi je predložio Alt-Space-C.
Definitivno rešenje bi trebalo da bude ispravka u FOXRUN.PIF
koji se nalazi u FPW dir-u. Treba aktivirati opciju Close Window on
Exit.
Ukoliko to neće da radi treba proveriti da li se koristi neki
DOS BAR ili sličan program i u njemu kao i u _DEFAULT.PIF, DOSPRMPT.PIF
i NOCLOSE.PIF proveriti da li je aktivirana navedena opcija.
Pozdrav
█ █ █ █
▄▄█ █ █▄▄ █▄▄
fox.78gcurcic,
Ima li neko pojma šta znači misteriozna poruka 'Use of transgressed file
handle', za koju u helpu piše da se valja obratiti MS-u lično. Poruka
se povremeno javlja na aplikaciji pisanoj u Foxu 2.0 + DK i prethodi pucanju
aplikacije. Šta može biti uzrok?
Ndragane, Max?
fox.79ndragan,
-> #78, gcurcic/ aplikacije. Šta može biti uzrok?
Javlja se to još od mfoxplus (pardon, tamo je bilo fatal error 0008
while attempting to report error 0008, ovo se vuče od FP1.00 naovamo).
Skenjalo se nešto u internim tabelama. Ako ne izađe u dos, pomoći će
pravoslavni reset. Uzrok može biti bilo šta, prljavo pisan TSR, matorija
verzija upravljača memorijom... štogod hoćeš. Jedino rešenje je da se
vidi gde se to javlja, da se procedura rastereti (smanji se broj
otvorenih baza, prozora), da se pobrišu slogovi u foxuser koji čuvaju
konfiguraciju vezanu za taj slučaj, a pomaže i da opsuješ.
E, da, postoji mogućnost brljotke u nekom .fxp fajlu, prekompajliraj za
svaki slučaj. U .pjx tome odgovara Replace all timestamp with 0 pa
ponovo zidaj .exe ili .app. Moguće je da je i zaglavlje bloka u nekom
memo polju otišlo u ocov, prepakuj memo.
fox.81sbrk,
Ako neko poseduje disketu sa source-om koja ide uz knjigu:
CREATING FOXPRO APPLICATIONS by George F.Goley IV, Founder of Micro Endeavors,
Inc.
umoljavam ga da se javi! Moja disketa neće da se pročita :( A ja sam govorio
drugaru koji mi je nosio disketu da se ne vozi u trolejbusu. ;) Al'
sad je kasno.
fox.82ddabic,
-> #71, ndragan> Pade mi sad na um da bi, ako vec varr() pozvan za vreme brauza
> vraca ispravan naziv kolone u kojoj je kursor, mozda i _curobj
> trebalo da sadrzi redni broj kolone. U tom slucaju bi i jedno
_curobj - vraca samo broj objekta u aktivnom get-u !!!
fox.83ndragan,
-> #82, ddabic/ _curobj - vraca samo broj objekta u aktivnom get-u !!!
Da, probao sam i ja posle. Hm, malo je bez veze, bilo bi dobro da neka
generalna rutina za švrljanje po brauzu može da zna u kojoj je koloni
kursor, ne samo po imenu nego i po rednom broju.
fox.87sbrk,
Da li je neko probao ovo:
kada se napravi nezavisni EXE u Foxu 2.6, a u source-u postoji naredba
SCATTER, EXE pri izvršenju prijavljuje grešku ?!
fox.86sbrk,
Da li neko ima knjigu
Inside FoxPro 2.5 for Windows ?
Hitno.
fox.88sbrk,
žitam stare poruke u vezi Foxa i naiđem na
LIBRARY TOOLKIT FOR FOXPRO (DOS & WINDOWS)
zna li neko šta je ovo? Isto tako je i Max nekad davno ;) tražio neke
biblioteke za Fox:
>> Kategorija Naziv
>> --------------------- ------------------------------------------
>> Grafika Espia, dGE, SilverPaint, FoxGraph, SunShow
>>
>> Serijska komunikacija CommTools, SilverFox SPCS
>>
>> NetWare biblioteke NetLib, FPNet, GPLib
>>
>> Client-Servers Biton/ORACLE, RaSQL
a ima tu i neki FireFox koji je spomenuo MDrazic u onom prikazu nekog
takmičenja programskih jezika, biblioteka...
Jel vredi nešto odavde?
fox.89m.dzigurski,
Napravio sam .EXE od jedne aplikacije u Fox-u 2.6 za Windows, pa me
interesuje da li je moguće promeniti naslov glavnog prozora (piše
'Microsoft FoxPro')?
fox.90ab.comp,
-> #89, m.dzigurski ==> interesuje da li je moguće promeniti naslov
==> glavnog prozora (piše 'Microsoft FoxPro')?
Staviš mu jedno:
MODIFY WINDOW SCREEN TITLE 'This is not Microsoft FoxPro';
FOOTER 'Prati radnju! Ne gledaj u tastaturu!'
Pozdrav
█ █ █ █
▄▄█ █ █▄▄ █▄▄
fox.91ndragan,
-> #88, sbrk/ Jel vredi nešto odavde?
Ako nije zglomazno, bači sve. Naročito ono u vezi sa ser Oraklom.
fox.92sbrk,
-> #91, ndragan>> / Jel vredi nešto odavde?
>>
>> Ako nije zglomazno, bači sve. Naročito ono u vezi sa ser Oraklom.
Ma nemam ja ništa od ovoga, nego pitam dal' da se bacam u poteru za nečim sa
spiska?
fox.93ndragan,
Povremeno me zeza jedna stvar, mislim da je foksov bag. Radi se o upisu
u memo polja. Recimo da prva i treća imaju memo polja i nekakve sadržaje
u njima, druga baza je tek tako da bude selektovana:
use prva in 1
use druga in 2
* ako je codepage=852 u config.fp, može šđć u imenima:
use treća in 3
repl memo3 with 'bum-tra-la-la'
sele 2
repl prva.memo1 with treća.memo3
E sad bi trebalo da je prva.memo1='bum-tra-la-la', međutim najčešće se
ništa ne događa, ostaje kako je bilo. Foks se ništa ne buni, ponaša se
isto i kad je excl On i kad je Off. Nisam probao da izričito zaključam
slog (a hoće to da ima uticaja, naprimer Edit na memo polju se ponaša
kao Disabled kad se da Read NoLock).
Dakle, selektovana jedna baza, a iz druge u treću prepisujem memo polje.
Ponekad ga prepiše, a najčešće neće, osim ako baš selektujem bazu u čije
memo polje pišem.
Ima li neko neka iskustva sa ovim problemom?
fox.94sbrk,
Taze informacija:
Danas sam se čuo sa jednim drugarom koji je u Kanadi. Kaže:
"Drž' se FoxPro-a, neverovatno se traže programeri u Foxu, satnica za
programera u Foxu je 70 dolara."
! - kažem ja.
fox.95nbatocanin,
-> #94, sbrk> "Drž' se FoxPro-a, neverovatno se traže programeri u Foxu,
> satnica za programera u Foxu je 70 dolara."
Izgleda da je tvoj drug naleteo na leglo Foxovaca :) U Kanadi imam
oko 20 prijatelja koji rade u računarskoj struci, sa svima sam u
stalnom kontaktu i često pričamo o tome šta se traži. Programiraju u
svemu i svačemu, počev od C-a, C++, COBOL, Oracle, Clipper, Informix,
Progres, BASIC, ... ali mi niko nije ni jednom pomenuo neku
specijalnu potražnju za Fox programerima. Ono što je sigurno, to je
da se za baze traži Oracle, a za razvojno okruženje je sve traženiji
Windows.
fox.96sbrk,
Napravljen je jedan screen pomoću Screen Wizarda (SPR). U najdonjem redu stoje
buttoni: Top Next Prev End Add Locate ...
Kada se strelicama namesti kursor na button Next i kad se pritisne Enter, ekran
se osve
ži sa podacima sledećeg sloga i kursor pređe na sledeći button - Prev.
Da li postoji neki jednostavniji način (ili bilo kakav) da se izvede da
pritisak Entera ostavi kursor u aktivnom buttonu, da ga ne pomera na sledeći a
u isto vreme da dok je kursor u poljima gore (recimo u unosu ili izmeni) da
pritisak na Enter normalno skoči na sledeće polje?
Znači dok je kursor na buttonima da Enter ostavi kursor na tom buttonu gde je
bio kad se stisnuo Enter, a kad je kursor na poljima (a ne na buttonima) da
Enter skoči na sledeće polje.
fox.97sbrk,
-> #96, sbrk>> Da li postoji neki jednostavniji način (ili bilo kakav) da se izvede da
>> pritisak Entera ostavi kursor u aktivnom buttonu, da ga ne pomera na
>> sledeći a u isto vreme da dok je kursor u poljima gore (recimo u unosu
>> ili izmeni) da pritisak na Enter normalno skoči na sledeće polje?
Rešenje je jednostavno, da ne mož' biti jednostavnije:
u literaturi o Foxu koju sam čitao se akcije koje proizvode Buttoni uglavnom
rešavaju jednom generalnom procedurom kojoj se svi buttoni obraćaju preko VALID
opcije @ .. GET naredbe - nešto kao: VALID button_val ('EDIT').
Za ovo što sam ja tražio: da dok je kursor na buttonu da pritisak na enter NE
pomeri kursor na sledeći objekat je dovoljno na kraju procedure npr. button_val
staviti jedno RETURN 0.
fox.98ndragan,
-> #96, sbrk/ Da li postoji neki jednostavniji način (ili bilo kakav) da se izvede
/ da
Probaj da u valid proceduri zapamtiš _curobj u neku promenljivu, a onda
da je na kraju upišeš nazad u _curobj, naprimer
_tmpobj=_curobj
Do Case
case <dugme1>
...
tra la la
endc
_curobj=_tmpobj
retu .t.
Druga varijanta je da probaš da menjaš prompt na tom objektu, i na onom
koji je ranije bio difolt objekt, tako što ćeš ovome turiti \! ispred
(da bude difolt dugme) a onome starom skinuti. Za ovo treba da držiš
jednu promenljivu sa rednim brojem difolt objekta, tako da znaš koji ti
je bio poslednji difolt.
Inače, cela ta filozofija sa dugmićima za šetnju kroz bazu mi ide na
levo a i na desno ono_čega_imam_dva, a foks (a i ostale pendžerske i
slične Xbase okoline) upravo je obožavaju. Zamisli knjigovođu koji treba
da proknjiži hiljadu stavki za jedno radno vreme (norma je oko 800, a
znam operatere koji su išli do 1600). On sad pre svake stavke treba da
(mišem, tabom, vrućim ključem) dođe do dugmeta "new" i okine ga, pa onda
da bude pripušten u unos, a onda da potvrdi (još jedna vožnja) da to što
je ukucao hoće i da mu bude upisano na disk (dugme "save", tj spasavaj
(se ko može)).
Da bude crnje, u Paradoksu, a sad vidim i u Vidigabre Lisici za Prozore
3.0 (beta pred puštanje), ti dugmići se nalaze u alatnici (toolbar - ima
li neko bolji prevod), dakle van okvira obrasca (form?). Šetnja do tamo
i nazad.
Za masovni unos, po meni, bolje je da se obrazac stalno nalazi u režimu
unosa, a enter na poslednjem polju/kontroli da upisuje na disk. Na taj
način ponovo dobijamo ono što smo imali još pre deset godina: jednoručni
unos podataka. Sve što vam treba nalazi se na numeričkom delu. Tab za
prelaz na sledeće polje? Ergonomijo, majko, pa to je na levoj strani!
Levom rukom obrću papire koje obrađuju.
Šta misli cenjeti kolegijum o ovoj temi?
fox.99nbatocanin,
-> #98, ndragan> dobijamo ono što smo imali još pre deset godina:
> jednoručni unos podataka. Sve što vam treba nalazi se na
> numeričkom delu. Tab za prelaz na sledeće polje?
> Ergonomijo, majko, pa to je na levoj strani! Levom rukom
> obrću papire koje obrađuju.
>
> Šta misli cenjeti kolegijum o ovoj temi?
Rekao bih da je za sada filozofija da bude šareno, a detalji će doći
kasnije ;)
fox.100gcurcic,
-> #98, ndragan¨˙> Šta misli cenjeti kolegijum o ovoj temi?
Jašta! Pošto sam video kako to kod konjkurencije izgleda, ja seo i napravio
pgmče u kojem se unos naloga najviše dopada mom ćaletu. Kakvi butončići, kakvi
bakrači! Knjigovođe to vole prosto (a da imaju sve pred nosom):
(za finansijsko)
╔════════════════ FINANSIJSKO KNJIGOVODSTVO ════════════════╗
║ _naziv_firme _br.naloga _date() ║
ă───────────────────────────────────────────────────────────Â
║ _br.stavke uk_duguje uk_potražuje _saldo ║
ă─────┬─────┬───┬───┬──────────┬────────────┬───────────────Â
║ │ │ │ │ │ │ ║ <- ovde se
║ │ │ │ │ │ │ ║ skroluje
║ │ │ │ │ │ │ ║ zadnjih
║ │ │ │ │ │ │ ║ desetak stavki
║ │ │ │ │ │ │ ║
║ │ │ │ │ │ │ ║
║ │ │ │ │ │ │ ║
ă─────┴─────┴───┴───┴──────────┴────────────┴───────────────Â
║datum konto sif1 sif2 opis duguje potražuje ║ <- ovde su polja
ă───────────────────────────────────────────────────────────Â za unos
║ _naziv_konta naziv_dokumenta ║
║ _naziv_komitenta (to je sif1) ║ <- ovde su
pomoćni
║ _naziv_r.j. (to je sif2) ║ ('podsećni')
╚═══════════════════════════════════════════════════════════╝ podaci
Još samo PgUp i PgDn za prelaz u prethodni/sledeći slog (ako treba neka
ispravka), Ctrl-B za brisanje stavke, Ctrl-K za poziv cincilatora i knjigovođe
site i živci na broju.
Uzgred, pitanje: kako se snalazite sa 286 radnim stanicama pod Novelom?
Toliko je sporo da za takve instalacije moram da kompajliram na Foxu 2.0.
fox.101sbrk,
Ne mogu da nađem u helpu FOXa koji fajlovi predstavljaju EXE support library,
valjda ih ima 5? Jel' zna neko?
I, da li Stand-Alone EXE kompajliran sa Extended FOXom na 486-ici radi na
286-ici? Pretposta sa 1 MB rama. Trebalo bi da radi, al' ne znam provereno.
A ovaj Stand-Alone-Extended verovatno NE radi na toj istoj 286-ici sa 1 MB.
fox.103ndragan,
-> #100, gcurcic/ bakrači! Knjigovođe to vole prosto (a da imaju sve pred nosom):
I pazi sad, oni su mušterije, dakle u pravu su i treba im dati to što su
tražili i što hoće da plate. Video sam nekoliko dobrih rešenja, i ovo
tvoje je među boljima.
E, nek proba neko da ubedi knjigovođu koji je navikao na ovako lagan
unos, da treba da odvoza miša do alatnice, klikne na ikonicu praznog
papira, pa unese stavku, pa klikne na ikonicu diskete da mu se to i
zapiše, pa onda ispočetka. E da, ako hoće da preskoči neko polje, ne sme
da pritisne Enter, nego Tab.
Javite mi kakva je reakcija :)
fox.102ndragan,
-> #99, nbatocanin/ Rekao bih da je za sada filozofija da bude šareno, a detalji će doći
/ kasnije ;)
Ako ih ikad bude. Idu mi do nekle na... taman ustališ neku filozofiju
svog interfejsa, i nas pedeset uradimo takve stvari, svako na svoj
način, i onda neko to pokupi i da psiholozima i ostaloj bratiji, i onda
izađu smernice (ko ono za Meka, sa potonjim prepisima i preradama,
zaključno sa pokazivanjem i kliktanjem).
Onda to postane standard.
Zvrčka je što je ceo taj interfejs zamišljen za opštu upotrebu u samim
prozorima, tj kad hoćeš nešto da radiš od kućnih poslova, dakle za
dijaloge, a ne za maske za unos, posebno ne za masovni unos.
Malo sam proradio ovo sa svojim projektantom (on radi globalni deo, moje
je da to pretočim u baze i aplikaciju), i on tvrdi da je situacija kad
neko ima 800 stavki za jedno radno vreme stvar loše organizacije, zašto
se sve to sliva u centralu i zašto nema računara tamo gde se stvarno
događa. Tu jeste u pravu, ali zamisli velik magacin koji treba da se
izinventariše preko vikenda. Voleo bih da vidim proračun troškova za
instalaciju kojom bi to mogli da rade pod pendžerima, i da za svaku
stavku moraju da klikću na dugmiće ko sivi soko.
Da se razumemo, mašina na kojoj radim je 486/40 sa 16M, pod dosom samo
zvoni, a pod win95 je za neku nijansu brže nego pod starim pendžerima -
jeste ekran brži, ali po potrošnji duvana vidim koliko ga često čekam
dok promulja po disku. A da mulja, mulja. "Checking your hardware" traje
maltene kao defragmentacija. Očin proverava hardver - nema pojma, traži
drajvere po disku :)