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