begin ! Fil: ~in105/wndklokke.sim; external class Windowtools; SubWindow class KlokkeVindu; begin integer tid; Boolean tiden_gaar; procedure VisTid; begin Clear; DrawCenterText(int_as_text(tid)) end; procedure NullStill; begin tid := 0; VisTid end; procedure Start; begin tiden_gaar := true; SetAlarm(1) end; procedure Stopp; tiden_gaar := false; procedure handle_alarm; if tiden_gaar then begin tid := tid + 1; VisTid; SetAlarm(1); end; tiden_gaar := false; tid := 0; SetTypeFace("helvetica", 24, true, false); SetSize(width_of_text("999999"), 3*font_height//2); Show; end; MainWindow class KlokkeKontroll; begin ref(Button) start_knapp, stopp_knapp, null_knapp, slutt_knapp; ref(KlokkeVindu) klokka; procedure ClickInButton(b); ref(Button) b; if b == start_knapp then Start else if b == stopp_knapp then Stopp else if b == null_knapp then klokka.NullStill; procedure Start; begin stopp_knapp.Allow; start_knapp.DisAllow; klokka.Start; end; procedure Stopp; begin stopp_knapp.DisAllow; start_knapp.Allow; klokka.Stopp; end; start_knapp :- MakeButton("Start"); stopp_knapp :- MakeButton("Stopp").DisAllow.PlaceRightof(start_knapp); null_knapp :- MakeButton("Nullstill").PlaceRightof(stopp_knapp); slutt_knapp :- MakeButton("Slutt").PlaceRightof(null_knapp); klokka :- new KlokkeVindu(this KlokkeKontroll); klokka.PlaceWithCenterIn((slutt_knapp.max_x - start_knapp.min_x)//2, slutt_knapp.max_y + subWindowSpacing + klokka.height//2); SetBackGround("gray50"); SetSizeToSubWindowSize; Show; klokka.NullStill; slutt_knapp.Wait; end; new KlokkeKontroll(" Stoppeklokke "); end;