PCPROG.5

05 Jan 1995 - 02 Oct 1995

Topics

  1. algoritmi (106)
  2. comment (2)
  3. ms.dos (27)
  4. windows (332)
  5. asembler (203)
  6. basic (228)
  7. jezici (126)
  8. pascal (1085)
  9. cccc (546)
  10. cpp (117)
  11. clipper (1048)
  12. baze.podataka (194)
  13. fox (231)
  14. cavo (192)
  15. razno (593)

Messages - fox

fox.1 djelovic,
Ljubitelji Lisice, Dobrodošli u najbržu temu na Sezamu.
fox.2 dr.grba,
>> Dobrodošli u najbržu temu na Sezamu. A sad da mi svaki obeća po jedno piće (:
fox.3 sbrk,
SB> >> 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.4 djelovic,
> 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.5 ab.comp,
==> Dobrodošli u najbržu temu na Sezamu. Mašala! Pozdrav █ █ █ █ ▄▄█ █ █▄▄ █▄▄
fox.6 mradic,
čiveli! Dobili smo svoju temu! Ojha! ;) Treba opravdati poverenje, pa, po protokolu, reč dajem iskusnijim Fox-ovcima od sebe... GO FOR IT! :)
fox.7 goxx,
■ č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.8 max.headroom,
> 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.9 max.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.arj
fox.10 max.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.arj
fox.11 max.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.arj
fox.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? Pozdrav!
fox.13 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.14 nbjvsa,
> 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.15 ab.comp,
==> Ipak, ostaje pitanje: kako da mi se obriše ekran ==> po ulasku u Fox Staviš mu svič -t u (PIP) Command Line. Pozdrav █ █ █ █ ▄▄█ █ █▄▄ █▄▄
fox.16 max.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.17 max.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.18 max.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.19 max.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.20 max.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.21 max.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.22 max.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.23 max.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.24 max.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.25 max.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.26 mradic,
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.27 goxx,
■ 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.28 ab.comp,
==> 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.zip
fox.29 max.headroom,
> 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.30 max.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.31 mradic,
█ 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.32 djelovic,
> Spisak tema diskutovanih u PC.PROG.5:baze.podataka, a tiču se Fox-a: Hvala!
fox.33 ab.comp,
==> 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.34 gaston,
Evo onog mog programa i ovde, ali kao ZIP fajl, da ne trosim mgogo vremena i prostora. Nesa Gaston listzone.zip
fox.35 max.headroom,
> 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.36 mradic,
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.37 mradic,
█ Radiš LOCATE ili SEEK() ako imaš indeks sa █ sastavljenim █ ključem: Super! Koristio mi je deo koda koji si napisao, radi. Zahvaljujem! :-)
fox.38 max.headroom,
FoxPro v2.5 Win Advanced Developers' Handbook (1/5) fpadh.arj
fox.39 max.headroom,
FoxPro v2.5 Win Advanced Developers' Handbook (2/5) fpadh.a01
fox.40 max.headroom,
FoxPro v2.5 Win Advanced Developers' Handbook (3/5) fpadh.a02
fox.41 max.headroom,
FoxPro v2.5 Win Advanced Developers' Handbook (4/5) fpadh.a03
fox.42 mradic,
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.43 sbrk,
>> 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.a
fox.44 sbrk,
čao mi je zbog greške. Datoteka uz prethodnu poruku (a.a) se ustvari stvarno zove: DMETD4FP.ZIP ;)
fox.45 max.headroom,
FoxPro v2.5 Win Advanced Developers' Handbook (5/5) fpadh.a04
fox.46 djelovic,
> Advanced Developers' Handbook (5/5) Hvala na zanimljivom prilogu. BTW, bulajo, ovo bi moglo u dir?
fox.47 bulaja,
│ 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.48 ddabic,
> 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.49 sbrk,
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.arj
fox.50 sbrk,
>> kada se bira bilo koji POPUP BUTTON, PUSH BUTTON Sorry.
fox.51 max.headroom,
> 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.52 sbrk,
SB> 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.53 bulaja,
**** 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.54 ddabic,
Jos 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.55 ab.comp,
==> 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.56 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.57 max.headroom,
> 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.58 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.59 ab.comp,
==> postoji li neki Shortcut za gašenje Dos prozora u ==> Foxu? Ona Negde uspeva sa Alt+Space. Pozdrav █ █ █ █ ▄▄█ █ █▄▄ █▄▄
fox.60 mradic,
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.61 oki.,
>> 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.62 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.63 oki.,
>> 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.64 ab.comp,
==> znak u "w" i slično. Jasno, sve se ovo može ==> isprogramirati kroz petlju, ali ako već ==> postoji... ;) Imaš STUFF(). Pozdrav █ █ █ █ ▄▄█ █ █▄▄ █▄▄
fox.65 sbrk,
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.66 ndragan,
Izvinjotka svima, promaklo mi je svečano otvaranje. Sad ću ja da vas stignem. Max, drži tebe, dolećavam :)
fox.67 ndragan,
/ 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.68 ndragan,
/ 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.69 ndragan,
/ 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.70 ndragan,
/ - :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.71 ndragan,
/ 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.72 ndragan,
/ 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.73 ndragan,
/ 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.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. 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.75 ndragan,
/ 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.76 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. Fala, ali sam problem rešio tako što sam poslušao nekoga ovde ko mi je predložio Alt-Space-C.
fox.77 ab.comp,
==> 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.78 gcurcic,
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.79 ndragan,
/ 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.81 sbrk,
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.82 ddabic,
> 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.83 ndragan,
/ _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.86 sbrk,
Da li neko ima knjigu Inside FoxPro 2.5 for Windows ? Hitno.
fox.87 sbrk,
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.88 sbrk,
ž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.89 m.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.90 ab.comp,
==> 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.91 ndragan,
/ Jel vredi nešto odavde? Ako nije zglomazno, bači sve. Naročito ono u vezi sa ser Oraklom.
fox.92 sbrk,
>> / 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.93 ndragan,
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.94 sbrk,
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.95 nbatocanin,
> "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.96 sbrk,
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.97 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.98 ndragan,
/ 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.99 nbatocanin,
> 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.100 gcurcic,
¨˙> Š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.101 sbrk,
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.102 ndragan,
/ 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 :)
fox.103 ndragan,
/ 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.104 ndragan,
/ Ne mogu da nađem u helpu FOXa koji fajlovi predstavljaju EXE support / library, valjda ih ima 5? Jel' zna neko? To bi trebalo da su ona tri .ES? fajla (par .ESO i .ESL za preklapačku verziju, i samo jedan .ESL velik kao ta dva zajedno za produženu), s tim da bi trebalo nositi i foxr.exe (da startuje .app - .exe se inače pravi tako što se on linkuje na .app) config.fp (da sadrži makar liniju Resource=off ili ćeš morati da nosiš i) foxuser.dbf, .fpt (ako vidiš .idx, obriši odmah - to je zaostalo od poslednjeg reseta pa ga foks nije obrisao sam) foxpro.int - tabele za kodne strane. Za naš 852 raspored može da se stavi Set Collate to "Slovak", lepo slaže Š između S i T, jedino što sortira č ravnopravno sa c, a ć dođe posle kao posebno slovo. / A ovaj Stand-Alone-Extended verovatno NE radi na toj istoj 286-ici sa / 1 MB. Bilo šta u proširenoj verziji zahteva minimum mega ipo produžene (na 286) a može isto i proširene (386+), mada... 286? To bi trebalo zakonom zabraniti. Uspeo sam jednom da pokrenem preklapačku verziju (2.6) na 286, mogao sam korak po korak da pratim kako iscrtava ekran. Ono što na 386 uradi ko je reko keks, na 286 se primetno vuče ceo minut. Ne preporučujem.
fox.105 gcurcic,
¨˙> 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. Za 2.0: osim učitavača (jel to prevod za loader? ;> - FOX.EXE, FOXR.EXE, FOXL.EXE), FOXPRO.ESL, FOXPRO.ESO, FOXPROX.ESL, FOXPROL.OVL; ako koristiš foxove drajvere za štampače još GENPD.APP i PROAPI16.EXE A za 2.6 (ako se ne varam) još FOXDX260.ESL, FOXPRO.INT, FOXSTART.APP i valjda DRIVER2.PLB. Za drugo pitanje: na 486tici možeš da formiraš Simple executable koji će raditi na 286tici. Extended verzija je rezervisana za 386tice (SX) i više. Hintić: kada loaderom startuješ .APP-likaciju, možeš ga naterati da ti se Extended verzija startuje i na 386tici sa manje od 2MB slobodne memorije: FOX -M1000 XYZ.APP
fox.106 dulev,
Da li je neko probao Fox 2.6 za Win i ODBC sa Oracle-om? Sta imam: - Oracle 6 na Unix-u - Fox 2.6 na Win 3.11 - Odogovarajuce verzije TCP... Sta se desava: Access vidi Oracle, V.Basic, CA Visual Objects... svi vide Oracle i sljaka bez problema. (Na ISTOJ masini, isti WIN, isti TCP, isti Oracle, SVE isto.) Medjutim, Fox se UBIJE (Module Foxprow .... GENERAL ERROR ..... )? (Karadza) (dv)
fox.107 gcurcic,
¨˙> 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. Dal' je tvoj projektant nekad obučavao magacionere? Tuga božija. Prvo, nikad nemaju vremena. Drugo: muka im je da uče bilo šta novo. Treće: kod nas je osnovni kriterijum kod zapošljavanja magacionera da je jak i zdrav (masan i debo) kako bi mogao da pripomogne pri utovaru/istovaru. Samo sam jednom video da je direktor, kad je ubacio comp u magacin, zajedno sa mašinom ubacio i ženu koja je dotad radila pozadinski nanos za taj magacin. Svi su se smejali ("taj kompjuter im samo napravi gužvu u magacinu"), ali se njih dvoje lepo organizovalo - on prima i predaje robu, utovaruje i istovaruje, dok mu ona sređuje svu dokumentaciju. Sa njima nikad greške, a nije da nemaju posla...
fox.108 gcurcic,
¨˙> 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 Samo mi ovo nije jasno: moduli oko kojih sam se namučio ko žuti mušterije ostavljaju mrtvim-ladnim, a nešto što sam ubacio za mož' nekad da zatreba... Recimo, 132-kolonski prikaz ih oduševljava, kao i Print Preview izveštaja (prosto odštampano u fajl i MODI COMM trt-mrt NOMODIFY) umesto browse-a (TAB, gde to beše?), pa foxov calculator i diary. A ja se zamajavao oko prepravljanja GENPDa da šaljem štampu u RipeFAX-ove *.LET fajlove sa sve skenjiranim potpisom i džidžamidžama! Definitivno, najbolji potrošači usluga su sekretarice u raznim Vele Komerc Internacional Xolding Trade Export-Import Company Promet corp ltd firmama. Brate, nabaciš joj Winword i neki Bitfax, uradiš 3-4 templejta sa logotipom, instaliraš faxmodem, dolaziš 5-6 dana... Plus pićence, žensko društvo i friendly environment. Možda se nađe i neki budući poslić... A i vlasnici tih malih firmi nikad ne cepidlače oko honorara.
fox.109 madamov,
> 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. Zavisi od alata i od toga koliko je programer želeo da utroši vremena (viđao sam ja žešće nebuloze u Fox i Clipper DOS programima tipa da čovek mora da prođe celu masku udaranjem 30 puta na enter da bi došao do "dugmeta" za odustajanje, nemoj mi reći da je to brže od kliktanja mišem na Cancel dugme), ovi moji se i nisu baš preterano bunili kad su iz Clipper programa prelazili na moje čedo na Meku. Stvar navike i umešnosti programera, tj. manje umešnosti koliko želje da se stvari naprave onako kako treba, a ne kako svi rade. Doduše, ja sam malo subjektivan, tj. u specifičnoj sam situaciji jer razvijam program za firmu u kojoj radim, kod mene (potrudio sam se da tako napravim organizaciju) knjigovođe unose prilično malo podataka, više od 50% stvari im je već uneseno od strane komercijalista, sekretarica, osoba koje vode blagajne i bankovne račune i slično, knjigovođa i računovođa to odobravaju za knjiženje ili im odbijaju, kliktanjem i shift-kliktanjem smeštaju grupe dokumenata u odgovarajuće naloge za knjiženje itd. Alat u kome radim mi omogućava da ovakve stvari relativno brzo uradim (uskoro će se, nadam se, pojaviti i za Windows pa ćete moći da vidite o čemu pričam), a da sam se opredelio za Fox za Meka ne bi mi na pamet palo da implementiram takve stvari u aplikaciju.
fox.110 sbrk,
Ne mogu nikako da pronađem šta znači poruka o grešci: kada se startuje Stand-Alone EXE, javlja FILE NOT FOUND, a ispod tog prozora o grešci, na ekran napiše 13 0.5 [Enter] Fox mi se nalazi u pathu, kada se startuje APP iz FOXa, ne prijavljuje se nikakva greška. Ako odgovorim sa Ignore, dalje sve lepo radi; na Cancel izbaci u DOS. Verzija Fox-a je FP4Dos 2.6, startovanje je iz DOS-a. Zna li neko?
fox.111 majstor,
Dodje i MS Visual FoxPro na 13 disketa. Proba li neko ovo ????
fox.112 spantic,
> Dodje i MS Visual FoxPro na 13 disketa. Proba li neko ovo ???? Ja imam neku verziju na 10 ED disketa, ali izgleda da je to ipak bila beta. Dosta je lepo radila, mada osim prevođenja starih programa iz Fox 2.6 for Win ništa nisam ni probao.
fox.113 sbrk,
>> kada se startuje Stand-Alone EXE, javlja FILE NOT FOUND, a ispod tog >> prozora o >> grešci, na ekran napiše >> >> 13 >> 0.5 >> [Enter] Niko? OK, onda jedno drugo (lakše?) pitanje: da li nekako može da se izvede u FOX-u nešto kao IDLETIME HOOK? To bi bila neka stalno aktivna (znači i onda kada user ništa ne kuca, a nalazi se bilo gde: u READ-u, READ CYCLE-u, MENIju...) a mogla bi konkretnije da se iskoristi za recimo neko brojanje vremena od zadnjeg pritisnutog tastera, da bi mogla da se aktivira neka poruka (autorska reklama ili kontextni help ili bilo šta). Pošto je u FOX-u skoro svaka akcija usera EVENT a za svaki EVENT je moguće aktivirati UDF, da li postoji nekakva rezidentna funkcija koju ne aktivira ni jedan EVENT nego je stalno aktivna (naravno, ako je programer aktivira). Pritom nisam mislio na READ TIMEOUT (šta ako user nije u READ-u i šta ako bi programer hteo da aktivira neku UDF posle nekog vremena).
fox.114 max.headroom,
> 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): Jasno. Nebulozno je praviti bilo kakav button bar, jerbo na korišćenje istog odleti 50% vremena pri unosu naloga. Nekako sam zaključio da je najbezbolnije APPEND u bazu raditi preko nekog od F-tastera (F5 ili F9), a prikaz prepuštam BROWSEr-u. Ne znam da li si implementirao :) sledeće - pri startovanju programa obavezno pita "Odaberite firmu sa kojom ćete raditi", u slučaju da čovek knjigovodstveno servisira više od jedne firme. Potom program do daljnjeg ostaje na izabranoj firmi - tako operatera spašavaš unošenja tog jednog (u praksi često jednog te istog) podatka. Think about it. I još nešto - obavezno na ekran gurni DUGUJE, POTRAčUJE i SALDO, najbolje u dnu BROWSE prozora (da ne bude zabune, to su SUM vrednosti). Tako se olakšava vizuelna kontrola. Special tip: po unosu naloga ne dozvoliti izlazak (ili ga dozvoliti opciono) ako je nalog u neravnoteži (SALDO<>0). U svakom slučaju - stavi knjigovođi do znanja da's može zeznuti propusti li tekući nalog u bazu.
fox.115 gcurcic,
¨˙> Jasno. Nebulozno je praviti bilo kakav button bar, jerbo na ¨˙> korišćenje istog odleti 50% vremena pri unosu naloga. Nekako ¨˙> sam zaključio da je najbezbolnije APPEND u bazu raditi preko ¨˙> nekog od F-tastera (F5 ili F9), a prikaz prepuštam BROWSEr-u. Ja ne koristim F-tastere. Nekako nisu pri ruci (od XT-ove pa naovamo:)) Umesto toga, slog u tabelu dodajem po unosu zadnjeg polja u read-ciklusu (potvrdim sa enterom, što kaže moja koleginica) ¨˙> Ne znam da li si implementirao :) sledeće - pri startovanju ¨˙> programa obavezno pita "Odaberite firmu sa kojom ćete raditi", ¨˙- ¨˙> I još nešto - obavezno na ekran gurni DUGUJE, POTRAčUJE i SALDO, ¨˙> najbolje u dnu BROWSE prozora (da ne bude zabune, to su SUM ¨˙> vrednosti). Tako se olakšava vizuelna kontrola. Dabome, sve to i još puno lipi' stvari... Tipična je situacija ako su radili na programu koji im je samo prikazivao tekući stav i kumule za dug. i pot. Kada vide moje ekranče sa browserom, uslede primedbe da je 'maska pretrpana' i da im se više sviđao 'prazan ekran'. Posle tri dana reakcije su obično upravo suprotne. ¨˙> Special tip: po unosu naloga ne dozvoliti izlazak (ili ga dozvoliti ¨˙> opciono) ako je nalog u neravnoteži (SALDO<>0). U svakom slučaju - ¨˙> stavi knjigovođi do znanja da's može zeznuti propusti li tekući ¨˙> nalog u bazu. I ovo mora. U svakoj prilici radim ovakve kontrole. Malo produžava posao, ali me posle manje boli glava.
fox.116 omega,
Da li može da se izbegne da pritisak na ESC terminiše READ?
fox.117 oki.,
:: Da li može da se izbegne da pritisak na ESC terminiše READ? Što da ne, pre READ staviš ON KEY LABEL Esc KEYBOARD "{neki drugi}" ili do neka_procedura ili wait window "Ne može ESC !" :)
fox.118 vgenije,
HI Mom ortaku je potrebna jednoa verzija fox-a za windows.Pa ako ima neka dobra dusa koja je slobodna da mi to prekopira naka se javne na mail hvala unapred i izvinjavam se zbog poruke koja manje vise i nije u skladu sa temom
fox.119 ndragan,
/ Dal' je tvoj projektant nekad obučavao magacionere? Tuga božija. Da citiram dr Stjepana Hana: "Sad se svi oni, naravno, boje, jer misle da, kad dođu računari, više neće moći da kradu. I neće, bar ne oni, nego će moći neki drugi, koji to budu umeli." To je osnovni razlog otpora. Inače, imali smo iskustva i sa neverovatno nepismenim osobljem, ama se sve to naučilo redu kad ih je šef pritegao, čak su naučili, verovao ili ne, da rasporede navodnike u nazivima firmi, a većinom su do kraja naučili čak i da sami odrede gde dođu velika slova. Pošto smo stalno nešto doterivali, navikli smo ih na večite promene, i mogu da kažem da su ukupno dva-tri puta tražili da vratimo nešto iz prethodne verzije. Opet, to znači da su nove verzije pravljene prema njihovim potrebama (ponekad i prema željama).
fox.120 ndragan,
/ ostavljaju mrtvim-ladnim, a nešto što sam ubacio za mož' nekad da / zatreba... ...zato ja ubacujem pre svega ono što im treba :)
fox.121 ndragan,
/ da prođe celu masku udaranjem 30 puta na enter da bi došao do / "dugmeta" za odustajanje, nemoj mi reći da je to brže od kliktanja / mišem na Cancel dugme), Svi (svi, svi :) moji korisnici u prvih pola sata nauče gde je ESC, a u prvih nedelju dana naviknu da ga nabodu žmurećki. Dugmići? Kakvi dugmići?
fox.122 gcurcic,
¨˙> čak su naučili, verovao ili ne, da rasporede navodnike u nazivima ¨˙> firmi, Auuu, krećemo se u različitim krugovima :) To plješte apostrofe (i leve i desne), tarabe, zvezdice, procente, kose crte, po afinitetima, a desi se da nabodu i pokoji navodnik ;) Uf, što južnije to tužnije!
fox.123 gcurcic,
¨˙> ...zato ja ubacujem pre svega ono što im treba :) Pa i ja, samo što oni definišu potrebe tek kada im plasiraš prvu verziju. Ima veze i u nastupu: ako im se pojaviš i kažeš 'ovo radi ovako tu-i-tu, ovo mora ovako' oni neće mnogo da namišljaju. A ako im razvučeš žvaku 'pa hm kupac je uvek u pravu - o'ma počnu da bistre politiku'.
fox.124 madamov,
> Dugmići? Kakvi dugmići? Oni za koje je ESC tastaturna skraćenica. B)
fox.125 ndragan,
/ da li nekako može da se izvede u FOX-u nešto kao IDLETIME HOOK? To bi Ne, bar ne zaključno sa 2.6 (u 3.0 još nisam našao, ali postoji objekat tipa tajmer koji bi mogao da se aktivira makar u sakrivenom prozoru ili kao sakriven objekat, pa bi to radilo posao). Ja sam stvar rešio onoliko koliko mi je trebala: u READ naredbama (ima ih ukupno tri do pet u bilo kojoj mojoj aplikaciji) stoji TIMEOUT, na 5 do 20 minuta (kako gde), sa reakcijom na isteklo vreme - zatvara se maska i vraća se u prethodni nivo. Druga situacija u kojoj mi se aplikacije često nalaze su rutine za postepeno približavanje (ztv incremental search) koje koristim za sve i svašta (što rekao kolega, ne znam da li je catal6.prg programerska okolina ili ceo jezik), tamo ima jedan inkey(180). Posle tri minuta reaguje kao da je pritisnut ESC i izlazi. Ostaje problem što meniji nemaju vremensko ograničenje, pre svega zato što se foks još od prve Pro verzije polako približava prozorskoj filozofiji (zato je sistemski meni takav kakav je), a gde ste videli aplikaciju za prozore koja reaguje na to što već pola sata niste aktivirali ništa u meniju? Skrin šejver nije reakcija aplikacije, nego šire okoline. Najbliže "rutini koja okida redovno" što sam napravio je "rutina koja okida dovoljno često", a štos je u tome da njeno ime predajem svom drajveru menija (ne generišem programe za menije - čitam ih direktno iz baze u memoriju) koji je poziva svaki put kad se uđe ili izađe iz neke tačke menija. Što se tiče tog nedostatka reakcije na časovnik u samom foksu, to je ušlo u neki papir sa spiskom bagova i primedbi, što sam prosledio do čoveka u Majkrosoftu, ali mislim da od toga ionako neće biti ništa - FP za DOS će živeti koliko i DOS. Nema daljeg razvoja, moraćemo živeti sa ovom verzijom do daljnjeg ili preći na VFP 3.0 itd. Možda će neka firma otkupiti pravo na dalji razvoj pod dosom, ali mi se čini da i Japanci kubure sa nestašicom kamikaza.
fox.126 ndragan,
/ Dodje i MS Visual FoxPro na 13 disketa. Proba li neko ovo ???? Probao, ama od posla ne postižem da ozbiljnije pročačkam. Nemam pojma koliko disketa, iskopirali smo CD na servera pa odande instaliramo, a instalacija je tako glatka da sam klisno kod sekretarice na kafu dok bude gotovo. Jedino (isti zajeb ko i fpw2.6), treba isključiti skrin šejver, jer instal pauzira dok on žvrlja. Imam beta verziju, zasad su jedini ozbiljni primećeni bagovi na dokumentatoru (na svakoj rutini je ispisao u zaglavlju da poziva sve ostale rutine iz fajla), i opet ono što me dovelo do ludila sa fpw2.6, ne mogu da promenim font u (dbf-style) help prozoru. Menjao sam sve moguće fontove koje W95 dozvoljava da se promene, a ovo je izgleda font za svece (potpisi ispod ikona), tako da sam jedva pročitao neke novosti, sve buljeći u monitor do ujutro. Elem: - READ je mrtav, emulira se. - BROWSE je mrtav, emulira se. - meniji su ostali kakvi su bili - tj, kako u ostalim prozorima, tako i u foksu - API funkcije su redom nabrojane u helpu, ko voli nek izvoli - sve je skroz objektno, sa sve nasleđivanjem, potklasiranjem - uvedene su zbirne baze (.DBC - database containers), u kojima stoje kompletne okoline - koje su baze otvorene (i gde, pošto je moguće praviti klijent aplikacije koje pišu/čitaju sa SQL servera), sa kojim relacijama, koja su pravila koja treba da potvrde upis / ispravku / brisanje. - uvedeni su imenovani pogledi (view) gde se pamte neke stvari iz SQL pretraga, SQL transakcija itd. - baferisanje baza (optimističko i pesimističko), sa transakcionom obradom (naredbe Begin Transaction & End Tr.) žesto će trebati funkcija TableUpdate() i TableRevert() - smeštene procedure - .scx sadrži samo snipete i to za delove koji se razlikuju od koda u roditeljskoj klasi. Kompajlirane verzije su takođe unutra. Nema generatora - maska trči direktno iz .scx, otvarajući po potrebi .vcx (class libraries) uzvodno, dok ne dođe do samog foksa. Aj dosta za ovaj put.
fox.127 ndragan,
/ Da li može da se izbegne da pritisak na ESC terminiše READ? Moglo bi sa Read Save, pa ako je ReadKey() bio 12 (valjda, proveri), onda ponovo Read Save. Ne zaboravi da uradiš Clear Gets na kraju, inače getovi ostaju zapamćeni za sledeći Read.
fox.128 sbrk,
Hteo sam da pri kreiranju menija (FP 2.6 DOS) u Menu Builderu zadam i MESSAGE - onu centriranu liniju u poslednjoj liniji ekrana i vidim da takve opcije (zadavanje MESSAGE klauzule) nema nigde ?! Ima Skip for, # Bar, Hot Key itd. a MESSAGE - nema. Znači trebalo bi generisati MPR pa onda ručno ubacivati. A šta kad se meni promeni? Opet ići u MPR? Da nisam ja nešto propustio? Možda MESSAGE ipak negde može da se zada?
fox.129 mishas,
Zdravo, ja dosta koristim FOX-ov sistemski meni tako sto ga prevedem na srpski. To lepo radi ali ne znam kako to da uradim za BROWSE MENU. Nigde nemam nazive bar-ova i td. Ocekivao sam to da nadje u HELP-u itd ali nista! Ima li neko id3ejeju?
fox.130 max.headroom,
Pozdrav svima. 'Vako... 1. Ima li neko ideju kako napraviti brz parser .INI fajlova, nešto u stilu Windows-ovih kreacija, a koji će raditi po principu: ŠtemaĆ var1=vrednost1 var2=vrednost2 ... 2. Da li ste zainteresovani za, nazovi optimajzer, Fox-ovog koda (da budem precizniji, .PRG fajlova)? Šta bi tu sve moglo da prođe?... Hmmh, nešto poput parsera linije (nije tako teško izvesti), na šta se nabudži par promenljivih koje prate IF...ENDIF i ostale sitne uslove, potom promenljive koje čuvaju podatke o petljama, zatim jedan SQL-da-sve-izgleda-lijepo, i, kao poslastica, vremenska upoređivanja vašeg i novokreiranog koda. :) Al' bi to bilo lepo...
fox.131 bambi,
Znam da je ovo najstarije i verovatno najdosadnije pitanje za iskusne korisnike fox-a ,ali moram da ga postavim. Mozete li mi preporuciti literaturu za Fox for Win na nasem i eng. jeziku. Hvala
fox.132 bambi,
A, da zaboravih  da dodam ,po mogucstvu FOX 2.6 for win.
fox.133 gcurcic,
¨> Mozete li mi preporuciti literaturu za Fox for Win na nasem i eng. jeziku. Dovoljna je ona koja se dobija u paketu. Teška je otprilike kao giter blok! Par 'iljada strana, pis of kejk ;) A i štampana je na nekom anti-moljac papiru čiji me opori miris podseća na FLIT ili FONAR insekticide! žitava mi polica smrdi na Fox! Mani se literature, u help fajlu imaš sve što ti treba.
fox.134 smarkov,
> ŠtemaĆ > var1=vrednost1 > var2=vrednost2 Valjda je zzivotic svojevremeno u Računarima opisao skeleton takvog sistema u Računarima - u formi C-a. Ako se iz Fox-a zovu C funkcije - eto rešenja.
fox.135 max.headroom,
> u Računarima - u formi C-a. Ako se iz Fox-a zovu C > funkcije - eto rešenja. Pa, i nije baš neko rešenje :) U svakom slučaju, hvala za tip - probaću da nađem tekst i ev. ga prevedem u Fox formu. BTW, Kroz Fox nije moguće (posebno onu DOS ver.) terati C source.
fox.136 max.headroom,
> Mozete li mi preporuciti literaturu za Fox for Win na > nasem i eng. jeziku. Možda bi ti pomoglo da pročitaš neke tekstove koje sam svojevremeno ostavio u temi baze.podataka - inspirisani su knjigama izvesnog George F. Goley-a, čija su mi se izlaganja učinila manje suvoparnim i nekako efektnijim u odnosu na konkurentna izdanja. U slučaju da neznaš kako da počneš, ili rešiš neki od problema, slobodno ostavi poruku - po- stoje ljudi koji će ti rado pomoći.
fox.137 mishas,
Niko!? Pa mozda nisam bio dovoljno jasan? Pokusacu blize da objasnim. Kada zelim da u svoju aplikaciju pozovem neke Foxove rutine napr. kalkulator ja u meni stavim:BAR # _MST_CALCU ili za HELP stavim BAR # _mst_MST_HELP ili kad zelim da omogucim pomeranje prozora ja u meni stavim: BAR # _MWL_MOVE itd. E sad kako da primeni isto i na rutine is BROWSE menija? Npr. kako da omogucim prelaz izBRiz BROWSE u CHANGE mode i sl. ali tako da ponudip programski kontrolisan BROWSE meni a ne da korisniku dam engleske nazive?
fox.138 mishas,
Evo me opet nagovorili su me da jednu DOS aplikaciju prenesem na Mac-a, a sada posto je korisnik zadovoljan radi dalje prodaje vratio sam je u Fox4win sve je u redu ali mi nesto ne dostaje K. Naime na MACu sam sva GET polja KKKKKKKKKKKKpolja postaviou bilderu tako da se vide u tri dimenzije. Na MACu kad definises polje on te lepo pita 2dim ili 3dim. Transporter mi je sva takva polja preveo u 2dim. Nisam se uzbudio i usao sam u bilder u Fox4win da promenim u generatoru, ali gle cuda takve opcije nema u Foxu za windows. Da li je moguce da to ne mogu da setujem automatski vec moram posebno da "crtam" polje po polje. Znate ono box pa gore i levo belo dole i desno tamno i sl!? Izvinjavam se zbog "rukopisa" - ja sam novi ovde - pa se nisam jos svikao. Uzgred zna li neko taj stari vic?
fox.139 ndragan,
/ Da nisam ja nešto propustio? Možda MESSAGE ipak negde može da se zada? More, uvati GenMenu i dodaj opciju, tamo gde generiše "Prompt <trtmrt>" dodaj i jedno if !empty(message) \\; \ Message "<message>" endif Za unos poruke se snađi iz brauza ili tako nečeg.
fox.140 ndragan,
/ bar-ova i td. Ocekivao sam to da nadje u HELP-u itd ali nista! Ima li / neko id3ejeju? Id1ejeja je da pogledaš onu funkciju (sys(2013)) koja daje nazive svih opcija u sistemskom meniju i to snimiš u nešto _za vreme brauza_, najbolje iz neke globalne When funkcije. Tamo bi trebalo (proveri) da se nalaze i trenutne opcije za Brauz meni, pa možeš da pohvataš i njihova imena. Onda primeniš postupak kao i dosad, s tim da bi, ukoliko to ne radiš heks editorom nego u trku, mogao da napišeš standardnu funkciju koja bi menjala promptove jednom na početku brauza. BTW, stvarno, kako to radiš? Pajz šta kaže u helpu: <system option name> ... For example, to provide access to the FoxPro Calendar/Diary from a popup named Other, you could create the option with the following command: DEFINE BAR _MST_DIARY OF OTHER PROMPT 'Enter Appointments' Whenever this option is chosen from the popup, the Calendar/Diary is opened. Not all system menu popups are available for user-defined menus. Options on conditional menu pads (Browse, Screen, Project, etc.) are not available. For a list of system menu names, use SYS(2013).
fox.141 ndragan,
A propao čitanja ini fajlova, probao sam na brzinu da napravim nešto: / ŠtemaĆ _sele=sele() Create Cursor Trtmrt (txt m) Appe Blank appe memo txt from "koji_ono.ini" oldmm=set("memo") set memo to 254 ml=atcline("[tema]",txt) if ml>0 _mline=ml+2 && malo da odmaknemo red=mline(txt,1,_mline) do while ltrim(red)#"[" and _mline<len(txt) je=at("=",red) if je>0 * eventualno bi legla Public deklaracija za promenljivu... * recimo Public (left(red,je-1)) * a mogla bi pre toga proba da li promenljiva već postoji...; o tom potom, zasad da joj turimo vrednost: store eval(subs(red,je+1)) to (left(red,je-1)) endif red=mline(txt,1,_mline) endd endif set memo to oldmm use sele (_sele) Ovo sam napisao onako, iz glave, ama mislim da bi za pola sata moralo da proradi. Rutina za pisanje .ini fajlova, međutim... pa, morala bi da ima bar ove parametre: ime fajla, ime sekcije, ime promenljive, vrednost. Xm, moraću ovo i da isprobam. (pet minuta kasnije:) Poslao sam kroz mrežu kolegi na drugu mašinu - kompajlira se bez greške (izuzev naredbe "ovo sam napisao onako...", javlja grešku u sintaksi - on meni da kaže da ne znam srpski, nanu li mu naninu), a problem je u samoj sadržini: .ini fajl treba da ima format naredbe za dodeljivanje, tj da izgleda ovako: [sekcija] cPromenljiva1="nekakav string" nPromenljiva2=87897803254.32 lPromenljiva3=.f. dPromenljiva4={01.01.95} ...samo zato da se funkcija Eval() ne zabunjuje. Probali smo sa numerikom, radi. Probali smo sa system.ini, zbunjuju ga tačke levo od =, kaže "Alias SYSTEM not found" (našao je system.drv=). žudno, nije javio "must be a memory variable" kao što javlja kad se to uradi iz komandnog prozora. Uzgred, analizu linije bi trebalo obogatiti i preskakanjem komentara. / 2. Da li ste zainteresovani za, nazovi optimajzer, Fox-ovog koda (da / budem precizniji, .PRG fajlova)? Šta bi tu sve moglo da prođe?... Naprimer, da nađe makro zamene i predloži imenske izraze gde ima smisla (gomila stvari u programima iz ranijih verzija nije radila bez & operatora, a od 2.0 nadalje više ne mora), da nađe stringove koji se pojavljuju više puta u programu i uradi #define i ispozamenjuje da nađe "do while !eof() ... skip ... enddo" i zameni sa "scan ... endscan" da nađe "select druga ... seek... if found()... endif... select prva" i zameni sa "if seek(...,'druga') ... endif" da nađe "select baza ... append blank ... replace ovo with ono..." i ubaci "insert into baza (<polja>) value (vrednosti)" da zameni "do while i<20 ... i=i+1 ... enddo" sa "For i=1 to 20... EndFor" Ovo su stvari koje sam često morao da čačkam na starim programima, a mislim da bi ih valjalo automatizovati.
fox.142 nbatocanin,
>> u Računarima - u formi C-a. Ako se iz Fox-a zovu C >> funkcije - eto rešenja. > > Pa, i nije baš neko rešenje :) U svakom slučaju, > hvala za tip - probaću da nađem tekst i ev. ga prevedem > u Fox formu. Pisao sam i ja za Clipper. Možda vam bude lakše da prevedete u Fox :)
fox.143 cnenad,
Da li neko radi sa FoxPRO 4 Win 2.6 & DK ? Interesuje me kako da počnem sa pravljenjem PRAVE Windows aplikacije (dakle, prozori, button, i sve ostalo) i da to povežem. Do sad sam provalio foru za FILE NEW MEN/NEW/MENU i tu kreiram menije koje mogu da probam sa TRY IT i to je sve.
fox.144 cnenad,
=> Interesuje me kako da počnem sa pravljenjem PRAVE Windows aplikacije => (dakle, prozori, button, i sve ostalo) i da to povežem. Do sad sam Donekle sam provalio da treba ići preko PROJECT-a tj. sve što se pravi strpati u PROJECT, a onda pustiti FOKS da promeša, zabiberi i to je to. Ono što mi nikako ne ide u glavu je princip po kojem sve to radi. Ako bih se zadržao na sintaksi xBase jezika (kao i Clipper) i išao po principu: PROCEDURE glavna * tralala, pišem ja kod RETURN sigurno daleko neću stići ; međutim FOX me iznenađuje brdom ekstenzija MPR, SCX, MNX i ostale da ih sad sve ne nabrajam, dok je pod Clipper-om bilo PRG, kompajliraj, linkuj i vozi. Iznenađuje jer ne znam šta sve treba strpati u PROJECT. A većinu onoga što strpam kad otvorim vidim SORS u čijem zaglavlju nema PROCEDURE ili nešto slično pa me sve to zbunjuje. S toga mi trebaju što preciznije smernice najbitnijih stvari u FOX-u... Kad smo već kod MENIJA, napravim ja iz zezanja jedan u kojem stoji DATOTEKE i POMOĆ. Pod pomoć definišem KOMANDU ? 'ovo je probni program' a pod DATOTEKE opciju KRAJ i u njoj RETURN / CANCEL Kada aktiviram program i odem na KRAJ ne dogodi se ništa tj. ne vrati mi FOX-ove menije...samo na ekranu ostane COMMAND window i to je to. Onda moram napolje iz FOX-a pa ponovno učitavanje FOX-a... :((( Naravno, dokumentacije za sad nemam :(((( i nemojte mi preporučivati HELP (koji jeste dobar i ima puno informacija, ali samo za komande i funkcije) a nikako smernice kako POžETI od nečeg.
fox.145 sbrk,
Iz onog teksta koji je ovde ostavio MDrazic vidim da je za najbolju biblioteku za FoxPro (Add-On) proglašen FIRE FOX. Da li je neko video ovo čudo, kako izgleda, čemu služi (đe izlazi, ša radi), gde može da se nabavi... Možda je neko čuo za neki CD Rom iz Singapura na kome se nalazi ovo?
fox.146 sbrk,
>> => Interesuje me kako da počnem sa pravljenjem PRAVE Windows aplikacije >> => (dakle, prozori, button, i sve ostalo) i da to povežem. Do sad sam >> >> Donekle sam provalio da treba ići preko PROJECT-a tj. sve što se pravi >> strpati u PROJECT, a onda pustiti FOKS da promeša, zabiberi i to je to. Ja mogu da ti preporučim ono šta sam ja uradio: skini SVE poruke iz SVIH PC.UTIL i PC.PROG, teme baze.podataka i fox. Uđi editorom, obriši šum i pročitaj SVE bar dva puta (ja sam tri puta :) Srećno! :)
fox.147 cnenad,
=> skini SVE poruke iz SVIH PC.UTIL i PC.PROG, teme baze.podataka i fox. Uđi => editorom, obriši šum i pročitaj SVE bar dva puta (ja sam tri puta :) HVALA ! Zaista se nisam mogao setiti ovako dobrog i pametnog rešenja ;) BTW, PC.Util nema temu BP već je u konf. USER ;) Sledeći put kad budeš hteo nekom da pomogneš uzmi pištolj pa ga ubi a nemoj ga mučiti da se ko 'kuče' raduje kad vidi da ima poruka u temi FOX, pošto vidim iz RES-a da ti je to zanimanje. Naravno, od mene nećeš dobiti ni filera ;) jer sam švorc :(
fox.148 ndragan,
/ stavim:BAR # _MST_CALCU ili za HELP stavim BAR # _mst_MST_HELP ili kad / zelim da Već sam ti objasnio zašto neće ići, ne da foks. Međutim, niko te ne sprečava da napraviš svoju granu menija (ako može još da se napravi da se brauz meni ne vidi, al' sumnjam) u kojoj ćeš putem tastaturnih makroa (Keyb "{alt+b}c" za "Change", naprimer) aktivirati stvari iz brauz grane. Jeste budževina, al' na tako neki štos sam uspeo da aktiviram Program/Compile iz editora pozvanog iz programa (Compile opcija je po difoltu neaktivna dok neki program trči).
fox.149 ndragan,
/ u generatoru, ali gle cuda takve opcije nema u Foxu za windows. Da li / je moguce Ima u Foksu 3.0 ;), čak četiri varijante za izgled polja - ravno sa i bez okvira, ispupčeno i udubljeno. U FPW2.6 smo, blago meni, prilikom generisanja maski ubacili opciju da izgeneriše čak četiri naredbe za crtanje linije (oko polja) da bismo postigli taj efekat. / Uzgred zna li neko taj stari vic? Svi, svi, svi. To je ovde deo folklora.
fox.151 willow,
Ponekad mi se desavaju nejasne stvari sa Fox-om (2.6 za Dos ).K). Uzmem lepo kreiram XYZ.DBF , prikacim mu TAG 'ZYX' i to je to. Zatvorim , otvorim , dam "DISP STAT" , sve je u redu ( XYZ.CDX prisutan ). JA : USE XYZ ORDER ZYX , ili USE XYZ , SET ORDER TO ZYX i i onda : = seek( "Willow" ) . FOX : Database not ordered. HHH------------------------------------------------------------------------- JA : CLOS ALL , USE XYZ , DISP STAT , kad ono nema mi XYZ.CDX-a. JA K: INDEX ON polje TAG ZYX , KKK. FOX : Kao , index tag vec postoji , pa da li da ga overwrite. Bilo da kazem Yes ili No , situacija je ista posle zatvaranja i otvaranja. Ovo mi se desava sa fajlovima u koje vrsim APPE FROM xxx TYPE SDF. Ajde , ljudi , pomozite malo.
fox.152 sbrk,
>> => skini SVE poruke iz SVIH PC.UTIL i PC.PROG, teme baze.podataka i fox. Uđ >> => editorom, obriši šum i pročitaj SVE bar dva puta (ja sam tri puta :) >> >> HVALA ! Zaista se nisam mogao setiti ovako dobrog i pametnog rešenja ;) Eto ti, ne voli narod da čita pa to ti je. Pa dobro, ako nećeš da čitaš ono što je džabe (i dobro i pametno), evo ti drugi predlog: otiđi u CET i naruči knjigu Creating FoxPro Applications od Golija, mislim da je Ričard, btw, knjiga košta 105 DEM. Pogrešiti nećeš jer je knjiga fenomenalna a posle nje ćeš verovatno izbaciti iz upotrebe izraze: donekle, iz zezanja sam napisao program, tralala pišem ja program itd. NFH.
fox.153 cnenad,
=> Eto ti, ne voli narod da čita pa to ti je. Pazi, sve poruke iz tema koje si naveo imam odavno u SDW-u i tamo nisam našao ono što mi treba i zbog čega sam postavio pitanje... => fenomenalna a posle nje ćeš verovatno izbaciti iz upotrebe izraze: => donekle, iz zezanja sam napisao program, tralala pišem ja program itd. Zar očekuješ da ODMAH čim sam uzeo neki nov razvojni alat napišem iz prve PROGRAM ? BTW, mogao bi da prestaneš da trošiš svoju energiju na ova moja bezvezna pitanja BEZVEZNIM odgovorima (za info o knjizi ne mislim da je bezvezan već sasvim koristan, tnx) i kad već ne želiš (ili ne znaš) da mi odgovoriš na postavljeno pitanje i nemoj... Pošto je već nekoliko dana bilo dosta zezanja sa FOX-om, interesuje me zašto kada se napravi neki SCREEN i pokrene u njemu nema MAXIMIZE dugmeta i u Control dugmetu opcije CLOSE ? I molio bih još jednom za odgovor u vezi menija koji napravih i kad zatvorim ne dobijam nazad meni od FOX-a...
fox.154 ndragan,
/ JA : USE XYZ ORDER ZYX , ili USE XYZ , SET ORDER TO ZYX Da nemaš slučajno polje koje se zove Zyx? Probaj sa Set Orde to 1 (moglo bi da upali), ili "set orde to tag zyx", za svaki slučaj. / Ovo mi se desava sa fajlovima u koje vrsim APPE FROM xxx TYPE SDF. Bilo bi dobro da okačiš primer. Inače, preporučuje se da se indeksi prave tek nakon masovnog naseljavanja baze (gde spada i Appe... from). Odnosno, sećam se da sam imao neki sličan problem jednom, al' se ne sećam kako sam ga rešio. Moguće je da je baza na jednom direktoriju a .cdx na drugom itd. Problem mi se nije vraćao, tako da u stvari ne znam u čemu je.
fox.155 ndragan,
/ zašto kada se napravi neki SCREEN i pokrene u njemu nema MAXIMIZE / dugmeta i u Control dugmetu opcije CLOSE ? To bi trebalo da su opcije koje se čuvaju uz .scx, ali ne u njemu samom, nego u .pjx, dakle kad napraviš projekat. GenScrn u stvari i traži da imaš projekat, a ako nemaš, on napravi prazan onako iz glave, i uredno ga obriše kad završi, tako da sve opcije koje si izabrao on lepo zaboravi. U stvari, ni ne znam baš da li GenScrn uopšte ima te opcije, koristio sam ga jednom pre skoro godinu dana da mi napravi par stvari koje sam posle isekao uzduž i popreko... ali Define Window naredba ih ima. Ili negde sam napiši proceduru za definisanje prozora i ostali setap maske (mislim da i imaš SetUp snippet, kao i CleanUp), ili dohvati GenScrn i dodaj mu tih par opcija da ti ih ubuduće generiše. / I molio bih još jednom za odgovor u vezi menija koji napravih i kad / zatvorim ne dobijam nazad meni od FOX-a... U CleanUp proceduri menija treba da ti stoji Set Sysmenu Auto && ovo još i nije obavezno, ali ostalo jeste: Set Sysmenu On Set Sysmenu to Default
fox.156 cnenad,
=> To bi trebalo da su opcije koje se čuvaju uz .scx, ali ne u njemu samom, => nego u .pjx, dakle kad napraviš projekat. GenScrn u stvari i traži da Videh da ako se koristi Screen Wizard on odmah radi izgled po datoj mu bazi podataka. Za slučaj probe sam koristio opciju NEW / SCREEN pa sam se zbog toga začudio. Dakle tek kad sam napravio Screen ubacio sam ga u projekat kao jednu jedinu stavku i kompajlirao, pokrenuo i začudio. => negde sam napiši proceduru za definisanje prozora i ostali setap maske Ukratko, pročitao sam tvoje mišljenje u temi Baze.podataka o FPW-u ali me ovde interesuje da li pod njim raditi kao i do sada tj. sve pisati i ne koristiti njegove (nedovršene) vizuelne osobine ili ih koristiti kombinovano, to je ono što me zbunjuje ? => U CleanUp proceduri menija treba da ti stoji žini mi se da nije ni dolazilo do pozivanja te procedura koja je vezana za opciju menija kada se izabere. Probaću i javiti.
fox.157 willow,
Znas , nikada do sada nisam imao problema ako kreiram Tag koji ima isti naziv kao neko polje. Meni je cudno ustvari to sto kada otvorim .DBF i dam DISP STAT nema .CDX fajla. APPE vrsim iz OGROMNIH!! .SEQ fajlova ( 1-60 MB ). Evo primera : ============================== USE XYZ APPE FROM OGROMAN.SEQ TYPE SDF CLOS ALL ============================== OGROMAN.SEQ se APPEND-uje O.K. Posle nekog vremena : USE XYZ SET ORDER TO ZYX ( ili 1 ) IF ( seek( "ndragan" ) ) && ... radi nesto ENDIF Onda Fox kaze : Database not ordered. ============================== U ocajanju , probao sam : USE XYZ INDEX XYZ Sa DISP STAT vidi se da Fox prijavi 2 puta .CDX . ( 1 - Kao structural index fajl , 2 - Kao obican CDX fajl ),i onda ide SET ORDER TO ZYX i seek bez problema. Znaci ovo kao resi problem.Medjutim ovakav nacin otvaranja .CDX fajla, koji bi trebao da se otvori zajedno sa .DBF-om , mi se uopste ne svidja.
fox.158 willow,
Za one koji rade u Fox-u 2.6 za DOS i pritom hoce da se umreze preko NetWare-Lite v 1.1. Ne koristite Fox funkciju SYS( 0 ) koja vraca Id i Naziv radne stanice, ako zelite da ustanovite sa koje stanice je pokrenuta aplikacija, jer se te vrednosti mogu podesiti preko DOS servisa 05Eh fn. 01h .
fox.159 prado,
Pocetnik sam o fox-u. Napravio sam aplikaciju ( .app) koja radi pod fox-om.Na koji nacin da napravim exe verziju koja bi radila sama pod win-om .Imam instalisan i distribution kit.
fox.161 willow,
Molim dobre ljude da me upute ( posto sam ja novi na Sezamu ), gde mogu da nadjem format .CDX fajla. Takodje , zanima me ima li smisla proucavati .FXP fajl. Ja sam tu nesto gledo, vidim u njemu pobrojane simbole iz mog .PRG-a, pun naziv .PRG i .FXP-a, ali ostalo mi nije nista jasno. Gledam nesto i .FRX medjutim tu tek nista da provalim. Ako znate nesto o svemu tome , molim vas , recite to. Pozdrav from Willow Valley.
fox.162 nesan,
Da li je neko imao prilike da radi na 3-jci kombinaciju izmedju lokalne baze, eksternih ( free tables) iz starog fox-a ( 2.5 ) i neku drugu kombinaciju ( npr. ORACLE ili sl. ) u okviru istog QUERY-ja. Takodjer da li je imao problema da mu se prilikom dodavanja tabele u query-ja, ponekad izgube podaci, tj. iako postoje u projektu, da se ne omogucava da se pozovu u samom izboru tabele ( polje project- database), jer te free tables vrlo cesto nestanu i ne pojavljuju se iako se nalaze i vidljive su u masci projekat. Da li je neko slao query na graph i da li je imao nekuh problema. Ja cesto dobijem na dve razlicite masine ( ista baza i sl ) ali na jednog 386 i win 95, a na drugoj 486 i win 3.11 razlicite rezultate u grafickom smislu ili uopste ne prikazuje graphik, jednostavno zaglavi isl. nesa
fox.163 max.headroom,
> USE XYZ > APPE FROM OGROMAN.SEQ TYPE SDF > CLOS ALL Nisam siguran da ce da upali, ali probaj sa: USE xyz ORDER abc APPEND ..... CLOSE ALL
fox.164 max.headroom,
Nešto se ovih dana zlopatim sa Delphi-jem, pa sam ustanovio da ne podržava .CDX (Fox-alike) indeksne zapise. Mislim, znam da Borland prosto voli da udari po ušima, ali je ovo bas bez veze. Zna li ko kako udomiti omiljene mi .CDX-e u Delphi projekat?
fox.165 ndragan,
/ IF ( seek( "ndragan" ) ) Otkud ja kod tebe :) / ( 1 - Kao structural index fajl , 2 - Kao obican CDX fajl ),i onda ide Pogledaj 28. bajt zaglavlja baze, treba da ima 1 upisano ako postoji .cdx. Opet, moguće je da ga skenja upravo masovan priliv podataka. Obriši .cdx (delete tag all) pre Append... Sdf, pa ga kreiraj nakon toga. Biće kompaktniji i pouzdaniji, a i cela priča bi morala daleko brže da radi. Naravno, use xyz excl.
fox.166 ndragan,
/ koristiti njegove (nedovršene) vizuelne osobine ili ih koristiti / kombinovano, to je ono što me zbunjuje ? Ono staro se emulira (ima neki bajt u novom .scx gde veli da je način rada 0,1,2 ili 3, gde su 0 i 1 emulacije Read naredbe sa ili bez modalnog rada). U načelu, preporučuje se da se nove stvari rade po novom, a stare mogu da ostanu kako jesu dok ne pređeš na nove. žini mi se, međutim, da je konverzija iz starih u nove ekrane malo zabunjena, jer negde veli da ako je .scx jednom obeležen kao Read-type (modalan ili ne) onda ne može da se pređe u novi, ili bar vrač to ne ume (form wiz, tj). Eventualno da se napravi novi .scx pa da se objekat po objekat prebaci iz starog u novi. Za stare ekrane čak izgeneriše i .spr, ali samo poradi dokumentacije. Nešto baš ne preporučuje da se potera.
fox.167 ndragan,
/ Ne koristite Fox funkciju SYS( 0 ) koja vraca Id i Naziv radne / stanice, Vidi poruku u pc.prog:mreže, treba podesiti ime mašine u login skriptu.
fox.168 ndragan,
/ koji nacin da napravim exe verziju koja bi radila sama pod win-om / .Imam Build exe <ime>, ali preporučuju da ide u poseban direktorij, gde će se naći i svi ostali fajlovi potrebni za trčanje aplikacije (.ini, foxpro.int, eventualni .dll, fontovi i slično). Onda pokreneš nekog tamo čarobnjaka (uradio sam to samo jednom, ne sećam se kako beše, al' neki distribution kit wizard), i on ti ispod toga napravi poddirektorije sa sadržajima instalacionih disketa. Tamo će se naći i rantajm, pošto fpw2.6 ne pravi samostalni .exe, nego praktično sastavi neki mali program (koji učitava rantajm) sa .app fajlom. Razlika između .app i .exe je minimalna.
fox.169 ndragan,
/ Gledam nesto i .FRX medjutim tu tek nista da provalim. Razvijačke gajde (FPW2.5 Developer's guide; za 2.6 ide ista knjiga; u FPD2.5 i 2.6 nema tog dela), pred kraj knjige su sve stvari koje te zanimaju, osim formata .fxp fajla. žitao sam u Data Based Advisoru da neka firma reklamira dekompajler za foks pro... živi bili pa videli, ionako su sve verzije foksa međusobno nekompatibilne po pitanju formata .fxp fajla. Još reklamiraju da raščitava i kriptovane...
fox.170 max.headroom,
Sve mi se cini da ovaj Delphi i nije tako losa alatka za rad sa relacionim bazama podataka - sve sto su do sada ponudili za Win, a sto radi sa bazama, nije ni priblizno interesantno ovom paketu. Radi brzo, konacni .EXE je mali, potpuno je O-O, ima ugradjen transaction-tracking sys. Poseduje Database Desktop kojim se mogu kreirati rel. baze raznoraznih formata (Fox-ov je preskocen - nikada im necu zaboraviti), i uopste, dobro osmisljen DB mngmnt sistem. Ali... :) Kako koristiti sve zanimljive potencijale, pa da podseca na neki od alata na koji smo navikli (Fox, preciznije)? Ja sam u svom kopanju dosao do jedne interesantne zackoljice: ekvivalenta ON ERROR rutini. Hmh, da ne bih dalje gusio, jerbo neznam koliko vas ima koji nikada necete oprostiti Microsoftu onakav fuseraj sa Fox-om vs. Access, nastavicu pisanije po PC.PROG:database temi. A ima li zainteresovanih?
fox.171 djelovic,
> A ima li zainteresovanih? Naravno. Kakav je to problem sa ekvivalentom (?) ON ERROR naredbe?
fox.172 willow,
>> Vidi poruku u pc.prog:mreze, treba podesiti ime masine u login skriptu. Zar to ( login skript ) postoji za NWLite ?. Nego , znas sta je tu. Pravim tu aplikaciju ( u Fox-u, naravno :) ) i treba mi nesto da utvrdim sa koje je stanice podignuta aplikacija.Od serijskog broja Diska sam digo ruke jer okolne stanice nece imati diskove vec ce se dizati sa diskete. I tako, rece mi neko da za to moje utvrdjivanje upotrebim SYS( 0 ). Ja probao, i sve je O.K., i bio sam dosta zadovoljan svim tim razvojem dogadjaja.:)) Znaci , ulogujem se kao Willow, i SYS( 0 ) vrati Willow i #1. Onda sam u potrazi za Dos-ovim servisima koji se mogu koristiti pod NWLite-om , naleteo na taj 05eh. I onda sam probao ovako : 1 - Dignem mrezu, ulogujem se kao Willow, udjem u Fox, dam SYS( 0 ). FOX: WILLOW #1. 2 - Izadjem iz Fox-a, udjem u Debug , postavim ime PERICA i broj stanice 5, udjem nazad u Fox, dam mu SYS( 0 ), kad ono ... FOX: PERICA #5. I tu je kraj price.Ovo isto ( 2 ) sam probao i bez dignute mreze i opet je Fox dao isti odgovor ( 2 ). To je, bre, neka teska prevara u pitanju. ;> Eto i pomagajte, jer ovo moje 'na odredjeno vreme zbog povecanja .....' uskoro istice. Znaci, treba mi nesto ( serijski broj FD-a ? ) da ustanovim sa koje masine je dignuta aplikacija, u stvari nesto sto je jedinstveno za masinu. Probao sam da dospem do broja Node-a masine ali to ( kao ni vecina mreznih servisa 02Fh, 021h ) pod NWLite-om ne radi.( Onaj ludi MSD prijavljuje totalne besmislice , a NC 5.0 kaze da nema mreze ). Kada sam vec ovoliko gusio,zanima me ovo.Ja tu aplikaciju planiram da ostavim u RunTime obliku.Znaci , napravicu mali Compact .EXE tek da moze da se digne iz DOS-a, gurnucu mu onaj .ESL, i svi programi ce ostati kao .FXP .Za sada sve odlicno radi ovako ( u mrezi i bez nje ) i kada menjam neki program ( .FXP, .PLB ), samo njega posle zamenim i sve radi O.K. Cini mi se da je ovaj nacin fleksibilniji. Moze se pokrenuti bilo koji .FXP sa strane, cak i bilo koji .PLB ( ako ima funkciju CALLONLOAD ), i mogu se izvrsavati sve komande sa komandne linije. Definitivno sam odustao od Stand Alone EXE-a od 3MB. Zanima me, ljudi, sta vi mislite o ovome i da li sam ja nesto tu prevideo. AND LAST BUT !LEAST : Hvala "ndragan"-u za odgovore na moja prosla pitanja. Pozdrav iz Willow Valley.
fox.174 willow,
>>koliko vas ima koji nikada necete oprostiti Microsoftu >>onakav fuseraj sa Fox-om vs. Access, nastavicu pisanije po Meni je on ( Fox ) bio prva stvar na PC-ju koja me je STVARNO odusevila, i od verzije 1.04 ( mislim ), to je moj alat. Posle sam naleteo na C, i dobro, nema veze, ipak je mnogo lakse u Fox-u. Jest da nema '#include ' ( ili ima, valjda nesto u vezi generisanja ekrana ), nema unarnih operatora, ima operator dodele koji sluzi i za poredjenje, nema tipizirane promenljive, preprocesor nesto brlja ( probaj : #if ... #define ... #endif ), u redu, zrtvovano je zbog povecanja brzine interpretiranja koda , i to je sve samo pitanje sintakse.( Cestitke Clipper-u ). Brzina je O.K. , pouzdanost je O.K. ali sa nastankom Windowsa to je ionako preslo u drugi ( treci, cetvrti ... ) plan, i pitanje je dokle ce FOX i po tom pitanju biti gazda. Izgleda da sve trci okolo , samo FOX stoji i ceka Bill @!@#! Gates-a da ga malo pokrene. Necu vise da gusim, samo, plasim se da FOX ( uskoro ? ) ne postane dinosaurus tipa COBOL-a i krivo mi je zbog toga , ali ako se nesto ne promeni na bolje , cini mi se, uskoro ce fajront. >>PC.PROG:database temi. A ima li zainteresovanih? Ima, ima. Pozdrav iz Willow Valley.
fox.175 max.headroom,
> Zar to ( login skript ) postoji za NWLite ?. Nego , znas sta je tu. > Pravim tu aplikaciju ( u Fox-u, naravno :) ) i treba mi nesto da utvrdim > sa koje je stanice podignuta aplikacija.Od serijskog broja Diska sam digo Will, kazi zasto ti je potreban ID stanice? Mozda problem moze i drugacije da se resi (ako je u pitanju slanje poruka sa stanice na stanicu, ili vec sta ti je na pameti :)
fox.176 max.headroom,
> Naravno. Kakav je to problem sa ekvivalentom (?) ON ERROR naredbe? Heh - stvar nije jednostavna (bar meni). Daklem, cim se dogodi nesto nepredvidjeno, a sam Bog zna sta sve nepredvidjeno moze da se dogodi, Delphi podize tzv. Exception. Kod Fox-a su 'iznimke' naslagane po brojevima, i ima ih, razume se, daleko manje nego kod Delphi-ja. Jos uvek nisam u stanju da predefinisem neki exception da prikazuje moj dijalog (ili da nista ne prikazuje, okejžnli) - nikako ne bih dozvolio korisniku da cita nekakve 'Couldn't find' i sl. dijaloge sifrirane nazivom & brojem exception-a. Primera radi, otvorio sam DBEdit polje "Datum" (baza sadrzi, dakle, date field). U njega unesem nesto nedozvoljeno. Kako da podignem moj exception na zadatu temu? :)
fox.177 max.headroom,
> Brzina je O.K. , pouzdanost je O.K. ali sa nastankom Windowsa to je ionako > preslo u drugi ( treci, cetvrti ... ) plan, i pitanje je dokle ce FOX i > po tom pitanju biti gazda. Vise nije, naravno, a uz zestok Bill-ov negativno usmereni trud. Umesto da, kupivsi Fox, zadrze Rushmore i osnovne jezicke elemente, prebace ga u objektno okruzenje i svima olaksaju zivot, Microsoftovi ljudi se trude da citavu stvar zaguse do kraja izbacujuci more polufabrikata koji ama bas nicemu ne sluze (Access, primera radi). Jeste profitabilnije, ali meni zeludac zaista ne vari sve i svasta. Jedina nada je Borland, sa svojim "adaptirajmo jezik do besvesti" sistemom. Delphi je jedan od rezultata, a videcemo sta nas jos ceka. Nema veze, dobro mi dodje da se vezbam na objektima ;) P.S. GROZOMORNA steta za Rushmore, princip index-handling-a jos nevidjen do sada. Tehnika je, naravno, zasticena; ali ;) mislim da postoji jos par interesantnih nacina da se postignu cak i vece brzine. Primera radi - neuronska mreza koja nazoviinteligentno prati promene indeksa i vrsi pretrazivanja. Neko ce, vec, doakati i Microsoftu :)
fox.178 willow,
>> Will, kazi zasto ti je potreban ID stanice? Mozda problem moze i drugacije >> da se resi (ako je u pitanju slanje poruka sa stanice na stanicu, ili vec >> sta ti je na pameti :) E, Max ovako stoje stvari. Jedna stanica je server na kojoj se nalaze svi podaci i sama aplikacija. Okolo su stanice bez HD, koje se dizu sa diskete, loguju se na mrezu pod utvrdjenim imenom, mapiraju se na serverov disk i odatle pokrecu aplikaciju ( znaci, jedan program za sve ). Sve bi to pokrio jedan .BAT program , znaci korisnici nemaju nikakve veze sa DOS-om ili NWLite-om. Ja sam informacije o radnim stanicama smestio u jednu tabelu , ( da li imaju stampac, koji je to stampac, da li imaju Modem , itd. ) I sada , na primer, sa jedne stanice treba da se stampa neki izvestaj. Program treba da utvrdi koja je to stanica u pitanju ( ne korisnik ) i onda, ako stanica nema stampac da se preduzme neka akcija ( dobro , to i nije bas neki problem, mislim na PrintStatus() ), ali ako stanica ima stampac, mora se videti koji je tip da bi mu se slale odgovarajuce ESC sekvence. Slicno vazi i za Modem .Ako ga ima , pokreni Telix, ako nema , posalji izvinjavajucu poruku. To je osnovno zbog cega mi je potreban ID. Verovatno si procitao moje utiske o SYS( 0 ) funkciji i u nju se ne moze pouzdati.Razmisljao sam i o postaljanju SET WORKSTAT=<broj>. Oba ova metoda pucaju kada korisnik uzme svoju disketu, i podigne program sa neke druge stanice. SYS( 0 ) ce prijaviti Ime koje je korisceno pri login-ovanju, a SET ce prijaviti ono sto uvek i prijavljuje. Mozda mi sve ovo i nece trebati u realnom okruzenju, ali, moje je misljenje, da ako covek sedne da radi nesto , onda to mora da uradi najbolje sto moze. Eto, pa pomagaj.! Slanje i primanje poruka i ostalih signala ( medjusobno upucivanje korisnika na funkcije koje te signale obradjuju ) sam resio u programu i to , za sada ( da kucnem u drvo ), funkcionise. Ajde , molim te , baci pogled na onu moju poruku u vezi 'RunTime vs .EXE' pa daj svoje misljenje. Unapred hvala Max-u i svima koji odvoje vreme za ovu poruku. Hello from Willow Valley.
fox.179 gcurcic,
> Zanima me, ljudi, sta vi mislite o ovome i da li sam ja nesto > tu prevideo. Jesi li probao da mu proturiš neku environment promenljivu u autoexecu i posle sa getenv() pročitaš? Što se tiče 'kompajliranja', moja najbolja iskustva su sa običnim Compact EXE. U slučaju da ipak koristiš .fxp module, preporučujem da povećaš broj filesa u config.sys. Baj d vej, kada sam aplikacije kompajlirao na Stand-alone EXE, primetio sam izvesne probleme sa čitanjem environment promenljivih... :(
fox.180 dvesic,
>> Mozda mi sve ovo i nece trebati u realnom okruzenju, ali, moje >> je misljenje, da ako covek sedne da radi nesto , onda to mora >> da uradi najbolje sto moze. Zašto ne pokušaš sa ID-om Ethernet karte ? On je jedinstven za svaku kartu, a teško da će korisnik da čupa Ethernet kada se loguje sa druge stanice :)) Mora da postoji funkcija koja to radi u nekoj od nezavisnih biblioteka (za Clipper ima na tone). Ako ne postoji ... uvek imamo C :)) Pozdrav, Dejan.
fox.181 max.headroom,
> Ja sam informacije o radnim stanicama smestio u jednu tabelu , > ( da li imaju stampac, koji je to stampac, da li imaju Modem , itd. ) > I sada , na primer, sa jedne stanice treba da se stampa neki izvestaj. > Program treba da utvrdi koja je to stanica u pitanju ( ne korisnik ) i Vidi, ja sam pomenuti problem sa indentifikacijom radne stanice uvek rešavao na sledeći način: na disketu sa koje ti se diže sistem uguraj neki indetifikacioni tekst-fajl, koji će Fox pri startovanju pročitati i ustanoviti koje su sve komponente prikačene na njega. Sada te informacije smesti u onu zajedničku users-tabelu. Ona ima polja (praktično - flegove) koja signaliziraju šta se od hardvera na njima nalazi. Svaku disketu, ako treba, zalepi za drajv - šta ima da je vade, koj' moj, ako nemaju hard-diskove? Prema korisniku budi strog, pravilo nalaže, da te ne bi udarao po ušima. Postoji i druga, organizacijski malo čupavija metoda - nateraj korisnike da se na tuđim kompjuteriam ne loguju pod svojim imenom (znaš već šta hoću da kažem, ali vidim da unapred odustaješ od tog sistema). P.S. Gotovo nikada ne dozvoljavam Fox-u da opšti sa Novell-om, osim ako to nije preko potrebno. Do skoro sam se igrao sa Bindery-jem k'o lud, ali onda počeše da izlaze neke svemirske verzije Fox-a koje ne podržavaju stari PLB format (pa Jovo-nanovo - juri biblioteke), te mi se, sve u svemu, posle okretanja želuca naopačke, učinilo najpraktičnije rastaviti Fox i Novell. P.P.S. > Ajde , molim te , baci pogled na onu moju poruku u vezi 'RunTime vs .EXE' > pa daj svoje misljenje. Lično, uvek koristim .APP fajl kada korisniku prosleđujem aplikaciju. Dođe mu isto što i onaj APP-oliki kompakt EXE. APP fajl je, razume se, daleko kompaktiniji od gomile .FXP-ova. BUT, nemoj zaboraviti - Fox VOLI da se zaglavi pri "Rebuild Application" operaciji, kada koristi onaj svoj mem. manager.
fox.182 max.headroom,
> Baj d vej, kada sam aplikacije kompajlirao na Stand-alone EXE, primetio sam > izvesne probleme sa čitanjem environment promenljivih... :( Primetio si SAMO te probleme? Meni su aplikacije padale k'o zrele kruške, i za to sam dao okriviti mem. manager koji traljavo obavlja postavljeni mu zadatak. Pročitao sam jednom prilikom na CIS-u neke rasprave povodom tog fenomena, ali se više ne sećam detalja.
fox.183 pedjak,
> Zašto ne pokušaš sa ID-om Ethernet karte ? On je jedinstven za svaku > kartu, a teško da će korisnik da čupa Ethernet kada se loguje sa > druge stanice :)) Voleo bih da vidim rutinu koja vraća ID broj kartice, ako može asembler.
fox.184 willow,
>> Voleo bih da vidim rutinu koja vraca ID broj kartice, ako moze Imam knjigu u kojoj je dat API za Nowellvell NetWare Ki ima sve zive f-je, pa i dobijanje ID broj-a kartice. Sve ide preko Int 021h ili 02fh. Problem je sto ja koristim NetWare Lite v 1.1 koji izgleda nista ne podrzava od svega toga. Ako koristis Novell Netware , probaj ovako : mov ah, 0EEh int 02Fh Vraca -> CX:BX:AX adresa., fizicki ID. P.S. Ova moja poruka nema bas mnogo veze sa Fox-om. Izvinjavam se. KKKKKKKKKKKKKKKKKKKKKKKKKKH
fox.185 gcurcic,
¨˙> Primetio si SAMO te probleme? Meni su aplikacije padale k'o zrele ¨˙> kruške, i za to sam dao okriviti mem. manager koji traljavo obavlja ¨˙> postavljeni mu zadatak. Jakako, ono volšebno Using of tra(n)sgressed file handle me je dobro namučilo. A da ne pominjem bugiće koje fox 2.0 nije imao, a pojavljuju se na 2.6! Na kraju sam se vratio na dobri, stari 2.0 :( Sem toga, sporost 2.6-tice na slabijim mašinama je upravo glavobolna - toliko da sam ubedio (skoro) sve svoje korisnike da bace 286 ploče i opreme mašine sa 4MB RAMa. Takođe, svečano objavljujem da više nemam diskless radne stanice, što preporučujem i willowu da učini. Jednostavno reci korisniku da se: a) ili disciplinuje pri korišćenju disketa b) ili kupi hard c) ili neka se pomiri sa posledicama Uzgred, imam običaj da kod korisnika koji koriste samo poslovne aplikacije onemogućim pristup disketama (osim ako im BAŠ nisu neophodne). Igre niks (osim ako odobri šef - u kom slučaju proveravam te igrice od virusa). Sve ove 'mere' možda izgledaju drastično, ali me štede onoga: "Halo Gorane juče u 5 popodne mi je kompjuter propevao - mislim da je bila ona pesmica Jenki Dudl..."
fox.186 max.headroom,
> Problem je sto ja koristim NetWare Lite v 1.1 koji izgleda nista ne E, baš me podseti :) Relativno skoro sam radio sa Fox-om v2.0 DOS i NW Lite-om, i ustanovio par sitnih (gnjah) nelogičnosti. Neki paketi su odlazili ravno u k. :) iz meni nepojmljivih razloga, tako da je svaka shared baza često bivala izložena bombardovanju nekim budibogsnama podacima, te se zaglavljivala (te ode ovo, te ono, te reindeksiraj, itd.)... Ima li auditorijum slična iskustva?
fox.187 max.headroom,
> Sem toga, sporost 2.6-tice na slabijim mašinama je upravo glavobolna - > toliko da sam ubedio (skoro) sve svoje korisnike da bace 286 ploče i > opreme mašine sa 4MB RAMa. :(( Nažalost, mene je traljavost 2.6 verzije prosto odbila od Fox-a kao razvojne sredine pod Windows-ima, pa sam se preorjentisao na Delphi. Ndragane, kako deluje (i da li uopšte deluje, nemam info. da li je izašao) Visual Fox v3.0 for Win? Mislim, da me onaj ogavni MS natera da se sada bavim izučavanjem OOP-a... Grozobno. P.S. Hehe, koji shit onaj VO (čitaj - Clipper for Win)... Bulaja se kune u njega, ali nisam primetio da se ljudi razbijaju programirajući :) P.P.S. Sve u svemu, ta RUPETINA nastala ekspanzijom Windows-a još je daleko od krpljenja, posebno po pitanju DB razvojne sredine. Za sada, po meni, stvari stoje ovako: - Delphi ima predivno razvijen korisnički interfejs, koji bi (da su pametni) mogli dalje iskoristiti. FormEditor je kao iz snova. - Delphi ima rogobatan sistem reporta, jerbo sve ide preko eksterne aplikacije. Sve to _traje_. Fox-ov se da dalje koristiti. - Query-ji su svuda podjednako slični, i, najzad, standardizovani. - Gotovo ista situacija sa DBEngine-om (ODBC radi svoj posao, ali nije rešenje). - Etc,etc. - Rushmore još nije prevaziđen. - Krajnji EXE nesme prelaziti 1 Mb, jer je to bezobrazno. - Sve to, na kraju, mora biti brzo poput Delphi-jeve aplikacije. - Obavezan TTS (automatski ili ručni, svejedno). - I tek tada čovek može da sedne, sklapa modul po modul, i ne brine brigu. + Muzička želja ;)
fox.188 max.headroom,
Heh, primetio sam zanimljivu nelogičnost pri radu sa Fox-om v2.0 DOS koji trči kao windowed DOS-task pod W4WG. Evo pomenute nelogičnosti: ako se aktivira popup dok traje čisti READ, Windows-i završavaju task sa "This application violated system integrity". Probao sam razne budže, ali... slaba vajda. Zna li neko uzrok ovakvog prljavog ponašanja?
fox.189 pyramid,
>> kako deluje (i da li uopste deluje, nemam info. da li je izasao) Visual >> Fox v3.0 for Win? Mislim, da me onaj ogavni MS natera da se sada bavim >> izucavanjem OOP-a... Grozobno. Ako Visual Fox postoji, ili se ikada pojavi, racunam da ce biti OOP... Nisam cuo da je neki jezik (osim Fox-a) ostao ne-OOP (sama cinjenica da postoje Basic, Cobol i Fortran implementacije koje su OOP je dovoljna)....
fox.190 pyramid,
>> >> kako deluje (i da li uopste deluje, nemam info. da li je izasao) Visua >> >> Fox v3.0 for Win? Mislim, da me onaj ogavni MS natera da se sada bavi >> >> izucavanjem OOP-a... Grozobno. >> >> Ako Visual Fox postoji, ili se ikada pojavi, racunam da ce biti OOP... >> Nisam cuo da je neki jezik (osim Fox-a) ostao ne-OOP (sama cinjenica da >> postoje Basic, Cobol i Fortran implementacije koje su OOP je >> dovoljna).... Danas mi pod ruke pade avgustovski byte sa opisom doticnog programa. Potpuno je objektno orjentisan i koliko sam shvatio, vise lici na Access nego na Fox 2.x
fox.191 ndragan,
/ To je, bre, neka teska prevara u pitanju. ;> Lagani Novel nisam probao, moja poruka se odnosila na NWare 3.x i 4.0x. Pretpostavljam da sve rame-u-rame mreže dodeljuju imena stanicama na manje više isti regularan način, i da sys(0) to lepo hvata (RPTI je čak davao i broj čvora, istina uvećan za 256). Kod NWare je uvek # 0, osim ako u loginu ubaciš ime mašine. Za broj nisam uspeo da ukačim štos, al' i ime mi je bilo dovoljno za ono što sam hteo. Sys(0) je napravljen da ti da tvoje mrežno _ime_. Nevolja je kod Novela (laganoga), što onaj broj nije fizički broj stanice, nego broj veze, koji se ponovo uspostavlja kod svake prijave. Prema tome, tu nema vajde za tebe. Bilo bi dobro da nađeš neku funkciju koja bi ti vraćala broj kartice ili tako nešto. Kružio je tu neki nwlib (vidi ono što je Maks slao pre neki mesec), možda tamo ima nešto. / .FXP .Za sada sve odlicno radi ovako ( u mrezi i bez nje ) i kada / menjam neki program ( .FXP, .PLB ), samo njega posle zamenim i sve / radi O.K. Preporučio bih (brzine radi) da napraviš .app ili mali .exe, ali da uključiš u njega sve što ti treba, i ostatak da pobrišeš sa diska, i uradiš jedno komprimovanje diska, jer em to onda bude jedini fajl koji foks drži otvoren preko mreže (ajd, ne računajući silne .dbf, .fpt, .cdx), em i direktoriji budu kraći. Eventualno bi mogao da se iz projekta isključi poneki .fxp i da ostane na direktoriju, i to onaj koji bi sadržavao lokalne parametre i trebalo bi ga možda češće menjati. Takođe, preporučujem da se .exe i .fxp stave da budu read_only, mreža im onda brže pristupa i ima manje posla oko njih (ne mora da proverava da neko ne želi da piše preko njih, da li je neko nešto zaključao itd). Za svoje potrebe sam napisao chkpjx.prg koji traži sve bitne fajlove koji se nalaze u tekućem (razvojnom) direktoriju a nema ih u .pjx; ne znam da li ima smisla da ga bacam ovde jer je moja definicija "bitnih fajlova" osobena, a pozivam i nekoliko drugih rutina iz svoje biblioteke, koja je vlasništvo firme... da ne upetljavamo lovu, ovo može svako da napiše, a zgodno dođe.
fox.192 ndragan,
/ pouzdati.Razmisljao sam i o postaljanju SET WORKSTAT=<broj>. Pademinaum: ako svaka stanica ima svoj autoegzek na serveru, ubaci tako neki Set trtmrt= tamo i pozdravi ih ako se ne slaže. Imam tu sreću da sam samo dva meseca imao stanice bez diska, a onda je mušterija negde na rasprodaji našla poslednje kvantume od 40M, verovatno po pet dolara kilo.
fox.193 ndragan,
/ kompaktiniji od gomile .FXP-ova. BUT, nemoj zaboraviti - Fox VOLI da / se zaglavi pri "Rebuild Application" operaciji, kada koristi onaj svoj / mem. manager. Ume, bogami, naročito ako je .pjx poveći, a dobije da osveži malo više fajlova. Po pravilu skenja memo polja u .pjt fajlu. Verovatno bi lek bio da se neka polja skroz isprazne (obj ili kako se već zovu). Pokušavao sam da otvorim .pjx kao .dbf i da uradim Pack Memo, da napunim timestamp nulama, da praznim onaj revision number ili kako se već zove - i dalje mi je najpouzdanije da u takvim slučajevima napravim .pjx ispočetka. Morao sam da napravim i programčeto koje će da ga puni. Naravno, nije savršen, pa završna kontrola mora na ruke.
fox.194 ndragan,
/ opreme mašine sa 4MB RAMa. A onda počinje trijezdvobitni posao, i iste stare usrane triosamšestice lepo polete. Divota jedna. Sam sam se čudio kako brzo vozi. Al' gledao sam jednom kako iscrtava ekran sa cirka 25 objekata - lepo može da se gleda kako crta okvire, kako farba polja. 286/16. Usporeni crtać.
fox.195 ndragan,
/ kako deluje (i da li uopšte deluje, nemam info. da li je izašao) / Visual Fox v3.0 for Win? Mislim, da me onaj ogavni MS natera da se / sada bavim izučavanjem OOP-a... Grozobno. OOP u suštini omogućava da se odlepimo od tatasture i 60% vremena provedemo planirajući aplikaciju (gde se stari majstori i razlikuju od cut&paste klinaca (ili beše click&point)). Da radi, radi, al' kilavo. Spor je do proliva, bar što se tiče iscrtavanja/osvežavanja prozora. Neke stvari me dovode do ludila: definišem prazan form, dodelim mu Times Roman CE, napravim poneki objekat i - svi dodati objekti imaju difolt Ms Sans Serif (naravno, nema CE). Nasleđuje, nije da ne nasleđuje, al' je stvar izgleda još na sudu, pa kad se završi ostavinska. Tj, trebalo bi da za svaki tip objekta napravim klasu, pa kad ga ubacim, da turim ime svoje klase kao ime roditelja, pa onda da uvaži font definisan u mojoj klasi - inače, verovatno su osnovne klase definisane sa "Ms sans serif", pa je to difolt to daljnjeg. Ili je neko probao da nešto pročačka u vfp.ini (ili foxprow.ini, ne znam koji važi). Glavi tu i tamo, pretpostavljam zato što sam opet ostao bez prostora na disku (obrisao sam posle PowerPoint, a ako zagusti, leteće i Korel) i zato što imam beta verziju i njega i w95 (via MSDN). / - Delphi ima predivno razvijen korisnički interfejs, koji bi (da su / pametni) mogli dalje iskoristiti. FormEditor je kao iz snova. ... / - I tek tada čovek može da sedne, sklapa modul po modul, i ne brine / brigu. Saglasan od a do žnj. + Muzička želja ;) Index While, tuga neprebolna :)
fox.196 ndragan,
/ kojim se mogu kreirati rel. baze raznoraznih formata (Fox-ov je / preskocen - nikada im necu zaboraviti), i uopste, dobro osmisljen Ako u ODBC nađe drajvere za foks, upotrebiće ih (čak sam našao i neke njegove prevode, ali u stvari nisu Delfijevi, nego ih je posejao Report Smith, koji mi inače glavi uzduž i popreko), ali nisam našao način da iz Delfija uvučem foksova memo polja - samo ispiše <BLOB> i nema načina da ga otvorim (dobro, nisam se previše ni trudio). CDX - 'production index not found' i onda, kako se kad snađe, napravi ili ne napravi .MDX (dBašić 4, naravno, Borlandovo čedo iz usputnog braka, dobio u miraz). Kod mene je problem što nemam kad da preinstaliram ODBC (ostao mi još od pendžera 3.1), a pun đavo aplikacija se u međuvremenu upisalo u njega. Sva je prilika da ne bi prošlo bez ponovne instalacije W95, što je celopopodnevni posao (čak i kad su fajlovi na serveru). Uostalom, do daljnjeg me ne zanima uporedno korišćenje istih baza iz foksa i delfija, nego da vidim kako rade svaki za sebe. Obimni su i jedan i drugi, većina objekata ima previše osobina koje bi trebalo poznavati, svi događaji imaju svoje redoslede okidanja... gomila stvari koje treba naučiti pre nego što se počne sa ozbiljnim radom. Naravno, vremena nikad dosta, a svi očekuju da sa novim alatom bude brže gotovo. Strava. / ekvivalenta ON ERROR rutini. Hmh, da ne bih dalje gusio, jerbo VFox ima za svaki objekat Error događaj i može mu se ugraditi Error metod, na nivou njegove klase ili neke predačke klase. Na taj način rutina za obradu greške vozi računa samo o ograničenom skupu mogućih grešaka koje mogu da se dese tom objektu. Mislim da je tako lakše. Nisam iščačkao šta Delfi radi sa tim.
fox.197 ndragan,
/ Izgleda da sve trci okolo , samo FOX stoji i ceka Bill @!@#! Gates-a / da ga malo pokrene. Izašao je Visual Fox Pro 3.0, i ja ću se truditi da bacim ovamo kad nešto naiđe. Imam beta verziju, koja je još uvek sklona padu tu i tamo. Mogućnosti su straobalne, ali treba vreeeeeeemena da se sve to prođe (i proba). Inače, ono #if #define #endif je među stvarima koje sam probao u prvih pola sata nakon instalacije. Radi. Ima i #include, ali se iz njega čitaju samo #direktive.
fox.199 willow,
>> Inace, ono #if #define #endif je medu stvarima koje sam probao u prvih >> pola sata nakon instalacije. Radi. Ima i #include, ali se iz njega >> citaju samo #direktive. Kod mene, nema teorije da #if #define #endif prodje. Evo bas sam malopre opet isprobao da ne bi ispalo da lupetam : #if srows() = 25 #define _LASTROW 25 #endif Nece, Fox prijavljuje gresku. Ono #include nisam nasao , sem #insert u vezi generisanja ekrana. >> Za svoje potrebe sam napisao chkpjx.prg koji trazi sve bitne fajlove >> koji se nalaze u tekucem (razvojnom) direktoriju a nema ih u .pjx; ne Ja sam sve programe koji su vezani za tekuci projekt , gurnuo u jedan .DBF . Svaki program ima svoj slog gde je dat opis, naziv , a sam kod je gurnut u memo polje . Tako su mi svi pri ruci, a kad treba da se vade, ima tu jedno programce koje ih malo sredi, pa ih fljusne napolje. Hello from Willow Valley
fox.200 goxx,
■ Kod mene, nema teorije da #if #define #endif prodje. ■ Evo bas sam malopre opet isprobao da ne bi ispalo da lupetam : ■ #if srows() = 25 ■ #define _LASTROW 25 ■ #endif ■ Nece, Fox prijavljuje gresku. Razumljivo da neće. #if #else #endif nisu komande već kompajlerske direktive koje se izvršavaju u toku kompajliranja. To znači da ne možeš da pozoveš ništa iz samog fox-a (važi i za clipper). C kompajleri mogu malo da "zavire" i u run-time sa svojim direktivama, ali clipper ima ubedljivo najbolji predprocesor što fox neće nikad imati (sem ako ga ne ukrade :). Ono što si, verovatno, hteo je: #define _LASTROW srow() Možeš svuda da pišeš _LASTROW umesto srow() što i nije nešto jer je izraz koji zamenjuješ prost za pisanje. Pozdrav Goran
fox.202 willow,
>>Razumljivo da nece. #if #else #endif nisu komande vec kompajlerske direktive >>koje se izvrsavaju u toku kompajliranja. To znaci da ne mozes da pozoves To sto sam mislio sam i napisao ( i obrnuto ). Ono 'srow()' i '_LASTROW' sam dao samo da popunim liniju ,jer bi onda verovatno prigovorio da je u pitanju sintaksna greska. Meni je veoma jasno sta su to preprocesorske direktive, cemu sluze itd. Ako bacis pogled na programski jezik C i bilo koji od njegovih .H fajlova, videces sta sam hteo da kazem. >> To znaci da ne mozes da pozoves nista iz samog fox-a (vazi i za clipper). Mislim da je obrnuto. Fox *DOZVOLJAVA* upotrebu funkcija ( srows(), itd. ) da se koriste u preprocesorskim direktivama ( za Clipper ne znam ), dok preprocesor C-a prihvata *SAMO* u vreme kompajliranja poznate konstante. Evo ti primer : #if srows() = 25 @0, 1 SAY 'Fox ovo dozvoljava, a za Clipper bas i ne znam.' #endif Ovo ima da prodje iz momenta. Mozda nisi bas obratio paznju na ono sto mene tu muci.Ovde nije problem '#if' linija vec konstrukcija #if .... #define .... P.S. Clipper IMA dosta bolji preprocesor od Fox-a, i to niko ni ne dovodi u pitanje. Hello from Willow Valley
fox.203 max.headroom,
> Ume, bogami, naročito ako je .pjx poveći, a dobije da osveži malo više > fajlova. Po pravilu skenja memo polja u .pjt fajlu. Verovatno bi lek bio Statistike radi, svaki projekat veći od 20-ak stavki zaglavi bar jednom pri Rebuild Project ili Build Application opciji :) I još nešto - primetio sam da mi zaglavljuje isključivo kod osvežavanja reporta... Hmh... Pokušavao sam i sam sa tim osvežavačkim principom koji si naveo, ali mi nekako najlakše legne da učinim jedno !DEL *.pj* i ponovo podignem projekat.
fox.204 max.headroom,
> OOP u suštini omogućava da se odlepimo od tatasture i 60% vremena > provedemo planirajući aplikaciju (gde se stari majstori i razlikuju od > cut&paste klinaca (ili beše click&point)). Mislim, znam da je OOP neophodno zlo :), samo sam se pogrešno izrazio u prethodnoj poruci. Istina, teško mi pada navikavanje na jedan svemirski sistem programiranja koji sa ovim, od Boga datim ;), nije ni na puškomet po jednostavnosti. No, da se spasem kucanja do besvesti, zaista je poželjan. Mene brine samo jedna stvar - OO programiranje nije objašnjeno onako kako bi trebalo... još uvek samo malobrojni znaju da se bez greške snađu u ovom čudu, a nas ('bazne') su držali u mraku bezobrazno dugo. Nisam pipao paskal od srednje škole, C sam gledao da izbegnem kako znam i umem (C++ je imenica tipa misaona), i sada mi preostaje samo da gledam belo u one konstruktore, ančestore i ostale psovke. > Da radi, radi, al' kilavo. Spor je do proliva, bar što se tiče > iscrtavanja/osvežavanja prozora. Neke stvari me dovode do ludila: > definišem prazan form, dodelim mu Times Roman CE, napravim poneki Tu zaista nemam šta da dodam - od Fox-a (onog 2.5 za Win), pa preko Access-a i ko zna čega sve ne, sve gledam hoće li se ko zajebati pa napraviti nešto što će kao krajnji rezultat dati vizuelno BRZU aplikaciju. Pa to k'o da izmišlja prozore... Sve sam na muci, i pitam se - imam li ja presporu mašinu, ili je stvar testirana na P6 i K7, ili... Bre, vuku nas za nos. Em što moram da se polomim učeći neke nove sisteme, em se na kraju sve izjalovi jerbo mi korisnik ostario dok ovaj udari prozorče od pola ekrana. I još nešto - svaki novi programčić donosi po jedan novi standard. Eno ga Access sa njegovim megafajlom - eto, hajde da obezbedimo podršku za njega, eno ga DBase 5 for Win... ide i on. Dobro, ono za Paradox sam do sada i gutao, ali kada bi se uradila podrška za svaku bogovetnu bazu, pa samo bi ona uzela 10-ak Mb. Do sada bih mogao da ih nabrojim bar dvadesetak :) (ODBC drajveri će da 'idu' kao Scan, ako ne i bolje - dvaput nedeljno ;) Šta bi im falilo da su se zadržali na jednom, glupom :) DBase standardu, i samo dodavali Blob-ove i ostale nepotrepštine po potrebi?
fox.205 max.headroom,
> VFox ima za svaki objekat Error događaj i može mu se ugraditi Error > metod, na nivou njegove klase ili neke predačke klase. Na taj način > rutina za obradu greške vozi računa samo o ograničenom skupu mogućih > grešaka koje mogu da se dese tom objektu. Mislim da je tako lakše. Ma, nama je takav metod i najlogičniji, jerbo se tačno zna šta može da zakolje jedno GET polje (ma kako se ono u praksi zvalo - u Delfiju je DBEdit). Delfiju fali ovakav pristup problemu, jer on nema Error event za, npr. DBEdit, već moraš da podižeš Exception (exception class). Taj 'izuzetak' je, primetio sam, zdravo zajebano podići i, uopšte, definisati (to može da bude pogrešna vrednost - npr. max. dozvoljena vrednost je 5, a ti kucaš 6, ali i neka 'apsolutno pogrešna vrednost' - npr. umećeš char tip u num polje). U međuvremenu je baza, zamislimo sranja, prestala da se odaziva - ko će da sredi ovaj Exception? :) I tako dalje, sve se to gadno zakomplikuje na kraju. Drugo, ima dosta neobično MaskEdit polje, a to mu je onaj PICTURE atribut GET polja što ga koristim svakodnevno, u velikim dozama. Jedva se navikoh na te nove function kodove, kad ispade da maska MORA da bude popunjena po priloženoj funkciji, inače se diže exception (npr. ako je 999-9999, onda mora biti 123-4567, a ne 123-456). Shit. Postoje nekakva polurešenja, ali je sve to do mošnica komplikovano. Enivej, prihvatiću VFox-a kao brata jerbo sam se navikao na sintaksu, ali samo zbog toga. Mogu si misliti koje bube idu uz njega, kao poklon MS-a (ali mu kilavost, hebiga, ne praštam).
fox.207 max.headroom,
Jedno interesantno pitanje: Potrebno mi je da odštampam jedan report, i to preko REPORT FORM-a, koji koristi neki moj custom PDSETUP. Report ide na beskonačni papir, i najčešće ne prelazi veličinu jedne strane. Međutim, pošto mi je Page Length namešteno na 66, šta se događa - elem, kada se odštampa tih 5-6 redova reporta, štampač otera papir na kraj definisane strane (dakle, 66. red). Zašto jednostavno ne zakuca tu gde je završio, jer mu nisam rekao "Page Eject after printing"? Zašto koj moj cima celu stranu na kraj? Help, jer nemam iskustva sa matričnim štampačima :)
fox.208 mamba,
Jedno pitanje za iskusnije korisnike Fox (2.6 DOS). Ako se pri generisanju EXE fajla iskljuci opcija LOGO, nakon startovanja i izlaska iz programa ostaje ona boja na ekranu koja je bila u background-u menija.Da li to moze da se nekako izbegne.
fox.209 atech,
Za potrebe testiranja programa za zastitu potreban mi je jedan iskompajliran fox EXE program tipa 'Hello World' (verzija za DOS). Ukoliko neko zeli da pomogne molim da mi se javi na mail radi dogovora... Uzgred, da li postoji vise razlicitih kompajlera za fox ili se to radi samo uz pomoc onoga sto se zove Fox stand alone kit (ili kako vec?)
fox.210 max.headroom,
Bre, ovaj Report Writer na Fox-u 2.0 mi deluje sve kilavije, kako ja dobijam potrebu da pišem aplikacije za matrične štampače :) Zna li neko (NDragane?) neku dobru zamenu za njega, ili bar gde se može naći neki prerađeni & usavršeni GENPD, bar one PDSETUP-e da uradim kako treba? Onaj čisto softverski deo je dobro urađen, ali mi, bre, ona spona softver-hardver nešto ne deluje. Dioptrija? Evo šta me još muči - nigde da vidim gde se uzimaju u obzir oni silni _P**** parametri... Da li oni važe i za REPORT FORM, i da li imaju prednost nad njima (tj. onima definisanim u REPORT FORM-u)? Npr. _PLENGTH, ima li nekog smisla da učukam: _PLENGTH = 100 REPORT FORM xxx TO PRINTER (ovde je definisana duž. strane 66) Šta će od ova dva da upali - 100 ili 66? Drugo, kako da nateram REPORT da poštuje moje ranije definisane _P**** sistemske varijable?
fox.211 ndragan,
/ Kod mene, nema teorije da #if #define #endif prodje. Obrati pažnju na verziju: Visual Fox Pro 3.0 (beta) Na 2.6 neće, nije nikad ni htelo. / a sam kod je gurnut u memo polje . A propao guranja koda u memo polja (to rade foksovi generatori, a često radi i moj), nevolja je što se ne kompajlira dok se ne ispiše u generisani program. Otvorite memo polje koje sadrži kod i probajte štogod da ga kompajlirate. Cvrc. Bilo bi zgodno kad bi neko bio ljubazan da napiše OKL rutinu koja bi to sredila, a?
fox.212 ndragan,
/ Razumljivo da neće. #if #else #endif nisu komande već kompajlerske / direktive To je i bilo jasno - grešku i javlja prilikom kompajliranja. Ajd da završimo: kombinacija #if ovo #define ono onako #endif nije podržana zaključno sa verzijom 2.6, ali radi u VFP 3.0. Ok? / i u run-time sa svojim direktivama, ali clipper ima ubedljivo najbolji / predprocesor što fox neće nikad imati (sem ako ga ne ukrade :). Kliper nije interpreter, tj. on je od a do žnj kompajlirani jezik (vidi se po tome što mora da se linkuje - foks _može_ da se linkuje, ako baš hoćete, al' ne vidim čemu bi to služilo). Radi se o popriličnoj koncepcijskoj razlici, tako da mi baš ni ne treba mnogo više # direktiva u foksu nego što ih već ima; kad bih radio kliper, verovatno ne bih mogao da živim bez žestokog pretprocesora. Uostalom, zar nije kliper, po definiciji, pretprocesor koji iksbejzolike (xBase-like) naredbe pretvara u pozive funkcija iz svoje bibliotetke? / Možeš svuda da pišeš _LASTROW umesto srow() što i nije nešto jer je / izraz koji zamenjuješ prost za pisanje. Da, ali #define Read_it Read Save Timeout 200 Modal valid Pera() when Mika() ...pa kad ti treba da zameniš neku od ovih opcija na deset mesta u programu, samo zameniš u definiciji i prekompajliraš. Radio sam čak i #define gurni =fputs(fhandle, pa je program izgledao smešno: gurni string1) gurni "drugi string"), gurni "još koji string") al' je radio ko zmaj i nisam imao nikakvih problema.
fox.213 ndragan,
/ Drugo, ima dosta neobično MaskEdit polje, a to mu je onaj PICTURE / atribut GET Nisi video SuperNovu, tek je tamo zabunjeno. To smo čudo na jedvite jade dobili na probu, a onda brže bolje posklanjali sa diskova.
fox.214 ndragan,
/ Statistike radi, svaki projekat veći od 20-ak stavki zaglavi bar / jednom pri Kod mene normalan projekat ima brat bratu stotinak slogova (.app izađe na 800K) a glavi uglavnom kad ga selim s mašine na mašinu ili iz bilo kojih razloga nešto neregularno izađem iz njega itd - dakle, skenja se kao baza ili tako nešto. Retko imam problema sa tim, al' kad počnu, najbolje je ne prati ga, nego praviti nov.
fox.215 ndragan,
/ brine samo jedna stvar - OO programiranje nije objašnjeno onako kako / bi trebalo... još uvek samo malobrojni znaju da se bez greške snađu u / ovom čudu, a Našao sam na CDu sa junske MSDN konferencije dobar članak o OOP za foksovce - tip je na kraju rekao 'nemojte da padate na retoriku, to je sve u suštini prosto'. Kako ga je on objasnio, i jeste. Gledaću da ga ponovo nađem i okačim (CD mi je ostao u Mađarskoj, dakle za jedno tri nedelje mogu da donesem to čudo ovamo). Jedino je bitno da znaš kojim redosledom okidaju događaji (i metodi koji treba da reaguju na njih) kad se form otvara i zatvara, i kad žiža prelazi sa objekta na objekat (tj kad pređe na sledeće polje), i da voziš računa šta si kako definisao. Ako imaš jasan plan svoje hijerarhije klasa, možeš zaista dosta da uštediš na vremenu i dužini sorsa. / ko zna čega sve ne, sve gledam hoće li se ko zajebati pa napraviti / nešto što će kao krajnji rezultat dati vizuelno BRZU aplikaciju. Pa to / k'o da izmišlja Znao sam šta nas čeka, čim je Bidža kupio lisicu. Samo sam čekao da vidim i nisam se razočarao. Upravo ono što su obećali da neće ("rad pod prozorima značajno usporiti foks"), desilo se. _Sve_ crta pendžere brže od foksa. Uostalom, nije za džabe Borland napisao sopstvene rutine za kojekakve rutinske poslove oko prozora dugmića i ostalom. Ili, zašto isti pendžerski programi brže rade na istoj mašini pod o es pola - zato što je emulaciju istih rutina aj bi em uradio pišući ih ponovo, ali načisto. Sve su to brljotke malog mekanog.
fox.216 ndragan,
/ kraj definisane strane (dakle, 66. red). Zašto jednostavno ne zakuca / tu Ako imaš bilo kakav objekat u PageFooter traci, automatski dobijaš chr(12) posle trake, a štampa se za svaku stranu na kojoj ima bar nečeg. Obriši celu traku pa probaj ponovo. Meni je to pravilo probleme kad generišem riport - ubacio sam brojač strana u traku za dno strane, i još ubacio slog (ili beše opcija u vodećem slogu, ne sećam se sad) za PageEjectAfter. Rezultat - izbacuje prazan list posle izveštaja. Jedan FF u dnu poslednje strane (kao i bilo koje druge strane) i još jedan iza svega (eject after).
fox.217 ndragan,
/ menija.Da li to moze da se nekako izbegne. Generiši sa logom, a .exe startuj sa -t (no logo), eventualno to zavari u .bat fajl odakle pozivaš .exe fajl.
fox.218 ndragan,
/ Uzgred, da li postoji vise razlicitih kompajlera za fox ili se Ima jedan, al' pravi tri vrste .exe fajla: compact exe, što je u stvari foxr.com+trtmrt.app (manje više), zahteva da negde nađe Fox*.esl fajlove. Zavisno od raspoložive memorije, startovaće šesnaestbitnu verziju sa overlejima (fox*.esl, .eso) ili trijezdvobitnu (foxr26x.esl ili tako nešto, ima jedno x više u nazivu) koja u komadu ide u gornju memoriju. Ne linkuje se, bar se ne primećuje. standalone exe - 16 bitna verzija sa overlejima, sve gorenavedeno, linkovano Wlink8 linkerom, do proliva dugo traje, ždere disk i memoriju, i na kraju je dugačko kao oni .es?+.app zajedno (wlink8 vrlo malo izostavi, nikad se ne zna šta može da zatreba, naročito ako ima bar jedna makro zamena negde u aplikaciji) standalone extended exe - jednokomadni exe, 32 bita, sadrži Phar Lap Extender, tj sam upravlja memorijom. Linkuje se kao Simple Executable (zato kažem jednokomadni), pet do deset puta brže nego prethodni, a sadrži isto što i on, ali bez overleja - podrazumeva se da ima dovoljno memorije da se učita ceo, i da još nešto ostane za bafere, stringove, prozore itd. To praktično znači mega ipo za službeni deo, bar pola mega za aplikaciju, i do pola mega za podatke - dva mega (produžene ili proširene) će mu biti dosta. Kompajler je ugrađen u Foks, i ne postoji kao poseban program. p.s. ovo bi moglo... ko će da sastavi FoxPro.faq?
fox.219 mamba,
> Generisi sa logom, a .exe startuj sa -t (no logo), eventualno to > zavari u .bat fajl odakle pozivas .exe fajl. I na ovaj nacin ostaje background boja nakon izlaska iz aplikacije.
fox.220 max.headroom,
Objektni programeri, help. Nisam u stanju da ukapiram značenje pojma klase (Class). Ako sam dobro shvatio, to je programski kod koji određuje skup metoda koje se mogu izvršiti nad objektom. Klasa može naslediti određene osobine od neke druge klase, koja se naziva predak (Ancestor). Pročitao sam i sledeće: "The term Class is interchangeable with the term Object Type" - to znači da se klasom može smatrati i opšti tip nekog objekta (?) Ali, da krenem redom (vi me ispravite ako negde grešim): Objekat - nešto što se vidi (ako nije hidden tipa) na ekranu (button, polje za unos teksta...); njegovu pojavu određuje skup osobina (Properties). Takođe, akcije nad objektom aktiviraju određene događaje (Events). Tip objekta definiše klasa - dakle, klasom definišemo različite objekte, istog tipa (ovo mi nije najjasnije - kakvi tipovi objekata, globalno, mogu postojati?). Klase mogu nasleđivati osobine jedna od druge, po principu više i niže instance (nisam shvatio - kakve, tačno, osobine? Da li je i prozor objekat? Ako jeste, da li se kroz njega npr. definiše font koji će se uopšte prikazivati u njemu? Ako da, da li je to primer nasleđivanja osobina?). Dalje, metoda (Method) - za nju piše da je to "Procedure or a Function associated with particular object". Dakle, objekat je multifunkcionalan entitet - ali neznam gde se definišu metodi jednog objekta (da li su i oni nasledni? Da li se nalaze u definiciji klase, tj. tipa jednog objekta?) Da li se Method može tretirati kao Property? U svakom slučaju, znam kako se objekti upotrebljavaju (bar to): ImeObjekta.Metod := ImeDrugogObjekta; ili := promenljiva; ili := konstanta; Takođe, moguća je i sledeća kombinacija: ImeObjekta1.Metod1(ImeObjekta2.Metod2); Baš sam ljubopitljiv, zar ne? ;) Samo, ovo je osnova koju nisam našao niti u jednom help-u, a bazično je za makar i najjednostavnije OOP. Kad bih to shvatio teorijski, praktični deo bi mi daleko lakše pao :)
fox.221 nlazic,
*> Objekat - nešto što se vidi (ako nije hidden tipa) na ekranu (button, *> polje za unos teksta...); njegovu pojavu određuje skup osobina *> (Properties). Takođe, akcije nad objektom aktiviraju određene događaje *> (Events). Ne, ni blizu. U "klasičnom", strukturnom programiranju program pišeš tako što definišeš neke podatke (tipa integer, real, string...) i onda pišeš procedure koje njima barataju. Ono što je bitno je da su podaci i procedure/funkcije koje njima operišu razdvojeni. Fora kod objektnog programiranja je da se podaci i procedure koje ih obrađuju spoje u jednu celinu - objekat. Podaci koji su unutar jednog objekta zovu se POLJA (fields), a procedure i funkcije METODI (methods). Šta su onda klase? Jednostavno rečeno (!?), objekat je instanca klase (ili klasa je tip objekta). Npr. kad napišeš VAR I,J:INTEGER; ti si definisao promenljive I i J kao celobrojne. Analogno, može se napisati: VAR OBJEKAT1, OBJEKAT2 : NEKA_KLASA; Dakle, ono što je INTEGER za neku celobrojnu promenljivu, to je klasa za neki objekat (objekat je promenljiva tipa klase). U prethodnom primeru trebalo je negde iznad napisati nešto poput: TYPE NEKA_KLASA = CLASS (RODITELJSKA_KLASA) { SPISAK POLJA } Jedan, Dva : integer; S1, S2 : string; ... { DEKLARACIJE METODA } procedure PR1; function Funkc1:Boolean; ... END; Konkretan kod metoda se definiše kasnije u programu, npr.: function Neka_Klasa.Funkc1:Boolean; begin Funkc1:=true; end; Što se tiče properties-a i events-a oni sa klasičnim shvatanjem objekata (ovim gore opisanim) nemaju ništa. To su samo "poslastice" koje je Borland uneo u Delphi (pretpostavljam da je pitanje vezano za njega). Osobine objekta su definisane ISKLJUžIVO sadržajem njegovih polja, a akcije objekta se aktiviraju SAMO ako se pozove neki od njegovih metoda (kaže se "objektu se uputi poruka". Npr. ako napišeš NekaForma.Show; ti si objektu NekaForma (čija je deklaracija VAR NekaForma : TForm; ) uputio poruku Show, tj. pozvao si metod NekaForma.Show.). *> Klase mogu nasleđivati osobine jedna od druge, po principu više i niže *> instance (nisam shvatio - kakve, tačno, osobine? Naslednička klasa nasleđuje od roditeljske sva polja i metode. To su te "osobine" o kojima pričaš. Naslednička klasa ih može menjati, a može ih koristiti "as is", onakve kakve su napisane u roditeljskoj. Objekat, dakle ne mora imati svoju reprezentaciju na ekranu. Dizajneri Delphi-a su skontali da je najefektnije da se komunikacija sa Windows-ima izvede preko objekata, pa su u tom cilju napisali klase za prozore, dugmiće, skrol barove, menije, okvire i sve ostalo što vidiš (i ne vidiš) na ekranu. Deklaracije svih ovih klasa (nažalost ne i kod) možeš videti u *.INT fajlovima koji se isporučuju uz Delphi. Ovo je bilo na brzinu. Ipak ti preporučujem da uzmeš neku knjigu u kojoj je to detaljnije objašnjeno. Ako planiraš da radiš u Delphi-u dobar početak bi bile knjige za Turbo Pascal 6.0 (mada i verzija 5.5 podržava objekte). Pozdrav, :) Nebojša :) P.S. Sad ti ništa nije jaso, jel' da? :)))))))
fox.222 max.headroom,
Apropo poruke "izbacivanje cele strane pri štampi" (izvin'te što nema quote-a, ali mi je krepao miš pa nemogu da kvotiram) - baš iz razloga što PageFooter tera stranu do krJaja, ostavio sam samo Summary bend. Summary bi trebao da se nalazi odmah posle završenog izveštaja, koliko se poznajem u report gen. Fox-a. Ali, he-he, iako nema PageFooter benda on ga protera kako netreba. Bljaks.
fox.223 max.headroom,
Ako nećeš Fox-ovu boju posle izlaska iz aplikacije, udari jedno CLS kroz .BAT.
fox.224 abica,
Drugar ima jedan problem: u FoxPro 2.6 4Win je napravio aplikaciju i koristeci FoxPro Distribution Kit napravio je .EXE fajl. Medjutim, kada sa njim pokrene aplikaciju iz Win-a (ne iz Fox-a) program izbaci glavni meni (odakle program i treba da pocne) i istog tenutka se vrati tamo odakle je startovan (npr. ako je startovan iz FileMgr-a program se posle iscrtavanja menija vrati u njega, a od aplikacije ni traga ni glasa) Zna li ko u cemu je problem?
fox.225 ndragan,
/ potrebu da pišem aplikacije za matrične štampače :) Zna li neko / (NDragane?) Nisam se igrao sa _PdSetup, u načelu su svi štampači Esc/P ili Esc/P2 kompatibilni i mogu se neke osnovne sekvence ugurati direktno u sam riport ili ručno rađenu štampu, a ostale baš i nisu nužne. Od ostalih štampača igraju još PCL i PostScript kompatibilni, ali tu se, mislim, ne vredi zezati sa štampanjem iz dosa - o tom potom kad budemo morali da pređemo pod prozore. Tj, jesam napravio par štampi za na laser, ali na ruke. Jednom sam, od zezanja, stavio _pdsetup=postscript u config.fp, i dobijao sam lepe .ps fajlove, koje nisam imao iz čega da gledam, a ni na čemu da štampam :). Pogledao sam par komada iz GoScripta, pa koliko je to na VGA monitoru moglo da se vidi, ličilo je na štogod. Nisam imao laser pri nozi tog trenutka da vidim na šta liči kad se baci na papir.
fox.226 max.headroom,
> pređemo pod prozore. Tj, jesam napravio par štampi za na laser, ali na > ruke. Moja je nezgoda što sam do sada i pravio štampe isključivo za lasere (uglavnom HP familija, ekstra jedan Epson), naravno - iz DOS-a. Smanjim slovca na najsitnije, pa kad pogura izveštaj stane pola megabajta na stranu :) Zaista nisam imao nikakvih problema sa dužinom strane i sličnim zezalicama, a da ručno pravim neke izveštaje ne da mi se ne dopada, nego nemam iskaza (silna grupisanja i tomu nalik). Šta najzad bi sa onim FoxFire! add-in-om? Ima li ko info. o čemu se radi?
fox.227 max.headroom,
> Drugar ima jedan problem: u FoxPro 2.6 4Win je napravio > aplikaciju i koristeci FoxPro Distribution Kit napravio Najverovatnije je nije dobro debugovao. Neka pogleda SKIP FOR uslove u glavnom meniju, ako ih ima, kao i definicije PAD-ova, i tome slično. Da li je probao sa prethodnim startovanjem aplikacije iz Fox-a? :)
fox.228 nkbog,
> Objektni programeri, help. Nisam u stanju da ukapiram značenje pojma klase > (Class). Ako sam dobro shvatio, to je programski kod koji određuje skup > metoda koje se mogu izvršiti nad objektom. Klasa može naslediti određene > osobine od neke druge klase, koja se naziva predak (Ancestor). Pročitao sam > i sledeće: "The term Class is interchangeable with the term Object Type" - > to znači da se klasom može smatrati i opšti tip nekog objekta (?) Klasa je pojam. Objekat je pojava. Klasa je čovek. Objekat je Max.Headroom. Klasa je, upravo, opšti tip nekog objekta. > Objekat - nešto što se vidi (ako nije hidden tipa) na ekranu (button, > polje za unos teksta...); To je tzv. "vizuelni" objekat. Objekat nije dugme, već dugme "OK". Nije polje za unos teksta, već "polje za unos imena i prezimena". Ono prvo su klase, ovo drugo su objekti. > njegovu pojavu <OBJEKTA> određuje skup osobina (Properties). > Takođe, akcije nad objektom aktiviraju određene događaje (Events). Manje, više da. S tim da su i metode aktivirane određenom akcijom (pozivom). > Tip objekta definiše klasa - dakle, klasom definišemo različite objekte, > istog tipa (ovo mi nije najjasnije - kakvi tipovi objekata, globalno, mogu > postojati?). Niz. Ceo broj. Push Button. čivotinja. Sve što postoji pripada nekom tipu, a taj tip je klasa (kategorija) tog "postojanja", odnostno tog objekta. Prozor aplikacije "Moja aplikacija" je objekat klase prozora. On pripada vrsti objekata koja se naziva opštim imenom "Prozor" i predstavlja jednu pojavu tog prozora. > Klase mogu nasleđivati osobine jedna od druge, po principu više > i niže instance (nisam shvatio - kakve, tačno, osobine? Ne baš. "Nasleđivanje na dole" - "pravo" nasleđivanje: Klasa nasleđuje osobine klase iz koji je izvedena. Na primer, čovek je nastao od neke vrste primata, neke osobine on je nasledio od pretka, a neke ima nezavisne. Slično, list boks je prozor, pa on ima osobine prozora (visinu, širinu, položaj, reaguje na miša i sl.), ali ima i nove osobine (sadržaj, broj elemenata, aktivan element). "Nasleđivanje na gore" - polimorfizam: (Nasleđivanje na gore nije dobar termin). Stvar je u sledećem: za čoveka kažemo da je primat (kao i gorile i lemuri). Stoga je Nenad Bogojević instanca klase Primata. Sa druge strane klasa žovek je izvedena iz klase Primata, pa objekat Nenad Bogojević, koji je i žovek, ako ga posmatramo kao Primata ponaša se malo drugačije od "običnog" primata. U stvari Nenad Bogojević se ponaša kao da pripada različitim grupama (ima više "oblika" - polimorf): i Primat je, i žovek je. Svi prozori imaju HWND osobinu u Windowsima koja ih jedinstveno identifikuje. Kada ti dobiješ HWND, možeš da pomisliš da je to ordinarni prozor, a to je u stvari dijalog, ili lista ili dugme. Prozor definisan sa HWND ponaša se i kao prozor i kao ono što jeste. > Da li je i prozor objekat? Prozor je klasa. Prozor na ekranu je objekat (čak i ako je nevidljiv). > Ako jeste, da li se kroz njega npr. definiše font koji će se uopšte > prikazivati u njemu? Ako da, da li je to primer nasleđivanja osobina?). Nije. To je definisanje osobine. Nasleđivanje je pravljenje nove klase koja ima osobine Prozora, ali dodaje i druge osobine (npr. smer ispisa teksta). > Dalje, metoda (Method) - za nju piše da je to "Procedure or a Function > associated with particular object". Dakle, objekat je multifunkcionalan > entitet - Tačno! > ali neznam gde se definišu metodi jednog objekta (da li su i oni > nasledni? Da li se nalaze u definiciji klase, tj. tipa jednog objekta?) Do skoro je su oni bili nepromenljivi (VB do 3.0, Access), ali izgleda da su se promenili. > Da li se Method može tretirati kao Property? Ne. Metod je interfejs prema objektu. To je postupak za programsku interakciju sa objektom. Osobina je osobina. Na primer, plave oči su osobina. Poznavanje jezika i razumevanje i reakcija na komandu "Gledaj pravo!" je metod. NB.
fox.229 nkbog,
*> Objekat - nešto što se vidi (ako nije hidden tipa) na ekranu (button, *> polje za unos teksta...); njegovu pojavu određuje skup osobina *> (Properties). Takođe, akcije nad objektom aktiviraju određene događaje *> (Events). > Ne, ni blizu. Naprotiv, vrlo blizu (bar drugi deo). Svaki objekat ima osobine opisane podacima i određene metode koji predstavljaju interfejs prema spoljašnjosti (programerskoj ili korisničkoj). U Microsoftovim Visual jezicima postoje dve grupe metoda: metode koje služe za programski pristup (Methods) i metode kojima se opisuje ponašanje pri interakciji sa korisnikom (Events). Prve su do skora bile bogom dane, a druge su se mogle menjati. > Osobine objekta su definisane ISKLJUžIVO sadržajem njegovih polja, Properties u Visual Basicu, Fox, Accessu, Delphiu predstavljaju jedan "prijateljskiji" način za predstavljanje javnih "polja" objekta. Jer zaista, šta jesu javna "polja" ako ne "osobine" objekta koje mozemo menjati. Šta se unutar objekta zaista zbiva, za programera nije bitno. On ima unapred zadat programerski interfejs, a da li je Property polje ili niz polja, to programera ne mora (a i ne treba da interesuje). > a akcije > objekta se aktiviraju SAMO ako se pozove neki od njegovih metoda (kaže se > "objektu se uputi poruka". Npr. ako napišeš NekaForma.Show; ti si objektu > NekaForma (čija je deklaracija VAR NekaForma : TForm; ) uputio poruku Show, > tj. pozvao si metod NekaForma.Show.). Događaji su metode koje se pozivaju kad se objektu uputi poruka, pri čemu konkretnu poruku upućuje operativni sistem (npr. WM_SHOW, WM_SETFOCUS). NB.
fox.230 nlazic,
*> U Microsoftovim Visual jezicima *> postoje dve grupe metoda: metode koje služe za programski pristup *> (Methods) i metode kojima se opisuje ponašanje pri interakciji sa *> korisnikom (Events). Prve su do skora bile bogom dane, a druge su se *> mogle menjati. OOP je nastao mnogo pre Windows-a, Microsoft-a i njegovih Visual jezika. Identifikovati pojam objektnog programiranja sa Visual jezicima, pa i sa Win-om uopšte, je u najmanju ruku pogrešno. Evo primera: sam si rekao da su metode u V. jezicima (bile) nepromenljive. To se kosi sa jednim od najosnovinih principa OOP-a: jedna klasa nasleđuje drugu, dodaje joj svoje osobine (polja i metode) i modifikuje postojeće. Ako se ne varam, u VB-u (do v.4.0) čak nije bilo moguće ni napraviti neki sopstveni objekat! Hoću da kažem da svi ti pojmovi (properties, events, etc.) koje uvode MS i Borland nemaju mnogo veze sa "klasičnim" shvatanjem objekata. Oni su uvedeni samo da bi se automatizovale neke rutinske stvari. Još jedan primer je Borlandov OWL: to je biblioteka klasa (za paskal i c) koja služi kao interfejs ka Win okruženju. Njene klase ne poznaju ni properties-e ni event-e, već isključivo polja i metode, ali su pravi primer objektnog dizajna korisničkog interfejsa. *> Properties u Visual Basicu, Fox, Accessu, Delphiu predstavljaju jedan *> "prijateljskiji" način za predstavljanje javnih "polja" objekta. Jer Da, ali to nisu standardne osobine objekata. Ono što objektni kompajleri moraju da podržavaju su polja i metodi. Ostale stvarčice o kojima ti govoriš, svaki kompajler (pa čak i svaka nova verzija istog kompajlera, u slučaju MS-a!) tretira na drugi način. One su samo posledica prirode Windows okruženja kojoj su dotični kompajleri prilagođeni. *> Šta se unutar objekta zaista zbiva, za programera nije bitno. On ima Bitno je ako piše neku novu klasu, a praktično je nemoguće napisati (dobar) program koji koristi samo unapred definisane klase. *> Događaji su metode koje se pozivaju kad se objektu uputi poruka, *> pri čemu konkretnu poruku upućuje operativni sistem (npr. WM_SHOW, *> WM_SETFOCUS). Ne, događaji nisu metode. Reč događaj treba shvatiti u najbukvalnijem smislu: događaj je pritisak na taster miša ili tastature, pokret miša i sl. Kad Windows detektuje neki događaj, on generiše poruku (poruka je samo skup podataka koji opisuju događaj, npr. koji je taster pritisnut, gde je pomeren miš i sl.) koju upućuje ciljnoj aplikaciji i tu se njegov posao završava (ako aplikacija "prihvati" tu poruku). Aplikacijin posao je da analizira poruku i reaguje (ili ne reaguje) na određen način. U slučaju objektnih Win. kompajlera (to su pre svega paskal i c kompajleri, VB ne treba porediti sa njima (on i nije kompajler)) cela aplikacia je samo još jedan objekat, koji onda (po prijemu poruke) aktivira odgovarajući metod. REZIME: :))) Nikako ne treba posmatrati OOP "kroz prozore". OOP zaista jeste najbolji način porgramiaranja Win-a, ali daleko od toga da mu je to jedina svrha. Ako se na tome ostane i deo programa koji komuniciria sa Win-om napiše "objektno", koristeći ponuđene klase, a ostatak na "standardan" način, dobija se neka nesrećna mešavina OOP-a i strukturnog programiranja koja retko kad urodi plodom. Pozdrav, :) Nebojša :)
fox.231 nlazic,
*> Do skoro je su oni bili nepromenljivi (VB do 3.0, Access), ali izgleda *> da su se promenili. U "normalnom" OOP-u metodi nikad nisu nepromenljivi, daleko od toga. To je bio slučaj samo u nekim MS-ovim jezicima (VB) koji nisu imali preterane veze za objektnim programiranjem. Jedna od osobina na kojima se temlji OOP je menjanje (redefinisanje) nasleđenih metoda. Pozdrav, :) Nebojša :)