Tipy, triky, makra pro aplikace Office, Control Panel 3.1, OS/2 Merlin, Borland C++ Builder 4 a Visual C++5.0 a 6.0. A jsme tu opt s malm nupem rad, jak si zpjemnit i ulehit kadodenn prci s potaem a jeho aplikacemi... Word Kapitlky Nadpisy vypadaj hezky, jsou-li napsny psmem ve stylu kapitlek. V nm jsou vechna zapsan mal psmena pevedena na velk a zapsan velk psmena jsou vt. Nap. ZATMN SLUNCE V MAARSKU. Na kapitlky meme zmnit vybran text pkazem FORMT|PSMO a oznaenm stylu "Kapitlky". Pouvme-li kapitlky astji, je vhodn zmnu vyvolat klvesovou zkratkou. Vytvome ji tak, e zadme pkaz NSTROJE|VLASTN, stiskneme tlatko "Klvesnice", vyhledme kategorii "Formt" a pkaz "Kapitlky". Zjistme, e od vrobce softwaru je piazena klvesov zkratka Ctrl+Shift+K, ta vak ve verzi 97 a 2000 nefunguje. Piadme si tedy jinou. Postavme kurzor do polka "Stisknte klvesovou zkratku" a stiskneme nap. kombinaci klves Alt+Ctrl+Shift+K. Ta nen nikde pouita. V polku "Zmny uloit do" ponechme obecnou ablonu "Normal.dot". Volbu potvrdme tlatkem "Piadit" a dvakrt za sebou stiskneme tlatko "Zavt". Kdy nyn ozname text jako blok a na klvesnici stiskneme zadanou klvesovou zkratku, zformtuje se text na kapitlky. Poznmka: Ve Wordu verze 5 a 95 kombinace klves Ctrl+Shift+K funguje. Text se na kapitlky zformtuje. Symbol Pokud asto pouvme njak znak, nap. telefon, oblky, ipky, nemusme zadvat pkaz VLOIT|SYMBOL, na kart "Symbol" vybrat znakovou sadu Wingdings, oznait znak, stisknout klvesu "Vloit" a nsledn "Zavt". Meme si pro tyto znaky vytvoit klvesovou zkratku. Zadme pkaz VLOIT|SYMBOL, na kart "Symboly" vybereme psmo, nap. Wingdings, a ozname symbol, pro kter chceme klvesovou zkratku vytvoit (napklad telefon). Stiskneme tlatko "Klvesov zkratka", do polka "Stisknte klvesovou zkratku" (ve verzi 5 a 95 "Stisknte novou klvesovou zkratku") umstme kurzor a stiskneme klvesy, nap. Alt+Ctrl+Shift+T. V polku "Zmny uloit do" ponechme obecnou ablonu "Normal.dot". Stiskneme tlatko "Piadit", "Zavt" a jet jednou "Zavt". Po stisku zadan kombinace klves je nyn znak do textu vloen bez nutnosti cokoli vybrat a zkratka je pouiteln v libovolnm nov zaloenm dokumentu. Obrzek Pro vkldn obrzku ze soubor se pouv pkaz VLOIT|OBRZEK|ZE SOUBORU (ve verzi 5 a 95 VLOIT|OBRZEK), nsleduje vyhledn sloky a obrzku. I tuto innost lze usnadnit pouitm klvesov zkratky. Zadme pkaz NSTROJE|VLASTN (ve verzi 5 NSTROJE|UPRAVIT), stiskneme tlatko "Klvesnice" (ve verzi 5 a 95 je to karta "Klvesnice"), vybereme kategorii "Vloit" (ve verzi 5 "Vloen") a pkaz "Vloit obrzek" (ve verzi 5 a 95 jde o pkaz "InsertPicture") a do polka "Stisknte klvesovou zkratku" (ve verzi 5 a 95 "Stisknte novou klvesovou zkratku") uvedeme nap. Alt+Ctrl+ Shift+O. V polku "Zmny uloit do" ponechme obecnou ablonu "Normal.dot". Volbu potvrdme tlatkem "Piadit" a dvakrt za sebou stiskneme tlatko "Zavt". Nyn se po stisku zadan klvesov zkratky zobraz pmo posledn pouit sloka s obrzky, lze je tedy vkldat velice operativn. Zobrazme-li pkaz VLOIT|OBRZEK|ZE SOUBORU (ve verzi 5 a 95 VLOIT|OBRZEK), bude po jeho stran nmi zvolen klvesov zkratka. Zruen doplnnch klvesovch zkratek Vechny klvesov zkratky, tedy jak pro formtovn a vloen znaku, tak pro pkaz, zrume velice snadno. Zadme pkaz NSTROJE|VLASTN, stiskneme tlatko "Klvesnice" a nsledn tlatko "Obnovit ve". Nvrat ukonme tlatky "Zavt". Uveden nvody mete vzt jako nmt nebo inspiraci pro zjednoduen zadvn jinch akc. Excel Excel 2000 spustit jen 1x Aplikaci Excel 2000 meme spustit v nabdce START|PROGRAMY|MICROSOFT EXCEL, stiskem tlatka v panelu zstupc Office, nebo pokud jsme vytvoili zstupce na pracovn ploe, stiskem tto ikony. Soubory oteveme poklepnm na n v przkumnku nebo po zadn pkazu SOUBOR|OTEVT. Kad seit m sv tlatko na hlavnm panelu Windows. Mezi seity lze pepnat stiskem tohoto tlatka nebo klvesovou zkratkou Alt+Tab. Excel bychom mli spustit jen jednou. Nesmme opakovan pout ve uveden postupy, nebo by se Excel spustil znovu a u potae neoplvajcho velkou vnitn pamt by dolo ke zpomalen reakc. Ve Wordu 2000 toto nebezpe nehroz. Aplikace se spust vdy jen jednou, by ji znovu spustme z nabdky START|PROGRAMY. Skok na posledn buku v. 5, 95, 97 a 2000 Na nejzaz buku s daty (posledn sloupec a posledn dek) pesuneme bukov kurzor klvesovou zkratkou Ctrl+End. Zrume-li hodnotu v tto buce, budeme se touto klvesovou zkratkou pesouvat stle na posledn buku, by je ji przdn. Sta vak seit uloit, nap. klvesovou zkratkou Ctrl+S nebo klasicky pkazem SOUBOR|ULOIT, a bukov kurzor se bude pesouvat na skuten posledn zaplnnou buku na listu. Automaticky otevran soubor Pracujeme-li del dobu s njakm souborem, meme si jeho otevrn usnadnit. Oteveme ho ji pi sputn Excelu. V Excelu existuje sloka XLStart a soubory do n uloen se pi sputn Excelu automaticky otevou. Sloka pro automatick otevrn soubor je podle verz Excelu: v. 5: C:\excel\xlstart. v. 95: C:\MSOffice\Excel\XLStart. v. 97: C:\Program Files\Microsoft Office\Office\XLStart. Verze 2000 je zajmav tm, e m dv sloky XLStart. Jedna je na cest C:\Windows\Application Data\Microsoft\Excel\XLStart a druh C:\Program Files\Microsoft Office\Office\XLStart. Je lhostejn, do kter sloky soubor umstme - vdy se pi sputn Excelu vechny soubory umstn v uvedench slokch otevou. Automaticky se t otevou vechny soubory, se ktermi me Excel pracovat, umstme-li je do sloky zapsan na kart "Obecn" v poloce "Alternativn umstn spoutcch soubor" (po zadn pkazu NSTROJE|MONOSTI). Ve verzi 5 jde o pkaz NSTROJE|PEDVOLBY, karta "Obecn" a poloka "Druh umstn soubor", a ve verzi 95 o pkaz NSTROJE|MONOSTI, karta "Obecn", poloka "Druh umstn soubor". Automatizace ve Word 97 a 2000 cz Automatizace pi psan Word umouje nkter innosti automatizovat. Zapeme-li *text* (text ve hvzdikch bez mezer), hvzdiky zmiz a dojde k automatickmu peformtovn na "tun" psmo. Pouijeme-li na zatku a konci slova podtrtka, ez slova se zmn na kurzvu. Tato prava se vak automaticky provede jen tehdy, kdy po zadn pkazu NSTROJE|AUTOMATICK OPRAVY, je na kart "Pi psan" oznaeno polko "*Tun* a _ kurzvu _ skutenm formtovnm". Spodn ru pod odstavcem lze vytvoit automaticky. Nejprve zkontrolujeme, zda je po zadn pkazu NSTROJE|AUTOMATICK OPRAVY na kart "Pi psan" oznaena poloka "Ohranien". Stiskneme-li potom opakovan (min. 3x) nkter z tchto znak, zakresl se ra. - pomlka tenk ra _ podtrtko tlust ra = rovntko dvojit ra * hvzdika tlust peruovan ra # tenk-tlust-tenk ~ tilda vlnovka Ty se vytvo pod odstavcem nad tmito znaky. Pokud budeme chtt ru pod odstavcem smazat, nememe pout klvesu Delete nebo Backspace. Se zruenm ar se nebudeme trpit. Postavme kurzor do podtrenho odstavce, zadme pkaz FORMT | OHRANIEN A STNOVN a na kart "Ohranien" stiskneme tlatko "dn" nebo klepneme my na obrzek. ru tak zrume. Psan slovanch seznam si meme zjednoduit. Opt zadme pkaz NSTROJE|AUTOMATICK OPRAVY, na kart "Pi psan" ozname pole "Automaticky slovn". Zapeme-li zkraje odstavce slo nebo psmeno (mal nebo velk) nsledovan tekou a mezerou nebo tabultorem, tak se po stisku klvesy Enter zmn na slovan (i abecedn) seznam a automaticky se vytvo dal poloka. Vytven ukonme opakovanm stiskem klvesy Enter (2x) nebo smaznm posledn poloky klvesou Backspace. Pi psan jsou vak zvltnosti: ? Pouijeme-li jako prvn znak psmeno i, resp. I, obdrme slovn mskmi slicemi, malmi resp. velkmi. ? Pokud nezaneme od jedniky, musme pro vyvoln slovn pout za slic tabultor. Pouijeme-li mezeru, k automatickmu slovn nedojde. ? Pokud nezaneme od psmene a, resp. A, musme za psmenem pout tabultor. Pouijeme-li mezeru, k automatickmu oznaen nedojde. ? Pedchz-li vytvenmu seznamu jin seznam a zapeme slici o jednotku vt, resp. dal psmeno v abeced, vyhodnot procesor, e chceme v slovn pokraovat a na pedchoz seznam nave. Zde pouijeme k oddlen mezeru. Mezi seznamy me bt i nkolik odstavc textu. (Plat jen pro Word verze 2000.) Jsou vak situace, kdy nm me automatick slovn vadit. Nap. pi psan strukturovanho ivotopisu. Napeme rok i asov interval, odskok provedeme klvesou Tabultor, zapeme innost a po stisku klvesy Enter mme doplnn rok (nebo interval) o jednotku vt. Vrtme se zpt a po stisku klvesy Enter to vyjde nastejno. Pomoc je pitom snadn - zrume oznaen poloky "Automaticky slovn". Na kart "Pi psan" je t poloka "Automaticky odrky". Pi oznaen poloce mme usnadnn psan odrek. Zapeme-li zkraje odstavce vybran znaky, za nimi mezeru nebo tabultor, zmn se po stisku klvesy Enter na odrky a automaticky se vytvo dal odrka. Seznam ukonme opakovanm stiskem klvesy Enter (2x) nebo smaznm posledn odrky klvesou Backspace. A nyn ke znakm: * (hvzdika) se zmn na ? (puntk), > na ?, - (pomlka) bude zachovan, - (dv pomlky) vytvo ? a psmeno "o" nsledovan tabultorem vytvo ?. Jednodkovou tabulku vytvome snadno zpisem srie pomlek (rovntek i podtrtek) a znamnek plus, kde kad dvojice znamnek plus odpovd jednomu sloupci. Po stisku klvesy Enter se automaticky vytvo tabulka. Orientan pro zpis jednoho sla do tabulky potebujeme dv pomlky. Nap.: +--+--+. Automatick vytven tabulek vypneme pkazem NSTROJE|AUTOMA- TICK OPRAVY, kde na kart "Pi psan" zrume oznaen poloky "Tabulky". Dal sloupce a d-ky doplnme pkazem TABULKA|VLOIT SLOUPCE, VLOIT DKY a u verze Wordu 2000 pkazy TABULKA|VLOIT|SLOUPCE NALEVO, SLOUPCE NAPRAVO, DKY NAD A DKY POD. A jet k protivnm velkm psmenm po tekch za slicemi ve vt. To souvis s polokou "Velk psmena na zatku vt" na kart "Opravy" po zadn pkazu Nstroje|Automatick opravy. Zrume oznaen poloky a je po problmu. No, zatek vt musme kontrolovat ji sami. Perlika na zvr. Kdy se na Vs bude nkdo vytahovat, tak mu udlejte malou zlomyslnost. Ve Wordu zadejte pkaz NSTROJE|AUTOMATICK OPRAVY a na kart "Opravy" do polka "Nahrazovat" zapite 1 a do polka "za:" napite "Nazdar moulo!. i jinou vtipnou sentenci. Zpis potvrdme stiskem tlatka "Pidat". Nyn, kdy ve Wordu, ale i v Excelu nebo jsou nhrady spolen, napete 1 zobraz se ona sentence. A te a se "vejtaha" uke! Nedouc nhradu odstranme tak, e ji na kart "Opravy" vybereme a stiskneme tlatko "Odstranit". Vtinu tchto monost poskytuje i Word 95 (resp. jeho pvodn oznaen v. 7), i kdy se v dialogovch oknech tyto monosti nenastavuj. V tto verzi nelze vytvet tabulky zpisem znak. Milan Bro Control Panel 3.1 Pkn nov logo Pkn firemn logo, kter se zobrazuje pi startu, je nedlnou soust kadho slunho operanho systmu. Control Panel verze 3.x (CP) nen samozejm dnou vjimkou. Pokud vak pracujete s CP intenzivn (neustle opakovan pohled na jeden obrzek nen pli vzruujc), me vs zobrazovan logo zat rozilovat. Pitom kad uivatel me snadno donutit svj CP, aby zaal zobrazovat tm libovoln zajmav obrzek jako logo. Sta dodret nsledujc postup: 1. Firemn logo je uloeno jako obrzek v souboru CPLOGO.LGO, kter je umstn v adresi C:\CP. Systm CP vak grafick formt LGO vbec nezn. Musme si tedy uvdomit, e za pponou LGO se skrv jin grafick formt - InView icon formt (*.ICO). 2. Pvodn soubor CPLOGO.LGO pejmenujeme na CPLOGO.LXX. 3. Nyn si vybereme svj oblben obrzek v grafickm formtu PCX, GIF, TIF, BMP, SCR, IMG (InView), JPG, PNG, WPG, TGA, CUT, MAC nebo XBM. Fyzick velikost budoucho loga vak mus odpovdat grafickmu rozlien, kter v rmci CP pouvme. Jestlie pouvme grafick reim 800 x 600 bod, maximln rozumn velikost loga je asi 570 x 400 bod. 4. Vybran obrzek v CP nateme do pomocn aplikace Obrzek. Ovme si velikost obrzku a jeho neporuenost. Funkc Uloit jako (hork klvesa Ctrl+A) aktivujeme dialogov okno. Zde zvolme typ souboru - InView icon formt. 5. Nsledn se objev dialog - Uloen obrzk. Zde nastavme reim 256 barev a ponechme pvodn velikost obrzku *.ICO (ikony). 6. Po uloen obrzku ukonme prosted CP a v libovolnm souborovm manaeru pejmenujeme prv vytvoen obrzek na CPLOGO.LGO. 7. Nyn se pi startu CP bude vdy zobrazovat nae pkn nov logo. Tento trik perfektn funguje i v systmu CP 3.0. Merlin Seznam definovanch tiskren Mezi nejdleitj vlastnosti kadho OS nepochybn pat schopnost kvalitnho tisku dokument na drtiv vtin dnes pouvanch inkoustovch a laserovch tiskren. Prakticky kad OS nabz svm uivatelm grafick nstroje, kter um zobrazit kompletn seznam aktuln pipojench tiskren s komfortnmi monostmi jejich nastaven. Do hor situace se ovem dostane uivatel, kter potebuje zskat seznam tiskren v rmci celoobrzkov textov relace. Proto vs mon pot nsledujc REXX program TISKARNA.CMD, kter vype vechny tiskrny definovan v systmu. U kad tiskrny navc zobraz port, frontu a ovlada tiskrny. Program je nutn vytvet v textovm editoru, kter podporuje ist ASCII (nap. Systmov editor EPM). Ve vech programech vytvoench v jazyku REXX mus bt na prvnm mst koment zanajc znaky "/*", take neodstraujte vodn komente. V novm prosted Object REXX funguje program bez problm. /* TISKARNA.CMD */ /* Autor: Michal Pohoelsk */ /* Vytvoeno pro systm OS/2 Merlin 4.0 */ /* Program v textov relaci vype seznam vech tiskren definovanch v systmu. */ /* Aktivuji knihovnu funkc REXXUTIL */ IF RxFuncQuery("SysLoadFuncs") THEN DO CALL RxFuncAdd "SysLoadFuncs", "RexxUtil", "SysLoadFuncs" CALL SysLoadFuncs END /* ---------------- */ CALL SysCls CALL SysIni "BOTH","PM_SPOOLER_ PRINTER","ALL:","printers" PARSE VALUE SysIni("BOTH","PM_ SPOOLER","PRINTER") WITH default ";" default = STRIP(default) maxdelka = 8 DO i = 1 TO printers.0 hodnota = printers.i PARSE VALUE SysIni("BOTH","PM_ SPOOLER_PRINTER_DESCR",hodnota), WITH printerd.val ";" printerd.val = SPACE(TRANSLATE (printerd.val," ","0d0a"x)) IF hodnota == default THEN printerd.val = printerd.val "[default]" maxdelka = MAX(maxdelka,LENGTH(printerd.val)) END hlavicka = "Jmeno"||COPIES(" ",maxdelka-4) ||, "Port Fronta Ovladac tiskarny" SAY hlavicka SAY COPIES("-", LENGTH(hlavicka)) DO i = 1 TO printers.0 hodnota = printers.i PARSE VALUE SysIni("BOTH","PM_ SPOOLER_PRINTER", hodnota), WITH port ";" driver ";" Queue ";" SAY LEFT(printerd.val,maxdelka) LEFT(strip(port),8), LEFT(STRIP(queue),8) STRIP(driver) END EXIT 0 Manipulace s adresi Uivatel operanho systmu tdy DOS (MS-DOS, PC-DOS, Novell DOS) si ji dlouho mohou pejmenovat libovoln soubor (soubory) pomoc veobecn znmho internho pkazu - RENAME. Pestoe tento pkaz byl ji samozejmou soust systmu MS-DOS 3.0, kter byl aktuln v roce 1985, dodnes se pi jeho pouit uivatel mus smiovat s jednm nedostatkem. Prce se soubory je sice jednoduch, ale s pejmenovnm adres je to vrazn hor. Nzev adrese je prost "nedotknuteln". Uivatel OS/2 jsou ovem ve vhod. V rmci textov DOS relace me uivatel pout u pkazu RENAME nedokumentovan parametr RENAME /S, kter donut pkaz pejmenovat libovoln adres. Pkaz lze uvedenm zpsobem pouvat v OS/2 Warp 3.0 i v OS/2 Merlin 4.0. V textov relaci OS/2 uveden parametr nefunguje, protoe pejmenovvat adrese zde pat mezi samozejm schopnosti identickho pkazu. Pepnn mezi aplikacemi Mezi mn viditeln, ale pesto velmi pjemn novinky systmu OS/2 Merlin pat pepnn program pomoc klvesov zkratky Alt+Tab, kterou dobe znaj uivatel Windows. Dky tomu lze snadnji pejt z 16bitovch Windows do pln 32bitovho prosted OS/2. Pepnn program pomoc Alt+Tab vak bohuel funguje pouze v grafickm prosted. Uivatel textovch aplikac (OS/2 i DOS) tedy maj smlu. Natst vak existuje freewarov progrmek LSwitcher verze 1.0, kter um uveden omezen jednodue obejt. Sta umstit soubor LSWITCH.EXE do sloky Spustit pi startu, upravit ve stejnm duchu systmov DOS soubor AUTOEXEC.BAT a ukonit prci systmu. Po novm startu meme vesele pouvat zkratku Alt+Tab v jakkoliv situaci. Jestlie stiskneme klvesu Shift souasn s Alt+Tab, pepnn program bude probhat v obrcenm poad. Program LSwitcher je mon s menm komfortem vyuvat i v OS/2 Warp 3.0. V ppad poteby lze LSwitcher snadno deaktivovat souasnm stisknutm Ctrl+Alt+U. Grafick reim systmu Nastaven vhodnho grafickho rozlien, kter optimln vyuv schopnost monitoru i grafick karty a zrove je ergonomick, pat mezi zkladn starosti kadho uivatele v libovolnm grafickm operanm systmu. Vtina systm vetn OS/2 pitom nabz komfortn nstroje umoujc optimln volbu grafickho reimu. Ve vrazn hor situaci se vak ocitne uivatel, kter potebuje v rmci textov relace zjistit nastaven grafick rozlien. Krom toho zskan informace o grafickm rozlien me bt zkreslen, protoe nastaven hodnoty nemus vdy odpovdat aktulnmu reimu. Proto jsem vytvoil nsledujc REXX program GRAFIKA2.CMD, kter se s tmto problmem doke kompletn vypodat. Program je nutn vytvet v textovm editoru, kter podporuje ist ASCII (nap. Systmov editor EPM). Ve vech programech vytvoench v jazyku REXX mus bt na prvnm mst koment zanajc znaky "/*", take neodstraujte vodn komente. V novm prosted Object REXX funguje program bez problm. /* GRAFIKA2.CMD */ /* Autor: Michal Pohoelsk */ /* Vytvoeno pro systm OS/2 Merlin 4.0 */ /* Program na obrazovku vype aktuln grafick rozlien systmu. */ /* Aktivuji knihovnu funkc REXXUTIL */ IF RxFuncQuery("SysLoadFuncs") THEN DO CALL RxFuncAdd "SysLoadFuncs", "RexxUtil", "SysLoadFuncs" CALL SysLoadFuncs END /* ---------------- */ /* Zskvm systmov rozlien */ PARSE VALUE GrafickeRozliseniSys() with XR YR PocetBarev ZGrRozliseni /* Zobrazuji aktuln grafick reim */ CALL SysCls SAY " ";SAY " " SAY " System nyni pracuje v grafickem rozliseni: " ||, XR || "x" || YR || " s " || PocetBarev || " barvami" /* Zobrazuji varovn o platnosti zobrazench daj */ IF ZGrRozliseni = 1 THEN DO SAY " " SAY " POZOR ! Uvedene rozliseni neni platne, protoze nebyl proveden" SAY " novy start systemu !" SAY " Ukoncete, prosim, cinnost vsech aplikaci. Potom ukoncete praci" SAY " systemu a stisknete RESET." SAY " Po novem spusteni zacne system pouzivat zobrazene rozliseni !" END EXIT 0 /* Hlavn procedura programu */ GrafickeRozliseniSys: PROCEDURE PARSE VALUE 0 0 0 0 WITH XHodnota YHodnota PocetBarev ZmenaPlatnosti /* Instaluji lokln error handler */ SIGNAL ON SYNTAX NAME InterniChybaObrazovky /* Natm binrn hodnoty grafickho rozlien */ HodnotaEntryInBin = SysIni( "USER" ,, "PM_DISPLAYDRIVERS" ,, "DEFAULTSYSTEMRESOLUTION" ) /* Ovuji aktivn platnost nastavenho graf. rozlien */ ZGrRozliseni = SysIni( "USER" ,, "PM_DISPLAYDRIVERS" ,, "RESOLUTION_CHANGED" ) IF ZGrRozliseni = "1" || "00"x then ZGrRozliseni = 1 ELSE ZGrRozliseni = 0 /* Konvertuji binrn hodnoty na HEX hodnoty */ HodnotaEntryInHex = c2x( HodnotaEntryInBin ) PARSE VAR HodnotaEntryInHex 1 XHodnota, 9 YHodnota, 17 PocetBarev, 25 NeznamaHod1, 33 NeznamaHod2 /* Konvertuji hexadecimln hodnoty na normln */ XHodnota = x2d( LSB_MSB( XHodnota )) YHodnota = x2d( LSB_MSB( YHodnota )) PocetBarev = x2d( LSB_MSB( PocetBarev )) /* Nepovedlo se zskat potebn daje */ NeznamaHod1 = x2d( LSB_MSB( NeznamaHod1 )) NeznamaHod2 = x2d( LSB_MSB( NeznamaHod2 )) /* Nsledujc kd se aktivuje pi libovoln chyb */ InterniChybaObrazovky: RETURN XHodnota YHodnota PocetBarev ZGrRozliseni LSB_MSB: PROCEDURE RETURN strip( translate( "12345678", arg(1), "78563412" )) Pesmrovn diskovch operac Manipulacm s logickmi disky se obas nevyhne dn uivatel modernho potae. Uivatel operanho systmu OS/2 a starch verz systmu MS-DOS (verze 3.2, 3.3, 4.01 a 5.0) maj k dispozici zajmav pkaz ASSIGN. Tento DOS pkaz slou k pesmrovn operac z urenho diskovho zazen na jin diskov zazen tak, e piad psmeno jednotky jin jednotce. Pkaz rovnا skryje skuten typ zazen ped pkazy, kter pracuj s aktulnmi infor- macemi o diskovch jednotkch. Pestoe je ASSIGN podrobn popsn v grafick npovd systmu OS/2 Warp i OS/2 Merlin, nenajdete v n informace o nedokumentovanm parametru: ASSIGN /S Uveden parametr um zobrazit aktuln aktivitu pkazu (S = STATUS) v textov relaci. Pkaz lze uvedenm zpsobem pouvat v OS/2 Warp 3.0 i v OS/2 Merlin 4.0. Editor KLASIK v prosted WPS V souasn dob pracuje vtina textovch editor v grafickm prosted Windows, OS/2 nebo XWindow, kter nepedstavuje pro procesor Pentium vznamnou ztا. Znan st zbylch editor pracuje v grafickm reimu pod systmem DOS. Tyto zbyl textov editory mohou bt samozejm tak spoutny z textov DOS relace pod systmem OS/2 Merlin a nen pitom dleit nastaven etiny. Pouvme-li esk textov editor KLASIK verze 3.0, kter normln pracuje v reimu VGA, meme ovem narazit na fatln problmy. V editoru KLASIK meme v menu Aplikace zvolit funkci Nastaven systmu, kter obsahuje subfunkci Obrazovka. Kdy v rmci subfunkce Obrazovka nastavme reim VESA VBE (800 x 600 s 16 barvami, 640 x 400 s 256 barvami, 640 x 480 s 256 barvami nebo 800 x 600 s 256 barvami), pikeme sice editoru pracovat od ptho sputn v definovanm grafickm rozlien, ale tm si zrove znan zkomplikujeme ivot. KLASIK pracujc v reimu VESA VBE toti nesn pepnn loh pomoc Seznamu oken ve WPS pes znmou zkratku klves CTRL+ESC. Pepnut do WPS pracuje bez problm, ale pi nvratu do editoru KLASIK dojde k jeho "zatuhnut" a jedinou monost je nsiln ukonen DOS relace s rizikem, e oteven textov soubor bude pokozen. Pitom v reimu VGA se KLASIK chov zcela korektn. Proto doporuuji pouvat KLASIK v rmci OS/2 (Merlin i Warp) pouze ve standardnm reimu VGA. Michal Pohoelsk Borland C++ Builder 4: Zptn kompatibilita V na recenzi Borland C++ Builderu 4 (Chip 4/99) jste si mohli vimnout poznmky o tom, e knihovna VCL verze 4.0 nen pln kompatibiln s knihovnou VCL 3.0. Podvejme se na rozdly mezi nimi podrobnji. Pitom budeme hovoit o penosu projekt z C++ Builderu 3 do C++ Builderu 4; penos opanm smrem bude spe vzcnost. Nov vlastnosti Prvn zmna spov v tom, e komponenty v nov verzi mohou mt nkter nov vlastnosti (property) - meme nap. definovat kotvy (vlastnost Anchors), meme pedepsat maximln nebo minimln velikost (vlastnost Constraints) atd. Nov vlastnosti ovem nebrn penosu projektu z verze 3.0 do verze 4.0, nebo implicitn hodnoty novch vlastnost jsou takov, e se komponenty chovaj stejn jako v pedchoz verzi. Vytven oken Pi penosu projekt z verze 3 do verze 4 narazme na podivn chovn oken pi vytven - pesnji na zmnn poad voln konstruktoru, resp. destruktoru okna a vzniku udlost OnCreate, resp. OnDestroy. Rozdl v chovn obou verz si nejsnze pedvedeme na jednoduchm programu. Vytvome nov projekt volbou File | New Application; souborm i formuli ponechme pro jednoduchost jmna, kter pro n navrhne prosted. Pak oteveme hlavikov soubor Unit1.h a do definice tdy okna doplnme deklaraci destruktoru virtual __fastcall TForm1(); V inspektoru objekt pejdeme na kartu Events (udlosti) a vytvome handlery pro udlosti OnCreate a OnDestroy. Konstruktor, destruktor a oba handlery budou mt jedin kol - vypsat zprvu o tom, e se tato funkce vol: __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { Application->MessageBox("Konstruktor TForm1", "Prv te", MB_OK); } void __fastcall TForm1::FormCreate(TObject *Sender) { Application->MessageBox("OnCreate", "Prv te", MB_OK); } __fastcall TForm1::~TForm1() { Application->MessageBox("Destruktor TForm1", "Prv te", MB_OK); } void __fastcall TForm1::FormDestroy(TObject *Sender) { Application->MessageBox("OnDestroy", "Prv te", MB_OK); } Pelome-li tento program v C++ Builderu 3.0, objev se pi sputn zprvy v poad Konstruktor TForm1 OnCreate a pi ukonen OnDestroy Destruktor TForm1 Jestlie tento projekt peneseme do C++ Builderu 4.0, pelome ho a spustme, objev se pi sputn zprvy v poad OnCreate Konstruktor TForm1 a pi ukonen Destruktor TForm1 OnDestroy Tato zmna me pinst nepjemn pote: Nkter programy, vytvoen ve verzi 3, sice bez problm pelo i v C++ Builderu verze 4, avak po sputn ohls nap. poruen ochrany pamti, nebo se pokus pracovat s komponentami, kter jet nebyly vytvoeny. een je jednoduch. Tda okna obsahuje vlastnost OldCreateOrder typu bool, kter uruje, kdy nastane udlost OnCreate, resp. OnDestroy. Tato vlastnost m zajiovat zptnou kompatibilitu s C++ Builderem verze 1, z jakchsi zhadnch dvod se vak nastavuje na true pi penosu projektu z verze 3 do verze 4. Nezbv tedy, ne zmnit ji run. Metody a funkce Dal zmna, o kter budeme hovoit, se tk novch parametr u nkolika metod a globlnch funkc. Nsledujc tabulka ukazuje jejich pehled. TControl::BeginDrag TFieldDef::CreateField TClientDataSet::AddIndex TClientDataSet::CloneCursor TClientDataSet::LoadFromFile TClientDataSet::SaveToFile TTable::AddIndex DatabaseError DatabaseErrorFmt TIMemoryStream TFieldDef::TFieldDef Tyto zmny mohou zpsobit, e projekt vytvoen v pedchoz verzi nepjde peloit. Nezbude tedy nic jinho, ne vyhledat chyby a doplnit nov parametry. Vlastnost Fields Posledn zmna, kter me zpsobit problmy, se tk pstupu k jednotlivm polm datov mnoiny pomoc vlastnosti Fields. V pedchoz verzi mla tda TDataSet (a tedy i tdy od n odvozen, nap. TTable, TQuery a dal) vlastnost Fields, kter pedstavovala pole databzovch sloupc. V souasn verzi je vlastnost Fields objekt typu TFie- lds, kter m mimo jin vlastnost Fields pedstavujc pole databzovch sloupc. To znamen, e nap. pkaz String jmeno = Dotaz->Fields[0]->FieldName; kter fungoval v C++ Builderu 3, musme zmnit na String jmeno = Dotaz ->Fields->Fields[0]->FieldName; Visual C++ 5.0 a 6.0: Virtuln ddn opertor petypovn V pekladach Microsoft Visual C++ 5.0 a 6.0 se setkme s nsledujc chybou. Pedstavte si, e ve td A definujeme jako metodu opertor petypovn nap. na typ int, tedy metodu A::operator int(). Jestlie tuto tdu pouijeme jako spolenho pedka a odvodme dva virtuln potomky, nap. tdy B a C, a od nich pak spolenho potomka, tdu D, pak peklada nedoke zddn opertor petypovn pout pro instanci tdy D. Pokud vm to pipad komplikovan, podvejte se na pklad: class A // Spolen pedek { public: operator int(){ return 1; } int f() {return 1;} }; // Virtuln potomci B a C class B: public virtual A {}; class C: public virtual A {}; // Spolen potomek class D: public B, public C {}; int main() { D d, e, f; int i = e; // Zde peklada // ohls chybu return 0; } Pi pekladu pkazu int i = e; ve funkci main() bude peklada hledat zpsob, jak pevst instanci typu D na hodnotu typu int. Takovou cestu pedstavuje prv funkce A::operator int() zddn po td A. Tda D ji sice zdd dvma cestami, ale pouze jednou, nebo A je virtuln pedek td B a C, take instance tdy D obsahuje jedin podobjekt tdy A. To znamen, e hlen pekladae o nejednoznanosti petypovacho opertoru je chybn. Ostatn pro jin funkce tento problm nenastane - o tom se snadno pesvdme, jestlie do funkce main() pidme pkaz i = e.f(); Pokud se vm zd, e jde o nepravdpodobnou a nepouvanou konstrukci, pak se podvejte na nsledujc pklad, kter najdete ve vtin bاnch uebnic C++: #include using namespace std; void main() { fstream F("data.dta", ios::in); if(F) // Zde opt ohls // peklada chybu {/* ...pouijeme F ... */ } } V podmnce pkazu if jsme zapsali identifiktor datovho proudu. To by mlo bt v podku, nebo tda fstream obsahuje opertor petypovn na void*, kter vrac 0, pokud se nepoda posledn operace s proudem - zde nap. oteven souboru. Jde tedy o jednoduch nstroj pro test stavu proudu. Tento opertor je definovn ve td ios, odkud jej zdd dva virtuln potomci, tdy istream a ostream. Tda fstream je pak jejich spolenm potomkem. I zde ovem peklada Visual C++ 5.0 a 6.0 ohls, e nedoke jednoznan urit, kter opertor pout, i kdy m jen jeden. Poznamenejme, e tento problm se neobjevuje ve vech situacch. Napklad jin bاn programtorsk obrat, pouvan pro ten ze souboru, fstream F("data.dta", ios::in); int i; while(F >> i) Zpracuj(i); se pelo bez problm, i kdy vlastn znamen tot. Vsledkem (hodnotou) operace F >> i je proud F po ukonen ten, a ten se zde implicitn konvertuje na pomoc funkce operator void*() na hodnotu, kter ukazuje, zda se ten podailo. Miroslav Virius