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 op╪t s mal∞m náτupem rad, jak si zp²íjemnit i ulehƒit kaºdodenní práci s poƒítaƒem a jeho aplikacemi...
Word
Kapitálky
Nadpisy vypadají hezky, jsou-li napsány písmem ve stylu kapitálek. V n╪m jsou vτechna zapsaná malá písmena p²evedena na velká a zapsaná velká písmena jsou v╪tτí. Nap². ZATM╖N╓ SLUNCE V MA╥ARSKU.
Na kapitálky màºeme zm╪nit vybran∞ text p²íkazem FORM╡T|P╓SMO a oznaƒením stylu "Kapitálky". Pouºíváme-li kapitálky ƒast╪ji, je vhodné zm╪nu vyvolat klávesovou zkratkou. Vytvo²íme ji tak, ºe zadáme p²íkaz N╡STROJE|VLASTN╓, stiskneme tlaƒítko "Klávesnice", vyhledáme kategorii "Formát" a p²íkaz "Kapitálky". Zjistíme, ºe od v∞robce softwaru je p²i²azena klávesová zkratka Ctrl+Shift+K, ta vτak ve verzi 97 a 2000 nefunguje. P²i²adíme si tedy jinou. Postavíme kurzor do políƒka "Stiskn╪te klávesovou zkratku" a stiskneme nap². kombinaci kláves Alt+Ctrl+Shift+K. Ta není nikde pouºita. V políƒku "Zm╪ny uloºit do" ponecháme obecnou τablonu "Normal.dot". Volbu potvrdíme tlaƒítkem "P²i²adit" a dvakrát za sebou stiskneme tlaƒítko "Zav²ít". Kdyº nyní oznaƒíme text jako blok a na klávesnici stiskneme zadanou klávesovou zkratku, zformátuje se text na kapitálky.
Poznámka: Ve Wordu verze 5 a 95 kombinace kláves Ctrl+Shift+K funguje. Text se na kapitálky zformátuje.
Symbol
Pokud ƒasto pouºíváme n╪jak∞ znak, nap². telefon, obálky, τipky, nemusíme zadávat p²íkaz VLOªIT|SYMBOL, na kart╪ "Symbol" vybrat znakovou sadu Wingdings, oznaƒit znak, stisknout klávesu "Vloºit" a následn╪ "Zav²ít". Màºeme si pro tyto znaky vytvo²it klávesovou zkratku.
Zadáme p²íkaz VLOªIT|SYMBOL, na kart╪ "Symboly" vybereme písmo, nap². Wingdings, a oznaƒíme symbol, pro kter∞ chceme klávesovou zkratku vytvo²it (nap²íklad telefon). Stiskneme tlaƒítko "Klávesová zkratka", do políƒka "Stiskn╪te klávesovou zkratku" (ve verzi 5 a 95 "Stiskn╪te novou klávesovou zkratku") umístíme kurzor a stiskneme klávesy, nap². Alt+Ctrl+Shift+T. V políƒku "Zm╪ny uloºit do" ponecháme obecnou τablonu "Normal.dot". Stiskneme tlaƒítko "P²i²adit", "Zav²ít" a jeτt╪ jednou "Zav²ít". Po stisku zadané kombinace kláves je nyní znak do textu vloºen bez nutnosti cokoli vybírat a zkratka je pouºitelná v libovolném nov╪ zaloºeném dokumentu.
Obrázek
Pro vkládání obrázku ze souborà se pouºívá p²íkaz VLOªIT|OBR╡ZEK|ZE SOUBORU (ve verzi 5 a 95 VLOªIT|OBR╡ZEK), následuje vyhledání sloºky a obrázku. I tuto ƒinnost lze usnadnit pouºitím klávesové zkratky. Zadáme p²íkaz N╡STROJE|VLASTN╓ (ve verzi 5 N╡STROJE|UPRAVIT), stiskneme tlaƒítko "Klávesnice" (ve verzi 5 a 95 je to karta "Klávesnice"), vybereme kategorii "Vloºit" (ve verzi 5 "Vloºení") a p²íkaz "Vloºit obrázek" (ve verzi 5 a 95 jde o p²íkaz "InsertPicture") a do políƒka "Stiskn╪te klávesovou zkratku" (ve verzi 5 a 95 "Stiskn╪te novou klávesovou zkratku") uvedeme nap². Alt+Ctrl+ Shift+O. V políƒku "Zm╪ny uloºit do" ponecháme obecnou τablonu "Normal.dot". Volbu potvrdíme tlaƒítkem "P²i²adit" a dvakrát za sebou stiskneme tlaƒítko "Zav²ít".
Nyní se po stisku zadané klávesové zkratky zobrazí p²ímo posledn╪ pouºitá sloºka s obrázky, lze je tedy vkládat velice operativn╪.
Zobrazíme-li p²íkaz VLOªIT|OBR╡ZEK|ZE SOUBORU (ve verzi 5 a 95 VLOªIT|OBR╡ZEK), bude po jeho stran╪ námi zvolená klávesová zkratka.
Zruτení dopln╪n∞ch klávesov∞ch zkratek
Vτechny klávesové zkratky, tedy jak pro formátování a vloºení znaku, tak pro p²íkaz, zruτíme velice snadno. Zadáme p²íkaz N╡STROJE|VLASTN╓, stiskneme tlaƒítko "Klávesnice" a následn╪ tlaƒítko "Obnovit vτe". Návrat ukonƒíme tlaƒítky "Zav²ít".
Uvedené návody màºete vzít jako nám╪t nebo inspiraci pro zjednoduτení zadávání jin∞ch akcí.
Excel
Excel 2000 spustit jen 1x
Aplikaci Excel 2000 màºeme spustit v nabídce START|PROGRAMY|MICROSOFT EXCEL, stiskem tlaƒítka v panelu zástupcà Office, nebo pokud jsme vytvo²ili zástupce na pracovní ploτe, stiskem této ikony. Soubory otev²eme poklepáním na n╪ v pràzkumníku nebo po zadání p²íkazu SOUBOR|OTEVⁿ╓T.
Kaºd∞ seτit má své tlaƒítko na hlavním panelu Windows. Mezi seτity lze p²epínat stiskem tohoto tlaƒítka nebo klávesovou zkratkou Alt+Tab.
Excel bychom m╪li spustit jen jednou. Nesmíme opakovan╪ pouºít v∞τe uvedené postupy, nebo£ by se Excel spustil znovu a u poƒítaƒe neopl∞vajícího velkou vnit²ní pam╪tí by doτlo ke zpomalení reakcí.
Ve Wordu 2000 toto nebezpeƒí nehrozí. Aplikace se spustí vºdy jen jednou, by£ ji znovu spustíme z nabídky START|PROGRAMY.
Skok na poslední buσku v. 5, 95, 97 a 2000
Na nejzazτí buσku s daty (poslední sloupec a poslední ²ádek) p²esuneme buσkov∞ kurzor klávesovou zkratkou Ctrl+End. Zruτíme-li hodnotu v této buσce, budeme se touto klávesovou zkratkou p²esouvat stále na poslední buσku, by£ je jiº prázdná.
Staƒí vτak seτit uloºit, nap². klávesovou zkratkou Ctrl+S nebo klasicky p²íkazem SOUBOR|ULOªIT, a buσkov∞ kurzor se bude p²esouvat na skuteƒn╪ poslední zapln╪nou buσku na listu.
Automaticky otevíran∞ soubor
Pracujeme-li delτí dobu s n╪jak∞m souborem, màºeme si jeho otevírání usnadnit. Otev²eme ho jiº p²i spuτt╪ní Excelu. V Excelu existuje sloºka XLStart a soubory do ní uloºené se p²i spuτt╪ní Excelu automaticky otev²ou.
Sloºka pro automatické otevírání 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 zajímavá tím, ºe má dv╪ sloºky 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é sloºky soubor umístíme - vºdy se p²i spuτt╪ní Excelu vτechny soubory umíst╪né v uveden∞ch sloºkách otev²ou.
Automaticky se téº otev²ou vτechny soubory, se kter∞mi màºe Excel pracovat, umístíme-li je do sloºky zapsané na kart╪ "Obecné" v poloºce "Alternativní umíst╪ní spouτt╪cích souborà" (po zadání p²íkazu N╡STROJE|MOªNOSTI). Ve verzi 5 jde o p²íkaz N╡STROJE|PⁿEDVOLBY, karta "Obecné" a poloºka "Druhé umíst╪ní souborà", a ve verzi 95 o p²íkaz N╡STROJE|MOªNOSTI, karta "Obecné", poloºka "Druhé umíst╪ní souborà".
Automatizace ve Word 97 a 2000 cz
Automatizace p²i psaní
Word umoºσuje n╪které ƒinnosti automatizovat. Zapíτeme-li *text* (text ve hv╪zdiƒkách bez mezer), hv╪zdiƒky zmizí a dojde k automatickému p²eformátování na "tuƒné" písmo. Pouºijeme-li na zaƒátku a konci slova podtrºítka, ²ez slova se zm╪ní na kurzívu. Tato úprava se vτak automaticky provede jen tehdy, kdyº po zadání p²íkazu N╡STROJE|AUTOMATICKÉ OPRAVY, je na kart╪ "P²i psaní" oznaƒeno políƒko "*Tuƒné* a _ kurzívu _ skuteƒn∞m formátováním".
Spodní ƒáru pod odstavcem lze vytvo²it automaticky. Nejprve zkontrolujeme, zda je po zadání p²íkazu N╡STROJE|AUTOMATICKÉ OPRAVY na kart╪ "P²i psaní" oznaƒena poloºka "Ohraniƒení". Stiskneme-li potom opakovan╪ (min. 3x) n╪kter∞ z t╪chto znakà, zakreslí se ƒára.
- pomlƒka tenká ƒára
_ podtrºítko tlustá ƒára
= rovnítko dvojitá ƒára
* hv╪zdiƒka tlustá p²eruτovaná ƒára
# tenká-tlustá-tenká
~ tilda vlnovka
Ty se vytvo²í pod odstavcem nad t╪mito znaky.
Pokud budeme chtít ƒáru pod odstavcem smazat, nemàºeme pouºít klávesu Delete nebo Backspace. Se zruτením ƒar se nebudeme trápit. Postavíme kurzor do podtrºeného odstavce, zadáme p²íkaz FORM╡T | OHRANI¼EN╓ A ST╓NOV╡N╓ a na kart╪ "Ohraniƒení" stiskneme tlaƒítko "ªádné" nebo klepneme myτí na obrázek. ¼áru tak zruτíme.
Psaní ƒíslovan∞ch seznamà si màºeme zjednoduτit. Op╪t zadáme p²íkaz N╡STROJE|AUTOMATICKÉ OPRAVY, na kart╪ "P²i psaní" oznaƒíme pole "Automaticky ƒíslování". Zapíτeme-li zkraje odstavce ƒíslo nebo písmeno (malé nebo velké) následované teƒkou a mezerou nebo tabulátorem, tak se po stisku klávesy Enter zm╪ní na ƒíslovan∞ (ƒi abecední) seznam a automaticky se vytvo²í dalτí poloºka. Vytvá²ení ukonƒíme opakovan∞m stiskem klávesy Enter (2x) nebo smazáním poslední poloºky klávesou Backspace.
P²i psaní jsou vτak zvláτtnosti:
? Pouºijeme-li jako první znak písmeno i, resp. I, obdrºíme ƒíslování ²ímsk∞mi ƒíslicemi, mal∞mi resp. velk∞mi.
? Pokud nezaƒneme od jedniƒky, musíme pro vyvolání ƒíslování pouºít za ƒíslicí tabulátor. Pouºijeme-li mezeru, k automatickému ƒíslování nedojde.
? Pokud nezaƒneme od písmene a, resp. A, musíme za písmenem pouºít tabulátor. Pouºijeme-li mezeru, k automatickému oznaƒení nedojde.
? P²edchází-li vytvá²enému seznamu jin∞ seznam a zapíτeme ƒíslici o jednotku v╪tτí, resp. dalτí písmeno v abeced╪, vyhodnotí procesor, ºe chceme v ƒíslování pokraƒovat a na p²edchozí seznam naváºe. Zde pouºijeme k odd╪lení mezeru. Mezi seznamy màºe b∞t i n╪kolik odstavcà textu. (Platí jen pro Word verze 2000.)
Jsou vτak situace, kdy nám màºe automatické ƒíslování vadit. Nap². p²i psaní strukturovaného ºivotopisu. Napíτeme rok ƒi ƒasov∞ interval, odskok provedeme klávesou Tabulátor, zapíτeme ƒinnost a po stisku klávesy Enter máme dopln╪n∞ rok (nebo interval) o jednotku v╪tτí. Vrátíme se zp╪t a po stisku klávesy Enter to vyjde nastejno. Pomoc je p²itom snadná - zruτíme oznaƒení poloºky "Automaticky ƒíslování".
Na kart╪ "P²i psaní" je téº poloºka "Automaticky odráºky". P²i oznaƒené poloºce máme usnadn╪né psaní odráºek. Zapíτeme-li zkraje odstavce vybrané znaky, za nimi mezeru nebo tabulátor, zm╪ní se po stisku klávesy Enter na odráºky a automaticky se vytvo²í dalτí odráºka. Seznam ukonƒíme opakovan∞m stiskem klávesy Enter (2x) nebo smazáním poslední odráºky klávesou Backspace. A nyní ke znakàm: * (hv╪zdiƒka) se zm╪ní na ? (puntík), > na ?, - (pomlƒka) bude zachovaná, - (dv╪ pomlƒky) vytvo²í ? a písmeno "o" následované tabulátorem vytvo²í ?. Jedno²ádkovou tabulku vytvo²íme snadno zápisem série pomlƒek (rovnítek ƒi podtrºítek) a znamének plus, kde kaºdá dvojice znamének plus odpovídá jednomu sloupci. Po stisku klávesy Enter se automaticky vytvo²í tabulka. Orientaƒn╪ pro zápis jednoho ƒísla do tabulky pot²ebujeme dv╪ pomlƒky. Nap².: +--+--+. Automatické vytvá²ení tabulek vypneme p²íkazem N╡STROJE|AUTOMA- TICKÉ OPRAVY, kde na kart╪ "P²i psaní" zruτíme oznaƒení poloºky "Tabulky".
Dalτí sloupce a ²ád-ky doplníme p²íkazem TABULKA|VLOªIT SLOUPCE, VLOªIT ⁿ╡DKY a u verze Wordu 2000 p²íkazy TABULKA|VLOªIT|SLOUPCE NALEVO, SLOUPCE NAPRAVO, ⁿ╡DKY NAD A ⁿ╡DKY POD.
A jeτt╪ k protivn∞m velk∞m písmenàm po teƒkách za ƒíslicemi ve v╪t╪. To souvisí s poloºkou "Velká písmena na zaƒátku v╪t" na kart╪ "Opravy" po zadání p²íkazu Nástroje|Automatické opravy. Zruτme oznaƒení poloºky a je po problému. No, zaƒátek v╪t musíme kontrolovat jiº sami.
Perliƒka na záv╪r. Kdyº se na Vás bude n╪kdo vytahovat, tak mu ud╪lejte malou zlomyslnost. Ve Wordu zadejte p²íkaz N╡STROJE|AUTOMATICKÉ OPRAVY a na kart╪ "Opravy" do políƒka "Nahrazovat" zapiτte 1 a do políƒka "za:" napiτte "Nazdar µmoulo!. ¼i jinou vtipnou sentenci. Zápis potvrdíme stiskem tlaƒítka "P²idat". Nyní, kdyº ve Wordu, ale i v Excelu nebo£ jsou náhrady spoleƒné, napíτete 1 zobrazí se ona sentence. A te╘ a£ se "vejtaha" ukáºe! Neºádoucí náhradu odstraníme tak, ºe ji na kart╪ "Opravy" vybereme a stiskneme tlaƒítko "Odstranit".
V╪tτinu t╪chto moºností poskytuje i Word 95 (resp. jeho pàvodní oznaƒení v. 7), i kdyº se v dialogov∞ch oknech tyto moºnosti nenastavují. V této verzi nelze vytvá²et tabulky zápisem znakà.
Milan Broº
Control Panel 3.1
P╪kné nové logo
P╪kné firemní logo, které se zobrazuje p²i startu, je nedílnou souƒástí kaºdého sluτného operaƒního systému. Control Panel verze 3.x (CP) není samoz²ejm╪ ºádnou v∞jimkou. Pokud vτak pracujete s CP intenzivn╪ (neustále opakovan∞ pohled na jeden obrázek není p²íliτ vzruτující), màºe vás zobrazované logo zaƒít rozƒilovat. P²itom kaºd∞ uºivatel màºe snadno donutit svàj CP, aby zaƒal zobrazovat tém╪² libovoln∞ zajímav∞ obrázek jako logo. Staƒí dodrºet následující postup:
1. Firemní logo je uloºeno jako obrázek v souboru CPLOGO.LGO, kter∞ je umíst╪n v adresá²i C:\CP. Systém CP vτak grafick∞ formát LGO vàbec nezná. Musíme si tedy uv╪domit, ºe za p²íponou LGO se skr∞vá jin∞ grafick∞ formát - InView icon formát (*.ICO).
2. Pàvodní soubor CPLOGO.LGO p²ejmenujeme na CPLOGO.LXX.
3. Nyní si vybereme svàj oblíben∞ obrázek v grafickém formátu PCX, GIF, TIF, BMP, SCR, IMG (InView), JPG, PNG, WPG, TGA, CUT, MAC nebo XBM. Fyzická velikost budoucího loga vτak musí odpovídat grafickému rozliτení, které v rámci CP pouºíváme. Jestliºe pouºíváme grafick∞ reºim 800 x 600 bodà, maximální rozumná velikost loga je asi 570 x 400 bodà.
4. Vybran∞ obrázek v CP naƒteme do pomocné aplikace Obrázek. Ov╪²íme si velikost obrázku a jeho neporuτenost. Funkcí Uloºit jako (horká klávesa Ctrl+A) aktivujeme dialogové okno. Zde zvolíme typ souboru - InView icon formát.
5. Následn╪ se objeví dialog - Uloºení obrázkà. Zde nastavíme reºim 256 barev a ponecháme pàvodní velikost obrázku *.ICO (ikony).
6. Po uloºení obrázku ukonƒíme prost²edí CP a v libovolném souborovém manaºeru p²ejmenujeme práv╪ vytvo²en∞ obrázek na CPLOGO.LGO.
7. Nyní se p²i startu CP bude vºdy zobrazovat naτe p╪kné nové logo.
Tento trik perfektn╪ funguje i v systému CP 3.0.
Merlin
Seznam definovan∞ch tiskáren
Mezi nejdàleºit╪jτí vlastnosti kaºdého OS nepochybn╪ pat²í schopnost kvalitního tisku dokumentà na drtivé v╪tτin╪ dnes pouºívan∞ch inkoustov∞ch a laserov∞ch tiskáren. Prakticky kaºd∞ OS nabízí sv∞m uºivatelàm grafické nástroje, které umí zobrazit kompletní seznam aktuáln╪ p²ipojen∞ch tiskáren s komfortními moºnostmi jejich nastavení. Do horτí situace se ovτem dostane uºivatel, kter∞ pot²ebuje získat seznam tiskáren v rámci celoobrázkové textové relace. Proto vás moºná pot╪τí následující REXX program TISKARNA.CMD, kter∞ vypíτe vτechny tiskárny definované v systému. U kaºdé tiskárny navíc zobrazí port, frontu a ovladaƒ tiskárny.
Program je nutné vytvá²et v textovém editoru, kter∞ podporuje ƒisté ASCII
(nap². Systémov∞ editor EPM). Ve vτech programech vytvo²en∞ch v jazyku REXX musí b∞t na prvním míst╪ komentá² zaƒínající znaky "/*", takºe neodstraσujte úvodní komentá²e. V novém prost²edí Object REXX funguje program bez problémà.
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 adresá²i
Uºivatelé operaƒního systému t²ídy DOS (MS-DOS, PC-DOS, Novell DOS) si jiº dlouho mohou p²ejmenovat libovoln∞ soubor (soubory) pomocí vτeobecn╪ známého interního p²íkazu - RENAME. P²estoºe tento p²íkaz byl jiº samoz²ejmou souƒástí systému MS-DOS 3.0, kter∞ byl aktuální v roce 1985, dodnes se p²i jeho pouºití uºivatelé musí smi²ovat s jedním nedostatkem. Práce se soubory je sice jednoduchá, ale s p²ejmenováním adresá²à je to v∞razn╪ horτí. Název adresá²e je prost╪ "nedotknuteln∞".
Uºivatelé OS/2 jsou ovτem ve v∞hod╪. V rámci textové DOS relace màºe uºivatel pouºít u p²íkazu RENAME nedokumentovan∞ parametr
RENAME /S,
kter∞ donutí p²íkaz p²ejmenovat libovoln∞ adresá². P²íkaz lze uveden∞m zpàsobem pouºívat v OS/2 Warp 3.0 i v OS/2 Merlin 4.0. V textové relaci OS/2 uveden∞ parametr nefunguje, protoºe p²ejmenovávat adresá²e zde pat²í mezi samoz²ejmé schopnosti identického p²íkazu.
P²epínání mezi aplikacemi
Mezi mén╪ viditelné, ale p²esto velmi p²íjemné novinky systému OS/2 Merlin pat²í p²epínání programà pomocí klávesové zkratky Alt+Tab, kterou dob²e znají uºivatelé Windows. Díky tomu lze snadn╪ji p²ejít z 16bitov∞ch Windows do pln╪ 32bitového prost²edí OS/2. P²epínání programà pomocí Alt+Tab vτak bohuºel funguje pouze v grafickém prost²edí. Uºivatelé textov∞ch aplikací (OS/2 i DOS) tedy mají smàlu.
Naτt╪stí vτak existuje freewarov∞ prográmek LSwitcher verze 1.0, kter∞ umí uvedené omezení jednoduτe obejít. Staƒí umístit soubor LSWITCH.EXE do sloºky Spustit p²i startu, upravit ve stejném duchu systémov∞ DOS soubor AUTOEXEC.BAT a ukonƒit práci systému. Po novém startu màºeme vesele pouºívat zkratku Alt+Tab v jakékoliv situaci. Jestliºe stiskneme klávesu Shift souƒasn╪ s Alt+Tab, p²epínání programà bude probíhat v obráceném po²adí. Program LSwitcher je moºné s menτím komfortem vyuºívat i v OS/2 Warp 3.0. V p²ípad╪ pot²eby lze LSwitcher snadno deaktivovat souƒasn∞m stisknutím Ctrl+Alt+U.
Grafick∞ reºim systému
Nastavení vhodného grafického rozliτení, které optimáln╪ vyuºívá schopností monitoru i grafické karty a zároveσ je ergonomické, pat²í mezi základní starosti kaºdého uºivatele v libovolném grafickém operaƒním systému. V╪tτina systémà vƒetn╪ OS/2 p²itom nabízí komfortní nástroje umoºσující optimální volbu grafického reºimu. Ve v∞razn╪ horτí situaci se vτak ocitne uºivatel, kter∞ pot²ebuje v rámci textové relace zjistit nastavené grafické rozliτení. Krom╪ toho získaná informace o grafickém rozliτení màºe b∞t zkreslená, protoºe nastavené hodnoty nemusí vºdy odpovídat aktuálnímu reºimu.
Proto jsem vytvo²il následující REXX program GRAFIKA2.CMD, kter∞ se s tímto problémem dokáºe kompletn╪ vypo²ádat. Program je nutné vytvá²et v textovém editoru, kter∞ podporuje ƒisté ASCII (nap². Systémov∞ editor EPM). Ve vτech programech vytvo²en∞ch v jazyku REXX musí b∞t na prvním míst╪ komentá² zaƒínající znaky "/*", takºe neodstraσujte úvodní komentá²e. V novém prost²edí Object REXX funguje program bez problémà.
Manipulacím s logick∞mi disky se obƒas nevyhne ºádn∞ uºivatel moderního poƒítaƒe. Uºivatelé operaƒního systému
OS/2 a starτích verzí systému MS-DOS (verze 3.2, 3.3, 4.01 a 5.0) mají k dispozici zajímav∞ p²íkaz ASSIGN. Tento DOS p²íkaz slouºí k p²esm╪rování operací z urƒeného diskového za²ízení na jiné diskové za²ízení tak, ºe p²i²adí písmeno jednotky jiné jednotce. P²íkaz rovn╪º skryje skuteƒn∞ typ za²ízení p²ed p²íkazy, které pracují s aktuálními infor- macemi o diskov∞ch jednotkách. P²estoºe je ASSIGN podrobn╪ popsán v grafické nápov╪d╪ systému OS/2 Warp i OS/2 Merlin, nenajdete v ní informace o nedokumentovaném parametru:
ASSIGN /S
Uveden∞ parametr umí zobrazit aktuální aktivitu p²íkazu (S = STATUS) v textové relaci. P²íkaz lze uveden∞m zpàsobem pouºívat v OS/2 Warp 3.0 i v OS/2 Merlin 4.0.
Editor KLASIK v prost²edí WPS
V souƒasné dob╪ pracuje v╪tτina textov∞ch editorà v grafickém prost²edí Windows, OS/2 nebo XWindow, které nep²edstavuje pro procesor Pentium v∞znamnou zát╪º. Znaƒná ƒást zbyl∞ch editorà pracuje v grafickém reºimu pod systémem DOS. Tyto zbylé textové editory mohou b∞t samoz²ejm╪ také spouτt╪ny z textové DOS relace pod systémem OS/2 Merlin a není p²itom dàleºité nastavení ƒeτtiny.
Pouºíváme-li ƒesk∞ textov∞ editor KLASIK verze 3.0, kter∞ normáln╪ pracuje v reºimu VGA, màºeme ovτem narazit na fatální problémy. V editoru KLASIK màºeme v menu Aplikace zvolit funkci Nastavení systému, která obsahuje subfunkci Obrazovka. Kdyº v rámci subfunkce Obrazovka nastavíme reºim 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), p²ikáºeme sice editoru pracovat od p²íτtího spuτt╪ní v definovaném grafickém rozliτení, ale tím si zároveσ znaƒn╪ zkomplikujeme ºivot. KLASIK pracující v reºimu VESA VBE totiº nesnáτí p²epínání úloh pomocí Seznamu oken ve WPS p²es známou zkratku kláves CTRL+ESC. P²epnutí do WPS pracuje bez problémà, ale p²i návratu do editoru KLASIK dojde k jeho "zatuhnutí" a jedinou moºností je násilné ukonƒení DOS relace s rizikem, ºe otev²en∞ textov∞ soubor bude poτkozen. P²itom v reºimu VGA se KLASIK chová zcela korektn╪. Proto doporuƒuji pouºívat KLASIK v rámci OS/2 (Merlin ƒi Warp) pouze ve standardním reºimu VGA.
Michal Poho²elsk∞
Borland C++ Builder 4:
Zp╪tná kompatibilita
V naτí recenzi Borland C++ Builderu 4 (Chip 4/99) jste si mohli vτimnout poznámky o tom, ºe knihovna VCL verze 4.0 není pln╪ kompatibilní s knihovnou VCL 3.0. Podívejme se na rozdíly mezi nimi podrobn╪ji. P²itom budeme hovo²it o p²enosu projektà z C++ Builderu 3 do C++ Builderu 4; p²enos opaƒn∞m sm╪rem bude spíτe vzácností.
Nové vlastnosti
První zm╪na spoƒívá v tom, ºe komponenty v nové verzi mohou mít n╪které nové vlastnosti (property) - màºeme nap². definovat kotvy (vlastnost Anchors), màºeme p²edepsat maximální nebo minimální velikost (vlastnost Constraints) atd.
Nové vlastnosti ovτem nebrání p²enosu projektu z verze 3.0 do verze 4.0, nebo£ implicitní hodnoty nov∞ch vlastností jsou takové, ºe se komponenty chovají stejn╪ jako v p²edchozí verzi.
Vytvá²ení oken
P²i p²enosu projektà z verze 3 do verze 4 narazíme na podivné chování oken p²i vytvá²ení - p²esn╪ji na zm╪n╪né po²adí volání konstruktoru, resp. destruktoru okna a vzniku událostí OnCreate, resp. OnDestroy. Rozdíl v chování obou verzí si nejsnáze p²edvedeme na jednoduchém programu. Vytvo²íme nov∞ projekt volbou File | New Application; souboràm i formulá²i ponecháme pro jednoduchost jména, která pro n╪ navrhne prost²edí. Pak otev²eme hlaviƒkov∞ soubor Unit1.h a do definice t²ídy okna doplníme deklaraci destruktoru
virtual __fastcall TForm1();
V inspektoru objektà p²ejdeme na kartu Events (události) a vytvo²íme handlery pro události OnCreate a OnDestroy. Konstruktor, destruktor a oba handlery budou mít jedin∞ úkol
P²eloºíme-li tento program v C++ Builderu 3.0, objeví se p²i spuτt╪ní zprávy v po²adí
Konstruktor TForm1
OnCreate
a p²i ukonƒení
OnDestroy
Destruktor TForm1
Jestliºe tento projekt p²eneseme do C++ Builderu 4.0, p²eloºíme ho a spustíme, objeví se p²i spuτt╪ní zprávy v po²adí
OnCreate
Konstruktor TForm1
a p²i ukonƒení
Destruktor TForm1
OnDestroy
Tato zm╪na màºe p²inést nep²íjemné potíºe: N╪které programy, vytvo²ené ve verzi 3, sice bez problémà p²eloºí i v C++ Builderu verze 4, avτak po spuτt╪ní ohlásí nap². poruτení ochrany pam╪ti, nebo£ se pokusí pracovat s komponentami, které jeτt╪ nebyly vytvo²eny.
ⁿeτení je jednoduché. T²ída okna obsahuje vlastnost OldCreateOrder typu bool, která urƒuje, kdy nastane událost OnCreate, resp. OnDestroy. Tato vlastnost má zajiτ£ovat zp╪tnou kompatibilitu s C++ Builderem verze 1, z jak∞chsi záhadn∞ch dàvodà se vτak nastavuje na true p²i p²enosu projektu z verze 3 do verze 4. Nezb∞vá tedy, neº zm╪nit ji ruƒn╪.
Metody a funkce
Dalτí zm╪na, o které budeme hovo²it, se t∞ká nov∞ch parametrà u n╪kolika metod a globálních funkcí. Následující tabulka ukazuje jejich p²ehled.
TControl::BeginDrag
TFieldDef::CreateField
TClientDataSet::AddIndex
TClientDataSet::CloneCursor
TClientDataSet::LoadFromFile
TClientDataSet::SaveToFile
TTable::AddIndex
DatabaseError
DatabaseErrorFmt
TIMemoryStream
TFieldDef::TFieldDef
Tyto zm╪ny mohou zpàsobit, ºe projekt vytvo²en∞ v p²edchozí verzi nepàjde p²eloºit. Nezbude tedy nic jiného, neº vyhledat chyby a doplnit nové parametry.
Vlastnost Fields
Poslední zm╪na, která màºe zpàsobit problémy, se t∞ká p²ístupu k jednotliv∞m polím datové mnoºiny pomocí vlastnosti Fields. V p²edchozí verzi m╪la t²ída TDataSet (a tedy i t²ídy od ní odvozené, nap². TTable, TQuery a dalτí) vlastnost Fields, která p²edstavovala pole databázov∞ch sloupcà. V souƒasné verzi je vlastnost Fields objekt typu TFie- lds, kter∞ má mimo jiné vlastnost Fields p²edstavující pole databázov∞ch sloupcà.
V p²ekladaƒích Microsoft Visual C++ 5.0 a 6.0 se setkáme s následující chybou. P²edstavte si, ºe ve t²íd╪ A definujeme jako metodu operátor p²etypování nap². na typ int, tedy metodu A::operator int(). Jestliºe tuto t²ídu pouºijeme jako spoleƒného p²edka a odvodíme dva virtuální potomky, nap². t²ídy B a C, a od nich pak spoleƒného potomka, t²ídu D, pak p²ekladaƒ nedokáºe zd╪d╪n∞ operátor p²etypování pouºít pro instanci t²ídy D. Pokud vám to p²ipadá komplikované, podívejte se na p²íklad:
class A // Spoleƒn∞ p²edek
{
public:
operator int(){ return 1; }
int f() {return 1;}
};
// Virtuální potomci B a C
class B: public virtual A
{};
class C: public virtual A
{};
// Spoleƒn∞ potomek
class D: public B, public C
{};
int main()
{
D d, e, f;
int i = e; // Zde p²ekladaƒ
// ohlásí chybu
return 0;
}
P²i p²ekladu p²íkazu
int i = e;
ve funkci main() bude p²ekladaƒ hledat zpàsob, jak p²evést instanci typu D na hodnotu typu int. Takovou cestu p²edstavuje práv╪ funkce A::operator int() zd╪d╪ná po t²íd╪ A. T²ída D ji sice zd╪dí dv╪ma cestami, ale pouze jednou, nebo£ A je virtuální p²edek t²íd B a C, takºe instance t²ídy D obsahuje jedin∞ podobjekt t²ídy A. To znamená, ºe hláτení p²ekladaƒe o nejednoznaƒnosti p²etypovacího operátoru je chybné. Ostatn╪ pro jiné funkce tento problém nenastane - o tom se snadno p²esv╪dƒíme, jestliºe do funkce main() p²idáme p²íkaz
i = e.f();
Pokud se vám zdá, ºe jde o nepravd╪podobnou a nepouºívanou konstrukci, pak se podívejte na následující p²íklad, kter∞ najdete ve v╪tτin╪ b╪ºn∞ch uƒebnic C++:
#include <fstream>
using namespace std;
void main()
{
fstream F("data.dta", ios::in);
if(F) // Zde op╪t ohlásí
// p²ekladaƒ chybu
{/* ...pouºijeme F ... */
}
}
V podmínce p²íkazu if jsme zapsali identifikátor datového proudu. To by m╪lo b∞t v po²ádku, nebo£ t²ída fstream obsahuje operátor p²etypování na void*, kter∞ vrací 0, pokud se nepoda²í poslední operace s proudem - zde nap². otev²ení souboru. Jde tedy o jednoduch∞ nástroj pro test stavu proudu. Tento operátor je definován ve t²íd╪ ios, odkud jej zd╪dí dva virtuální potomci, t²ídy istream a ostream. T²ída fstream je pak jejich spoleƒn∞m potomkem. I zde ovτem p²ekladaƒ Visual C++ 5.0 a 6.0 ohlásí, ºe nedokáºe jednoznaƒn╪ urƒit, kter∞ operátor pouºít, i kdyº má jen jeden.
Poznamenejme, ºe tento problém se neobjevuje ve vτech situacích. Nap²íklad jin∞ b╪ºn∞ programátorsk∞ obrat, pouºívan∞ pro ƒtení ze souboru,
fstream F("data.dta", ios::in);
int i;
while(F >> i)
Zpracuj(i);
se p²eloºí bez problémà, i kdyº vlastn╪ znamená totéº. V∞sledkem (hodnotou) operace F >> i je proud F po ukonƒení ƒtení, a ten se zde implicitn╪ konvertuje na pomocí funkce operator void*() na hodnotu, která ukazuje, zda se ƒtení poda²ilo.