home *** CD-ROM | disk | FTP | other *** search
- GADTOOLS.LIBRARY (cz. 3.)
-
- <a>Michaî Koîodziejczyk
-
- <txt>SCROLLER_KIND
-
- gadûet ten wykorzystuje sië do sterowania przewijaniem, np. przy
- wyôwietlaniu elementów listy, tekstu, obrazka. Zastosowany jest
- np. w LISTVIEW_KIND. Caîkowitâ liczbë elementów, linii itp.
- podaje sië tagiem GTSC_Total. Liczbë elementów widocznych w
- przewijanym obszarze wskazuje sië za pomocâ GTSC_Visible. Pierwszy
- widoczny w danej chwili element podaje sië, uûywajâc GTSC_Top, a
- odbiera za pomocâ komunikatów IDCMP lub tego samego tagu i funkcji
- GT_GetgadgetAttrs.
-
- Normalnie wysyîane sâ IDCMP_MOUSEMOVE, w polu code pozycja suwaka.
- Ponadto moûemy otrzymywaê komunikat IDCMP_GADGETDOMN po podaniu tagu
- GA_Immediate oraz IDCMP_GADGETUP po podaniu GA_RelVerify.
-
- Dostëpne tagi dla Creategadget():
-
- GT_Underscore -- tak jak w BUTTON_KIND.
-
- GA_Disabled -- tak jak w BUTTON_KIND.
-
- GA_Immediate -- tak jak w BUTTON_KIND.
-
- GA_RelVerify -- jeûeli TRUE, program bëdzie otrzymywaî komunikat
- IDCMP_gadûETUP. Domyôlnie FALSE.
-
- GTSC_Top -- poîoûenie suwaka w gadûecie. Domyôlnie 0.
-
- GTSC_Total -- liczba elementów. Domyôlnie 0.
-
- GTSC_Visible -- liczba widocznych elementów. Domyôlnie 2.
-
- GTSC_Arrows -- do gadûetu zostanâ doîâczone strzaîki. Wartoôê podana
- w ti_Data bëdzie wysokoôciâ kaûdej strzaîki przy pionowym ustawienu
- gadûetu, a przy poziomym szerokoôciâ. Uwaga! Przy uûyciu tego tagu
- do flag IDCMP naleûy dodaê (or) ARROWIDCMP.
-
- PGA_Freedom -- decyduje, czy suwak porusza sië w pionie
- (LORIENT_VERT) czy w poziomie (LORIENT_HORIZ). Domyôlnie poziomy.
-
- Dla funkcji GT_GetgadgetAttrs i GT_SetgadgetAttrs dostëpne sâ tagi:
- GA_Disabled,GTSC_Top, GTSC_Total i GTSC_Visible.
-
- SLIDER_KIND
-
- gadûet ten podobny jest do SCROLLER_KIND, lecz jego zastosowanie
- jest nieco inne. Stosuje sië go przy ustawieniu poziomu np.
- jakoôci wydruku. Minimalnâ i maksymalnâ wartoôê podaje sië tagami
- GTSL_Min i GTSL_Max. Aktualny poziom ustawia sië i odbiera za
- pomocâ tagu GTSL_Level. Messages IDCMP takie same jak w
- SCROLLER_KIND.
-
- Dostëpne tagi dla Creategadget():
-
- GT_Underscore -- tak jak w BUTTON_KIND.
-
- GA_Disabled -- tak jak w BUTTON_KIND.
-
- GA_Immediate -- tak jak w BUTTON_KIND.
-
- GA_RelVerify -- tak jak w SCROLLER_KIND.
-
- GTSL_Level -- aktualny poziom. Domyôlnie 0.
-
- GTSL_Min -- najmniejszy poziom, jaki moûna ustawiê w gadûecie.
- Domyôlnie 0.
-
- GTSL_Max -- najwiëkszy poziom, jaki moûna ustawiê w gadûecie.
- Domyôlnie 15.
-
- GTSL_MaxLevelLen -- najwiëksza moûliwa dîugoôê (w znakach) tekstu
- z aktualnym poziomem. Dotyczy tylko tekstu wyôwietlanego w
- gadûecie. Uwaga! Tag ten jest konieczny, by wîâczyê wyôwietlanie
- aktualnego poziomu.
-
- GTSL_DispFunction -- adres funkcji uûytkownika, wyliczajâcej
- aktualny poziom (przydatna np. przy wyborze liczby kolorów). Dla
- C funkcja musi pobieraê (ze stosu) kolejno: wskaúnik do gadûetu
- (ULONG) i aktualny poziom (WORD, w praktyce LONG), a zwracaê
- wartoôê, która bëdzie wyôwietlona (LONG). Nagîówek funkcji dla C:
-
- <l>long nazwa_funkcji (struct gadget *,word);
-
- <txt>W KickPascalu funkcja musi pobieraê parametry w odwrotnej
- kolejnoôci: aktualny poziom (LONG) i wskaúnik do gadûetu
- (p_gadûet). Przykîadowa funkcja w KickPascalu wyôwietla aktualny
- poziom pomnoûony przez 2:
-
- <l>{$opt b-,s-}
-
- function calclevel(level:long; c_gadget:p_gadget):long;
-
- begin
-
- calclevel:=2*level;
-
- end;
-
- {$opt s0}
-
- <txt> Uwaga! Wynik uzyskany z funkcji uûywany jest tylko do
- wyôwietlania. Przy pobieraniu aktualnego poziomu, np. za pomocâ
- GT_GetgadgetAttrs, otrzymamy wartoôê bez ûadnych "przeróbek".
-
- W KickPascalu adres procedury uzyskujemy, stosujâc
- Addr(nazwa_procedury).
-
- GTSL_LevelFormat -- tak jak GTNM_Format w NUMBER_KIND.
-
- GTSL_LevelPlace -- poîoûenie tekstu z aktualnym poziomem.
- Moûliwe: PLACETEXT_LEFT, PLACETEXT_RIGHT, PLACETEXT_ABOVE i
- PLACETEXT_BELOW (opisane wczeôniej). Domyôlnie PLACETEXT_LEFT.
-
- GTSL_MaxPixelLen -- maksymalna dîugoôê (w punktach) wyôwietlanego
- tekstu. Ma to zaczenie w wypadku uûycia czcionek
- proporcjonalnych. Jeûeli tag nie zostanie uûyty, bëdzie przyjëta
- wartoôê z GTSL_MaxLevelLen. Tag istnieje od wersji 39.
-
- GTSL_Justification -- tak jak GTNM_Justification w NUMBER_KIND. Tag
- istnieje od versji 39. UWAGA! Dziaîanie tego tagu nie zawsze jest
- zgodne z oczekiwaniami!
-
- PGA_Freedom -- tak jak w SCROLLER_KIND.
-
- Dla funkcji GT_GetgadgetAttrs dostëpne sâ tagi: GA_Disabled,
- GTSL_Min, GTSL_Max, GTSL_Level.
-
- Dla funkcji GT_SetgadgetAttrs ponadto: GTSL_LevelFormat,
- GTSL_DispFunc, GTSL_Justification.
-
- STRING_KIND
-
- Normalny string gadûet, zaopatrzony w estetycznâ ramkë. Gadtools
- "przy okazji" tworzy za nas bufor. Zawartoôê bufora odczytujemy,
- pobierajâc ze struktury gadûet z pola SpecialInfo wskaúnik do
- struktury StringInfo, która zawiera intersujâce nas pole Buffer,
- bëdâce wskaúnikiem do wpisanego przez uûytkownika tekstu. Innym
- sposobem jest uûycie tagu GTSC_String w funkcji GT_GetgadgetAttrs.
- Gadûet powoduje wysîanie komunikatów IDCMP_GADGETUP, a gdy zostanie
- ustawiony GA_Immediate -- IDCMP_GADGETDOWN.
-
- Dostëpne tagi dla Creategadget():
-
- GT_Underscore -- tak jak w BUTTON_KIND.
-
- GA_Disabled -- tak jak w BUTTON_KIND.
-
- GA_Immediate -- tak jak w BUTTON_KIND.
-
- GA_TabCycle -- tak jak w INTEGER_KIND.
-
- GTST_String -- wskaúnik do tekstu, bëdâcego zawartoôciâ gadûetu.
- Domyôlnie Nil -- gadûet po uruchomieniu nie bëdzie zawieraî ûadnego
- tekstu.
-
- GTST_MaxChars -- tak jak GTIN_MaxChars w INTEGER_KIND.
-
- STRINGA_Justification -- tak jak w INTEGER_KIND.
-
- STRINGA_ReplaceMode -- tak jak w INTEGER_KIND.
-
- STRINGA_ExitHelp -- tak jak w INTEGER_KIND.
-
- Dla funkcji GT_GetgadgetAttrs i GT_SetgadgetAttrs dostëpne sâ tagi:
- GA_Disabled i GTST_String.
-
- TEXT_KIND
-
- Taki jak NUMBER_KIND lecz do wyôwietlania tekstu. Prawie ten sam
- efekt moûna uzyskaê, stosujâc procedurë PrintIntuiText i rysujâc
- ramki, lecz TEXT_KIND jest znacznie wygodniejszy. Zmianë
- wyôwietlanego tekstu przeprowadzamy tak, jak w NUMBER_KIND (z
- tagiem GTTX_Text). Gadûet ten nie powoduje wysyîania ûadnych
- komunikatów IDCMP.
-
- Dostëpne tagi dla Creategadget():
-
- GTTX_Text -- wskaúnik do tekstu wyôwietlanego w gadûecie. Jeûeli nie
- zostaî ustawiony tag GTTX_CopyText, to tekst bëdzie musiaî istnieê
- caîy czas.
-
- GTTX_CopyText -- jeûeli TRUE, to poczâtkowy tekst (tylko w chwili
- stworzenia gadûetu!) bëdzie przepisany do wewnëtrznego bufora i nie
- bëdzie musiaî caîy czas istnieê.
-
- GTTX_Border -- tak jak GTNM_Border w NUMBER_KIND.
-
- GTTX_FrontPen -- tak jak GTNM_FrontPen w NUMBER_KIND.
-
- GTTX_BackPen -- tak jak GTNM_BackPen w NUMBER_KIND.
-
- GTTX_Clipped -- tak jak GTNM_Clipped w NUMBER_KIND.
-
- GTTX_Justification -- tak jak GTNM_Justification w NUMBER_KIND.
-
- Dla funkcji GT_GetgadgetAttrs dostëpny jest tag: GTTX_Text.
-
- Dla funkcji GT_SetgadgetAttrs ponadto: GTTX_FrontPen, GTTX_BackPen
- i GTTX_Justification.
-
- Na koniec jeszcze jedna uwaga. Jeûeli otwieramy okno z flagâ
- WFLG_SIMPLE_REFRESH, to przy odôwieûaniu musimy okna procedury
- BeginRefresh i EndRefresh (z intuition.library) zastâpiê
- procedurami GT_BeginRefresh i GT_EndRefresh (skîadnia dokîadnie
- taka sama).
-
- <przyp>Literatura:
-
- Autodocs, Commodore.
-
- K. Pugh "C Language for Programmers", QED Information Sciences
- Inc. 1990.
-
-