//Labelien siirto tapahtuu nyt TRaahaavan avulla, //siirto on sallittu vain panelin päälle/päällä. unit autolask; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Menus, About, raahattava; type TAutolaskuri = class(TForm) ButtonHA: TButton; ButtonKA: TButton; ButtonNollaa: TButton; LabelHA: TLabel; LabelKA: TLabel; ImageHA: TImage; Timer1: TTimer; MainMenu1: TMainMenu; FDFD1: TMenuItem; File1: TMenuItem; Help1: TMenuItem; Exit1: TMenuItem; Colors1: TMenuItem; About1: TMenuItem; ColorDialog: TColorDialog; Colors21: TMenuItem; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Colors22: TMenuItem; Raahaava1: TRaahaava; ButtonPP: TButton; LabelPP: TLabel; Panel1: TPanel; procedure ButtonHAClick(Sender: TObject); procedure ButtonKAClick(Sender: TObject); procedure ButtonNollaaClick(Sender: TObject); procedure ButtonPPClick(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure KunLuodaan(Sender: TObject); procedure Exit1Click(Sender: TObject); procedure Colors21Click(Sender: TObject); procedure About1Click(Sender: TObject); procedure LabelHADragOver(Sender, Source: TObject; X,Y: Integer; State: TDragState; var Accept: Boolean); procedure lisaa(lab:TLabel; n:integer); procedure LabelHADragDrop(Sender, Source: TObject; X,Y: Integer); procedure TaustaDragDrop(Sender, Source: TObject; X,Y: Integer); procedure Colors22Click(Sender: TObject); procedure ButtonMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure LabelHAClick(Sender: TObject); procedure Raahaava1Arrive(o, wnd: TControl; data: Integer); private Nopeus : Integer; function GetNopeus : Integer; procedure SetNopeus(n : integer); public constructor Create(AOwner: TComponent); override; end; var Autolaskuri: TAutolaskuri; implementation {$R *.dfm} procedure TAutolaskuri.lisaa(lab:TLabel; n:integer); begin try lab.Caption := IntToStr(StrToInt(lab.Caption)+n); except on EConvertError do lab.Caption := '0'; end; end; procedure TAutolaskuri.KunLuodaan(Sender:TObject); begin SetNopeus(10); end; procedure TAutolaskuri.ButtonHAClick(Sender: TObject); begin lisaa(LabelHA,1); end; procedure TAutolaskuri.ButtonKAClick(Sender: TObject); begin lisaa(LabelKA,1); end; procedure TAutolaskuri.ButtonNollaaClick(Sender: TObject); begin LabelHA.Caption := '0'; LabelKA.Caption := '0'; LabelPP.Caption := '0'; end; procedure TAutolaskuri.ButtonPPClick(Sender: TObject); begin lisaa(LabelPP,1); end; function TAutolaskuri.GetNopeus: Integer; begin Result := Nopeus; end; procedure TAutolaskuri.SetNopeus(n: integer); begin Nopeus := n; end; procedure TAutolaskuri.Timer1Timer(Sender: TObject); begin if ( ImageHA.Left >= ClientWidth - ImageHA.Width - GetNopeus()) then SetNopeus(-Abs(GetNopeus())); if ( ImageHA.Left <= 0 + (Abs(GetNopeus())) ) then SetNopeus(Abs(GetNopeus())); ImageHA.Left := ImageHA.Left + Nopeus; end; procedure TAutolaskuri.Exit1Click(Sender: TObject); begin Close; end; procedure TAutolaskuri.Colors21Click(Sender: TObject); begin ColorDialog.Color := Color; if ( not ColorDialog.Execute ) then exit; Color := ColorDialog.Color; Autolaskuri.Color := ColorDialog.Color; end; procedure TAutolaskuri.Colors22Click(Sender: TObject); var BGColor : Tcolor; begin BGColor := Autolaskuri.Color; ColorDialog.Color := Color; if ( not ColorDialog.Execute ) then exit; Color := ColorDialog.Color; LabelHA.Color := ColorDialog.Color; LabelKA.Color := ColorDialog.Color; LabelPP.Color := ColorDialog.Color; Autolaskuri.Color := BGColor; // Ilman tätä taustaväri muuttuu jostain syystä // samaksi kuin labeleilla. end; procedure TAutolaskuri.About1Click(Sender: TObject); begin FormAbout.Show; end; procedure TAutolaskuri.LabelHADragOver(Sender, Source: TObject; X,Y: Integer; State: TDragState; var Accept: Boolean); begin Accept := True; end; procedure TAutolaskuri.LabelHADragDrop(Sender, Source: TObject; X,Y: Integer); var lab: Tlabel; begin if ( Source = ImageHA ) then lisaa(Sender as TLabel,10); if ( Source = Label1 ) or ( Source = Label2 ) or ( Source = Label3 ) or ( Source = Label4 ) then begin lab := Source as Tlabel; lisaa(Sender as Tlabel, StrToInt(lab.Caption)); end; end; procedure TAutolaskuri.TaustaDragDrop(Sender, Source: TObject; X,Y: Integer); var obj : TControl; begin obj := Source as TControl; obj.Left := X; obj.Top := Y; end; procedure TAutoLaskuri.ButtonMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var namiska : TButton; begin if ( Button = mbLeft) and ( ssCtrl in Shift ) then with Sender as TControl do BeginDrag(False, 5) else if ( Sender is TButton ) then begin namiska := Sender as TButton; if ( namiska.Name = 'ButtonHA' ) then ButtonHAClick(Sender) else if ( namiska.Name = 'ButtonKA' ) then ButtonKAClick(Sender) else if ( namiska.Name = 'ButtonPP' ) then ButtonPPClick(Sender) else if ( namiska.Name = 'ButtonNollaa' ) then ButtonNollaaClick(Sender); end; end; constructor TAutolaskuri.Create(AOwner: TComponent); begin inherited Create(AOwner); end; procedure TAutolaskuri.LabelHAClick(Sender: TObject); begin Raahaa(Sender as TControl, Raahaava1Arrive,1234); end; procedure TAutolaskuri.Raahaava1Arrive(o, wnd: TControl; data: Integer); begin if (o is TLabel) and (wnd <> NIL) and (wnd is TPanel) then (o as TLAbel).Caption := 'Paneeli!'; end; end.