HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Szorzótábla komponens készítése


Példaprogram letöltése

5063 bájt

Készítünk egy komponenst, amely segítségével megjeleníthetjük a szorzótáblát. A szorzótábla oszlopainak és sorainak kezdő és végértékét természetesen mi állíthatjuk be. A tábla megjeleníti a megadott kezdő és végértékek között szereplő összes egész szám szorzatát.

A mellékelt példaprogram megnyitása előtt a MulTable.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A komponens használata
A MulTable komponens által megjelenítendő számok és szorzatok beállítását kétféleképpen tehetjük meg. Az egyik, hogy az értéktartományokat egyesével állítjuk be. A ColumnMin és ColumnMax tulajdonságok az oszlopok alsó és felső értékét határozzák meg. A sorok beállításához a RowMin és RowMax property-ket használhatjuk.
A másik lehetőség. A könnyebb beállíthatóság érdekében a komponens rendelkezik egy beállításra szolgáló metódussal.
procedure SetTable(ColMin, ColMax, RowMin, RowMax: Integer);
A SetTable metódus segítségével, egy lépésben beállíthatjuk a szorzótábla által megjelenítendő tartományt. A paraméterek jelentése, sorrendben: oszlop alsó-, oszlop felső-, sor alsó-, sor felső érték.
A Font tulajdonság segítségével állíthatjuk be a megjelenítendő számok betűtípusát. Az oszlop és sor fejlécek mindig félkövéren, a többi szám pedig normál betűstílussal jelenik meg.
A komponens rendelkezik az AutoSize és a Visible tulajdonságokkal, valamint az OnClick, OnDblClick, OnMouseDown, OnMouseMove, OnMouseUp és OnResize eseményekkel.
A komponens elkészítése
Komponensünket a TGraphicControl osztályból származtatjuk.
Az egyes tulajdonságok értékeinek módosulása során, a Set* metódusokban figyelnünk kell arra, hogy a minimum értékek soha ne legyenek nagyobbak a maximum értékeknél.
A Visible tulajdonságot és az eseményeket közvetett módon örököljük a TControl osztálytól, így azok neveit csak fel kell sorolnunk, más teendőnk nincs velük.
A szorzótábla megrajzolásához felül kell írnunk a Paint metódust. Mielőtt azonban elkezdenénk rajzolni, ki kell számolnunk az oszlopok és sorok metszéspontjait, azaz a szorzatokat. A számítási műveleteket a Calculate metódus végzi el, amelyet a Paint-ből hívunk meg.
Nem tudjuk előre, hogy a felhasználó mekkora tartományt ad meg az oszlopok és a sorok esetében. Ezen oknál fogva egy kétdimenziós, dinamikus tömbre van szükségünk, amelyet az alábbi módon deklarálhatunk.
FTable: array of array of LongInt;
A tömb aktuális méretét mindig a Calculate metódusban határozzuk meg, a megadott tartományok alapján.
SetLength(FTable,FColumnMax-FColumnMin+1,FRowMax-FRowMin+1);
A tömböt egy dupla for ciklus segítségével tudjuk feltölteni értékekkel. A tömb első koordinátája az oszlopot, a második a sort jelenti. Miközben kiszámoljuk az egyes értékeket, folyamatosan meg kell vizsgálnunk, hogy az éppen beírt szám milyen szélességgel fog rendelkezni a kirajzolás során. A szorzatok kiszámolása közben fel kell jegyeznünk a legszélesebb helyet foglaló szám szélességét, hiszen olyan cellaméretet kell kialakítanunk, amelybe minden szám belefér. A legszélesebb értéket az FMaxWidth változóba mentjük el.
Egy szöveg szélességét a TCanvas osztály TextWidth metódusával határozhatjuk meg.
w:=Canvas.TextWidth(IntToStr(FTable[i-FColumnMin,j-FRowMin]));
Ha megvagyunk a számításokkal, folytathatjuk a Paint metódust. Most már rendelkezésünkre áll az FTable tömb, a kiszámolt értékekkel, valamint tudjuk a maximális cellaszélességet is.
A maximális szélességhez adjunk még hozzá 5-öt, hogy maradjon hely a cellában a szám két oldalán. Szükségünk van a kirajzolandó cellák maximális magasságára is, ezt a MaxHeight változóba mentjük el.
MaxHeight:=Canvas.TextHeight('1')+4;
A maximális magasság meghatározásakor a TextHeight metódusnak bármilyen számot értékül adhatunk, hiszen a számok magassága egyforma.
A megjelenítendő oszlopok és sorok száma alapján meg kell határoznunk a táblázat szélességi és magassági adatait.
w:=(FColumnMax-FColumnMin+2)*FMaxWidth+2;
h:=(FRowMax-FRowMin+2)*MaxHeight+2;
Ha az AutoSize property értéke igaz, akkor ezeket a méreteket a komponensnek is fel kell vennie.
A rácsozatot, az oszlop és sor fejléceket egy-egy for ciklus segítségével és némi koordinátaszámolással könnyedén megrajzolhatjuk.
Az egyes szorzatok kirajzolásához két, egymásba ágyazott for ciklusra van szükség.
Fontos, hogy a megjelenítendő feliratok a cellán belül minden irányban középre essenek. Egy adott felirat helyét az adott cella koordinátái és szélessége, valamint a felirat szélessége és magassága alapján ki tudjuk számolni.

Cikksorozat

#IDKategóriaCikk címeSorozat
2591WindowsTippek és trükkök - RAS - Modem csengetési szám állítása1. rész
2622WindowsTippek és trükkök - Program futtatása más felhasználóként2. rész
2640WindowsA Windows ikonméretének megváltoztatása és Windows 2000 Asztaltémák3. rész
2657WindowsTippek és trükkök - Internet Explorer4. rész
2667WindowsTippek és trükkök5. rész
2684WindowsAlapértelmezések állítása, telepítési fájlok helye, intéző nézetek6. rész
2696WindowsBiztonsági trükkök7. rész
2702WindowsWindows XP trükkök8. rész
2729WindowsWindows 2000 és XP tippek, trükkök9. rész
2757WindowsRegistry trükkök10. rész
2784WindowsTippek, trükkök11. rész
2829WindowsTippek, trükkök12. rész
2889WindowsWindows XP tippek13. rész
2909WindowsTippek Windows XP-hez14. rész
2919WindowsWindows tippek15. rész
2924WindowsWindows tippek16. rész
2963WindowsWindows tippek17. rész
2973WindowsWindows Tippek18. rész
2981WindowsWindows tippek19. rész
2990WindowsTippek-trükkök20. rész
3027WindowsIIS tippek21. rész
3034WindowsWindows XP tippek-trükkök22. rész
3088WindowsWindows 2000/XP tippek, trükkök23. rész
3133WindowsWindows XP tippcsokor24. rész
3140WindowsWindows XP tippek, trükkök25. rész
3152WindowsXP és IIS tippek - trükkök26. rész
3158WindowsWindows XP tippek, trükkök27. rész
3168WindowsTippek, trükkök28. rész
3170WindowsRegistry trükkök29. rész
3179WindowsTippek, trükkök30. rész
3197WindowsWindows XP tippek, trükkök31. rész
3205WindowsTippek, trükkök32. rész
3214WindowsTippek, trükkök33. rész
3223WindowsTippek, trükkök34. rész
3233WindowsTippek, trükkök35. rész
3271WindowsTippek, trükkök36. rész
3307WindowsTippek, trükkök37. rész
3370WindowsTippek, trükkök38. rész
3399WindowsTippek, trükkök39. rész
3510WindowsTippek, trükkök40. rész
3611WindowsHardverrel kapcsolatos tippek, trükkök41. rész
3668WindowsRegistry trükkök42. rész
3711WindowsTippek, trükkök43. rész
3771WindowsTippek, trükkök44. rész
3801WindowsTippek, trükkök45. rész
3831WindowsTippek, trükkök46. rész
3891WindowsTippek, trükkök47. rész
3921WindowsTippek, trükkök48. rész
3981WindowsTippek, trükkök49. rész
4041WindowsTippek, trükkök50. rész
4071WindowsTippek, trükkök51. rész
4151WindowsTippek, trükkök52. rész
4171C#Tippek, trükkök53. rész
4211WindowsTippek, trükkök54. rész
4251WindowsTippek, trükkök55. rész
4281WindowsTippek, trükkök56. rész
3589DelphiTippek, trükkök57. rész
3718DelphiTippek, trükkök58. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2003 évkönyv 92. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |