home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga MA Magazine 1997 #3
/
amigamamagazinepolishissue03-1
/
ma_1995
/
06
/
ami072a.txt
< prev
next >
Wrap
Text File
|
1997-04-07
|
5KB
|
296 lines
<l>
Program gt_demo;
{$incl 'libraries/gadtools.h' }
{$incl 'utility/tagitem.h' }
{$incl 'intuition/gadgetclass.h' }
{$incl 'graphics/text.h' }
Type
TagList=array[0..31] of tagitem;
Var
NW:NewWindow;
PrgWindow:^Window
ActiveGadget,GList,OKGadget,CancelGadget,DisabledGadget:p_Gadget
VI:Ptr;
WBScreen:p_Screen;
OKNewGadget,CancelNewGadget,DisabledNewGadget:NewGadget;
Msg:^IntuiMessage;
Leave:Boolean;
Class:Long;
IAddress:Ptr;
OKTagList,DisabledTagList:TagList;
PrgFont:TextAttr;
Begin
OpenLib (GTBase,'gadtools.library',0);
OpenLib (IntBase,'intuition.library',0);
WBScreen:=OpenWorkBench;
VI:=GetVisualInfo(WBScreen,Nil);
GList:=Nil;
if CreateContext(^GList)=NIL then
writeln ('Coô nie poszîo tak jak trzeba. Prawdopodobnie za maîo pamiëci.');
OKTagList[0]:=tagitem(GT_Underscore,ord('_'));
OKTagList[1]:=tagitem(TAG_END,0);
DisabledTagList[0]:=tagitem(GA_Disabled,1);
DisabledTagList[1]:=tagitem(TAG_END,0);
PrgFont:=TextAttr('topaz.font',8,FS_NORMAL,0);
With OKNewGadget do begin
gng_LeftEdge:=10;
gng_TopEdge:=20;
gng_Width:=60;
gng_Height:=12;
gng_GadgetText:=' _OK ';
gng_TextAttr:=^PrgFont;
gng_GadgetID:=1; { Gadget ma numer 1. }
gng_Flags:=0;
gng_VisualInfo:=VI; { Tutaj wîaônie jest potrzebne VisualInfo }
gng_UserData:=Nil; { Wystarczy GadgetID }
End;
OKGadget:=CreateGadget(BUTTON_KIND,GList,^OKNewGadget,^OKTagList);
{ Typ Button, Poprzedni gadget - Glist, NewGadget - ustawiona wczeôniej,
TagList - nie ma }
CancelNewGadget:=NewGadget(100,20,60,12,'Cancel',^PrgFont,2,0,VI,Nil);
{ To samo co przy OKNewGadget tylko krócej }
CancelGadget:=CreateGadget(BUTTON_KIND,OKGadget,^CancelNewGadget,Nil);
DisabledNewGadget:=NewGadget(30,40,100,12,'Wyîâczony',^PrgFont,0,0,VI,Nil);
DisabledGadget:=CreateGadget(BUTTON_KIND,CancelGadget,^DisabledNewGadget,^DisabledTagList);
if GList=Nil then Writeln ('Nie poszîo.')
Else Begin
NW:=NewWindow(120,100,300,100,
255,255, { Standardowe kolory }
_CLOSEWINDOW or GadgetUP or BUTTONIDCMP { Program bëdzie otrzymywaî }
{ informacje o naciôniëciu gadget'a zamkniëcia okna oraz }
{ o naciôniëciu (wîaôciwie puszczeniu) gadgetów }
,WindowDrag or WindowClose or Smart_Refresh or WindowDepth or NoCareRefresh,
GList { Tutaj dajemy nasz îaïcuch gadgetów }
,Nil,
'Test',
Nil,
Nil,
0,0,0,0,
WBenchScreen);
PrgWindow:=OpenWindow(^NW);
If PrgWindow=Nil then writeln ('Nie mogë otworzyê okna!')
else begin
GT_RefreshWindow (PrgWindow,Nil);
{ Ta instrukcja pokazuje gadgety gadtools }
{ Spróbuj usunâê tâ instrukcjë przy nastëpnym uruchomieniu programu }
{ I trochë poklikaê w obszarze okna }
Leave:=False;
Repeat
MSG:=Wait_Port(PrgWindow^.UserPort); { Czekamy na wiadomoôê od naszego okna }
if MSG<>NIL then Begin { Nadeszîa }
MSG:=GT_GetIMsg(PrgWindow^.UserPort); { Wiëc jâ odbieramy }
{ Jeûeli uûywasz gadtools.library zamiast GET_Msg oraz Reply_Msg }
{ Musisz korzystaê z GT_GetIMsg i GT_ReplyIMsg }
Class:=MSG^.Class;
IAddress:=MSG^.IAddress;
{ Zgodnie z zaleceniem Duddie'go tylko przepisujemy interesujâce nas }
{ pola, interpretowaê bëdziemy póúniej }
GT_ReplyIMsg(Msg); { Juû odczytaliômy, port wolny }
{ Teraz interpretacja }
{ Pole Class zawiera informacje która flaga IDCMP (ustawiona w NewWindow) }
{ spowodowaîa wysîanie message'a }
Case Class of
_CLOSEWINDOW: Leave:=True; { Uûytkownik nacisnâî gadget zamkniëcia okna }
GadgetUP: Begin { Uûytkownik nacisnâî jakiô gadget }
ActiveGadget:=IAddress; { Juû mamy wskaúnik do gadgeta który naciôniëto }
Case ActiveGadget^.GadgetID of { Teraz tylko sprawdziê pole ID }
1: Writeln ('Nacisneîeô gadget OK! ');
2: Begin
Writeln ('Nacisnâîeô gadget Cancel');
End;
{ I inne wartoôci wpisane w gng_GadgetID }
Otherwise; { Na wszelki wypadek }
End;
End;
Otherwise; { To juû konieczne w z innymi gadgetami - }
{ ustawionych jest wiëcej flag IDCMP, których nie potrzebujemy }
End;
End;
Until Leave { Czekamy , aû Leave=TRUE ( zmienna Leave jest ustawiana przy }
{ zamkniëciu okna, spróbuj wpisaê Leave:=True przy reakcji na }
{ gadget Cancel np. po Writeln ('Nacisnâîeô gadget Cancel'); }
CloseWindow (PrgWindow); { Zamkniëcie okna }
End;
FreeGadgets (GList); { Zwolniê pamiëê zajmowanâ przez gadgety }
End;
FreeVisualInfo(VI); { Zwolniê pamiëê zajmowanâ przez VisualInfo }
CloseLib (IntBase);
CloseLib (GTBase);
{ I zamknâê biblioteki }
End.