home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1997 #3 / amigamamagazinepolishissue03-1 / ma_1995 / 07 / ami32 < prev    next >
Text File  |  1997-04-15  |  7KB  |  218 lines

  1. GADTOOLS.LIBRARY (cz. 3.)
  2.  
  3. <a>Michaî Koîodziejczyk
  4.  
  5. <txt>SCROLLER_KIND
  6.  
  7. gadûet ten wykorzystuje sië do sterowania przewijaniem, np. przy
  8. wyôwietlaniu elementów listy, tekstu, obrazka. Zastosowany jest
  9. np. w LISTVIEW_KIND. Caîkowitâ liczbë elementów, linii itp.
  10. podaje sië tagiem GTSC_Total. Liczbë elementów widocznych w
  11. przewijanym obszarze wskazuje sië za pomocâ GTSC_Visible. Pierwszy
  12. widoczny w danej chwili element podaje sië, uûywajâc GTSC_Top, a
  13. odbiera za pomocâ komunikatów IDCMP lub tego samego tagu i funkcji
  14. GT_GetgadgetAttrs.
  15.  
  16. Normalnie wysyîane sâ IDCMP_MOUSEMOVE, w polu code pozycja suwaka.
  17. Ponadto moûemy otrzymywaê komunikat IDCMP_GADGETDOMN po podaniu tagu
  18. GA_Immediate oraz IDCMP_GADGETUP po podaniu GA_RelVerify.
  19.  
  20. Dostëpne tagi dla Creategadget():
  21.  
  22. GT_Underscore -- tak jak w BUTTON_KIND.
  23.  
  24. GA_Disabled   -- tak jak w BUTTON_KIND.
  25.  
  26. GA_Immediate  -- tak jak w BUTTON_KIND.
  27.  
  28. GA_RelVerify -- jeûeli TRUE, program bëdzie otrzymywaî komunikat
  29. IDCMP_gadûETUP. Domyôlnie FALSE.
  30.  
  31. GTSC_Top -- poîoûenie suwaka w gadûecie. Domyôlnie 0.
  32.  
  33. GTSC_Total -- liczba elementów. Domyôlnie 0.
  34.  
  35. GTSC_Visible -- liczba widocznych elementów. Domyôlnie 2.
  36.  
  37. GTSC_Arrows -- do gadûetu zostanâ doîâczone strzaîki. Wartoôê podana
  38. w ti_Data bëdzie wysokoôciâ kaûdej strzaîki przy pionowym ustawienu
  39. gadûetu, a przy poziomym szerokoôciâ. Uwaga! Przy uûyciu tego tagu
  40. do flag IDCMP naleûy dodaê (or) ARROWIDCMP.
  41.  
  42. PGA_Freedom -- decyduje, czy suwak porusza sië w pionie
  43. (LORIENT_VERT) czy w poziomie (LORIENT_HORIZ). Domyôlnie poziomy.
  44.  
  45. Dla funkcji GT_GetgadgetAttrs i GT_SetgadgetAttrs dostëpne sâ tagi:
  46. GA_Disabled,GTSC_Top, GTSC_Total i GTSC_Visible.
  47.  
  48. SLIDER_KIND
  49.  
  50. gadûet ten podobny jest do SCROLLER_KIND, lecz jego zastosowanie
  51. jest nieco inne. Stosuje sië go przy ustawieniu poziomu np.
  52. jakoôci wydruku. Minimalnâ i maksymalnâ wartoôê podaje sië tagami
  53. GTSL_Min i GTSL_Max. Aktualny poziom ustawia sië i odbiera za
  54. pomocâ tagu GTSL_Level. Messages IDCMP takie same jak w
  55. SCROLLER_KIND.
  56.  
  57. Dostëpne tagi dla Creategadget():
  58.  
  59. GT_Underscore -- tak jak w BUTTON_KIND.
  60.  
  61. GA_Disabled -- tak jak w BUTTON_KIND.
  62.  
  63. GA_Immediate -- tak jak w BUTTON_KIND.
  64.  
  65. GA_RelVerify -- tak jak w SCROLLER_KIND.
  66.  
  67. GTSL_Level -- aktualny poziom. Domyôlnie 0.
  68.  
  69. GTSL_Min -- najmniejszy poziom, jaki moûna ustawiê w gadûecie.
  70. Domyôlnie 0.
  71.  
  72. GTSL_Max -- najwiëkszy poziom, jaki moûna ustawiê w gadûecie.
  73. Domyôlnie 15.
  74.  
  75. GTSL_MaxLevelLen -- najwiëksza moûliwa dîugoôê (w znakach) tekstu
  76. z aktualnym poziomem. Dotyczy tylko tekstu wyôwietlanego w
  77. gadûecie. Uwaga! Tag ten jest konieczny, by wîâczyê wyôwietlanie
  78. aktualnego poziomu.
  79.  
  80. GTSL_DispFunction -- adres funkcji uûytkownika, wyliczajâcej
  81. aktualny poziom (przydatna np. przy wyborze liczby kolorów). Dla
  82. C funkcja musi pobieraê (ze stosu) kolejno: wskaúnik do gadûetu
  83. (ULONG) i aktualny poziom (WORD, w praktyce LONG), a zwracaê
  84. wartoôê, która bëdzie wyôwietlona (LONG). Nagîówek funkcji dla C:
  85.  
  86. <l>long     nazwa_funkcji     (struct gadget *,word);
  87.  
  88. <txt>W KickPascalu funkcja musi pobieraê parametry w odwrotnej
  89. kolejnoôci: aktualny poziom (LONG) i wskaúnik do gadûetu
  90. (p_gadûet). Przykîadowa funkcja w KickPascalu wyôwietla aktualny
  91. poziom pomnoûony przez 2:
  92.  
  93. <l>{$opt b-,s-}
  94.  
  95. function calclevel(level:long; c_gadget:p_gadget):long;
  96.  
  97. begin
  98.  
  99.  calclevel:=2*level;
  100.  
  101. end;
  102.  
  103. {$opt s0}
  104.  
  105. <txt> Uwaga! Wynik uzyskany z funkcji uûywany jest tylko do
  106. wyôwietlania. Przy pobieraniu aktualnego poziomu, np. za pomocâ
  107. GT_GetgadgetAttrs, otrzymamy wartoôê bez ûadnych "przeróbek".
  108.  
  109. W KickPascalu adres procedury uzyskujemy, stosujâc
  110. Addr(nazwa_procedury).
  111.  
  112. GTSL_LevelFormat -- tak jak GTNM_Format w NUMBER_KIND.
  113.  
  114. GTSL_LevelPlace -- poîoûenie tekstu z aktualnym poziomem.
  115. Moûliwe: PLACETEXT_LEFT, PLACETEXT_RIGHT, PLACETEXT_ABOVE i
  116. PLACETEXT_BELOW (opisane wczeôniej). Domyôlnie PLACETEXT_LEFT.
  117.  
  118. GTSL_MaxPixelLen -- maksymalna dîugoôê (w punktach) wyôwietlanego
  119. tekstu. Ma to zaczenie w wypadku uûycia czcionek
  120. proporcjonalnych. Jeûeli tag nie zostanie uûyty, bëdzie przyjëta
  121. wartoôê z GTSL_MaxLevelLen. Tag istnieje od wersji 39.
  122.  
  123. GTSL_Justification -- tak jak GTNM_Justification w NUMBER_KIND. Tag
  124. istnieje od versji 39. UWAGA! Dziaîanie tego tagu nie zawsze jest
  125. zgodne z oczekiwaniami!
  126.  
  127. PGA_Freedom -- tak jak w SCROLLER_KIND.
  128.  
  129. Dla funkcji GT_GetgadgetAttrs dostëpne sâ tagi: GA_Disabled,
  130. GTSL_Min, GTSL_Max, GTSL_Level.
  131.  
  132. Dla funkcji GT_SetgadgetAttrs ponadto: GTSL_LevelFormat,
  133. GTSL_DispFunc, GTSL_Justification.
  134.  
  135. STRING_KIND
  136.  
  137. Normalny string gadûet, zaopatrzony w estetycznâ ramkë. Gadtools
  138. "przy okazji" tworzy za nas bufor. Zawartoôê bufora odczytujemy,
  139. pobierajâc ze struktury gadûet z pola SpecialInfo wskaúnik do
  140. struktury StringInfo, która zawiera intersujâce nas pole Buffer,
  141. bëdâce wskaúnikiem do wpisanego przez uûytkownika tekstu. Innym
  142. sposobem jest uûycie tagu GTSC_String w funkcji GT_GetgadgetAttrs.
  143. Gadûet powoduje wysîanie komunikatów IDCMP_GADGETUP, a gdy zostanie
  144. ustawiony GA_Immediate -- IDCMP_GADGETDOWN.
  145.  
  146. Dostëpne tagi dla Creategadget():
  147.  
  148. GT_Underscore -- tak jak w BUTTON_KIND.
  149.  
  150. GA_Disabled -- tak jak w BUTTON_KIND.
  151.  
  152. GA_Immediate -- tak jak w BUTTON_KIND.
  153.  
  154. GA_TabCycle -- tak jak w INTEGER_KIND.
  155.  
  156. GTST_String -- wskaúnik do tekstu, bëdâcego zawartoôciâ gadûetu.
  157. Domyôlnie Nil -- gadûet po uruchomieniu nie bëdzie zawieraî ûadnego
  158. tekstu.
  159.  
  160. GTST_MaxChars -- tak jak GTIN_MaxChars w INTEGER_KIND.
  161.  
  162. STRINGA_Justification -- tak jak w INTEGER_KIND.
  163.  
  164. STRINGA_ReplaceMode -- tak jak w INTEGER_KIND.
  165.  
  166. STRINGA_ExitHelp -- tak jak w INTEGER_KIND.
  167.  
  168. Dla funkcji GT_GetgadgetAttrs i GT_SetgadgetAttrs dostëpne sâ tagi:
  169. GA_Disabled i GTST_String.
  170.  
  171. TEXT_KIND
  172.  
  173. Taki jak NUMBER_KIND lecz do wyôwietlania tekstu. Prawie ten sam
  174. efekt moûna uzyskaê, stosujâc procedurë PrintIntuiText i rysujâc
  175. ramki, lecz TEXT_KIND jest znacznie wygodniejszy. Zmianë
  176. wyôwietlanego tekstu przeprowadzamy tak, jak w NUMBER_KIND (z
  177. tagiem GTTX_Text). Gadûet ten nie powoduje wysyîania ûadnych
  178. komunikatów IDCMP.
  179.  
  180. Dostëpne tagi dla Creategadget():
  181.  
  182. GTTX_Text -- wskaúnik do tekstu wyôwietlanego w gadûecie. Jeûeli nie
  183. zostaî ustawiony tag GTTX_CopyText, to tekst bëdzie musiaî istnieê
  184. caîy czas.
  185.  
  186. GTTX_CopyText -- jeûeli TRUE, to poczâtkowy tekst (tylko w chwili
  187. stworzenia gadûetu!) bëdzie przepisany do wewnëtrznego bufora i nie
  188. bëdzie musiaî caîy czas istnieê.
  189.  
  190. GTTX_Border -- tak jak GTNM_Border w NUMBER_KIND.
  191.  
  192. GTTX_FrontPen -- tak jak GTNM_FrontPen w NUMBER_KIND.
  193.  
  194. GTTX_BackPen -- tak jak GTNM_BackPen w NUMBER_KIND.
  195.  
  196. GTTX_Clipped -- tak jak GTNM_Clipped w NUMBER_KIND.
  197.  
  198. GTTX_Justification -- tak jak GTNM_Justification w NUMBER_KIND.
  199.  
  200. Dla funkcji GT_GetgadgetAttrs dostëpny jest tag: GTTX_Text.
  201.  
  202. Dla funkcji GT_SetgadgetAttrs ponadto: GTTX_FrontPen, GTTX_BackPen
  203. i GTTX_Justification.
  204.  
  205. Na koniec jeszcze jedna uwaga. Jeûeli otwieramy okno z flagâ
  206. WFLG_SIMPLE_REFRESH, to przy odôwieûaniu musimy okna procedury
  207. BeginRefresh i EndRefresh (z intuition.library) zastâpiê
  208. procedurami GT_BeginRefresh i GT_EndRefresh (skîadnia dokîadnie
  209. taka sama).
  210.  
  211. <przyp>Literatura:
  212.  
  213. Autodocs, Commodore.
  214.  
  215. K. Pugh "C Language for Programmers", QED Information Sciences
  216. Inc. 1990.
  217.  
  218.