Results 1 to 4 of 4

Thread: Form

  1. #1
    Join Date
    Mar 2008
    Posts
    1,492
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default Form

    I have a pretty major script I have been making for quite some time coming out soon. It is quite a beauty (in functionality, not so much code :P). I have very little clue on how to make forms. I have some knowledge, I have read the tutorials available but they are all incomplete. So I am wondering if anyone would like to help me make it (by giving me answers to random questions of mine); or make it for me and get a mention in my script.

  2. #2
    Join Date
    Oct 2008
    Location
    behind you!
    Posts
    1,688
    Mentioned
    2 Post(s)
    Quoted
    40 Post(s)

    Default

    my AutoTalker has a sexy form... but i made it 2 now about months ago... XD... maybe i can help you in a way... if you have a MSN then add me

    Tickyy_@msn.com
    Hi

  3. #3
    Join Date
    Apr 2007
    Posts
    3,152
    Mentioned
    3 Post(s)
    Quoted
    1 Post(s)

    Default

    talk to me on msn or whatnot.
    SCAR Tutorials: The Form Tutorial | Types, Arrays, and Classes
    Programming Projects: NotePad | Tetris | Chess


  4. #4
    Join Date
    Mar 2007
    Location
    Players[-1].Loc
    Posts
    962
    Mentioned
    4 Post(s)
    Quoted
    5 Post(s)

    Default

    SCAR Code:
    Program mansLaughterForm;

    var (* Form components *)
      Form:TForm;
      TabController:TPageControl;
      Tabs:array[1..3] of TTabSheet;
      PlayerScrollBox:TScrollBox;
      PlayerFormEdits:array[1..5] of array of TEdit;
      PlayerFormLabels:array[1..5] of array of TLabel;
      PlayerFormChecks:array of TCheckBox;
      OtherEdits:array[1..4] of TEdit;
      Labels:array[1..4] of TLabel;
      Checks:array[1..5] of TCheckBox;
      HerbDropDown: TComboBox;
      PlayerAdd,PlayerDelete,SaveSettings,LoadSettings:TButton;
      Ok,Cancel:TButton;
      AnObject:TObject; // Because TObjects can't be used as variants for ThreadSafeCalls
     
    var (* Script variables *)
      Settings: array[1..7] of Variant;
     
    function TheForm:Boolean; forward;
    procedure SetEditProperties(var anEdit:TEdit;var aLabel:TLabel;x,y,w,h:integer;text:string;password:boolean); forward;
    procedure VanishLabel; forward;
    procedure SafeVanishLabel(Sender:TObject); forward;
    procedure AddPlayer; forward;
    procedure SafeAddPlayer(Sender:TObject); forward;
    procedure DeletePlayer; forward;
    procedure SafeDeletePlayer(Sender:TObject); forward;
    procedure EnablePlayer(Sender:TObject); forward;
    procedure ScriptTerminate; forward;
    procedure SaveTheSettings(Sender:TObject); forward;
    procedure LoadTheSettings(Sender:TObject); forward;
    procedure OnFormClose(Sender: TObject; var CanClose: Boolean); forward;
    procedure CloseForm(Sender:TObject); forward;

    function TheForm:Boolean;
    var
      i:integer;
      s: array of string;
    begin
      Form := CreateForm;
      Form.SetBounds(0,0,600,450);
      Form.Position := poScreenCenter;
      Form.Caption := 'mansLaughter [Edgeville Man Killer] —— by Iron Man Ftw —— Form by Widget';
      Form.BorderIcons := [biSystemMenu];
      Form.OnClick := @SafeVanishLabel;
      Form.OnCloseQuery := @OnFormClose;
      TabController := TPageControl.Create(Form);
      TabController.Parent := Form;
      TabController.SetBounds(2,2,590,385);
      TabController.Visible := True;
      for i := 1 to 2 do
      begin
        Tabs[i] := TTabSheet.Create(Form);
        Tabs[i].PageControl := TabController;
      end;
      Tabs[1].Caption := 'Setup';
      Tabs[2].Caption := 'Players';
     // Tabs[3].Caption := 'Autoresponder'; // Not yet =)
      for i := 1 to 4 do
      begin
        OtherEdits[i] := TEdit.Create(Form);
        OtherEdits[i].Parent := Tabs[1];
        OtherEdits[i].OnClick := @SafeVanishLabel;
        Labels[i] := TLabel.Create(Form);
        Labels[i].Parent := OtherEdits[i];
        Labels[i].Font.Color := $AAAAAA;
        Labels[i].Color := OtherEdits[i].Color;
        Labels[i].Transparent := False;
        Labels[i].OnClick := @SafeVanishLabel;
      end;
      SetEditProperties(OtherEdits[1],Labels[1],50,50,120,20,'Stats ID',False);
      SetEditProperties(OtherEdits[2],Labels[2],175,50,150,20,'Stats Pass',True);
      SetEditProperties(OtherEdits[3],Labels[3],50,80,135,20,'Mouse Speed',False);
      SetEditProperties(OtherEdits[4],Labels[4],190,80,135,20,'SMART World',False);
      OtherEdits[3].Text := '15';
      OtherEdits[4].Text := '55';
      for i := 1 to 5 do
      begin
        Checks[i] := TCheckBox.Create(Form);
        Checks[i].Parent := Tabs[1]
        Checks[i].SetBounds(51,80+30*i,270,20);
      end;
      Checks[1].Caption := 'Use reflection';
      Checks[1].OnClick := @EnablePlayer;
      Checks[2].Caption := 'Bank bones';
      Checks[2].OnClick := @EnablePlayer;
      Checks[3].Caption := 'Pick up herbs above';
      Checks[3].OnClick := @EnablePlayer;
      Checks[3].Enabled := False;
      Checks[4].Caption := 'Keep door shut';
      Checks[4].Checked := True;
      Checks[4].Enabled := False;
      Checks[5].Caption := 'as well as Guams (members worlds only), uses reflection';
      Checks[5].Checked := True;
      Checks[5].Enabled := False;
      Checks[5].SetBounds(276,170,270,20);
      HerbDropDown := TComboBox.Create(Form);
      HerbDropDown.Parent := Tabs[1];
      HerbDropDown.SetBounds(170,170,100,20);
      s := ['Guam','Marrentill','Tarromin','Harralander','Ranarr',
        'Irit','Avantoe','Snapdragon','Cadantine','Lantadyme','Dwarf Weed'];
      for i := 0 to High(s) do
        HerbDropDown.Items.Append(s[i]);
      HerbDropDown.Style := csDropDownList;
      HerbDropDown.ItemIndex := 0;
      HerbDropDown.Enabled := False;
      PlayerScrollBox := TScrollBox.Create(Form);
      PlayerScrollBox.Parent := Tabs[2];
      PlayerScrollBox.SetBounds(10,10,560,275);
      PlayerScrollBox.Color := 16119800;
      SafeAddPlayer(Form);
      PlayerAdd := TButton.Create(Form);
      PlayerAdd.Parent := Tabs[2];
      PlayerAdd.SetBounds(30,300,100,25);
      PlayerAdd.Caption := 'Add Player';
      PlayerAdd.OnClick := @SafeAddPlayer;
      PlayerDelete := TButton.Create(Form);
      PlayerDelete.Parent := Tabs[2];
      PlayerDelete.SetBounds(135,300,100,25);
      PlayerDelete.Caption := 'Delete Player';
      PlayerDelete.OnClick := @SafeDeletePlayer;
      SaveSettings := TButton.Create(Form);
      SaveSettings.Parent := Form;
      SaveSettings.SetBounds(5,387,100,25);
      SaveSettings.Caption := 'Save Players';
      SaveSettings.OnClick := @SaveTheSettings;
      LoadSettings := TButton.Create(Form);
      LoadSettings.Parent := Form;
      LoadSettings.SetBounds(110,387,100,25);
      LoadSettings.Caption := 'Load Players';
      LoadSettings.OnClick := @LoadTheSettings;
      LoadTheSettings(Form);
      Ok := TButton.Create(Form);
      Ok.Parent := Form;
      Ok.SetBounds(485,387,100,25);
      Ok.Caption := 'OK';
      Ok.OnClick := @CloseForm;
      Cancel := TButton.Create(Form);
      Cancel.Parent := Form;
      Cancel.SetBounds(380,387,100,25);
      Cancel.Caption := 'Cancel';
      Cancel.OnClick := @CloseForm;
      Result := (Form.ShowModal=MrOk);
    end;

    function ShowForm:Boolean;
    var
      tva:Tvariantarray;
    begin
      result := ThreadSafeCall('TheForm',tva);
    end;

    procedure SetEditProperties(var anEdit:TEdit;var aLabel:TLabel;x,y,w,h:integer;text:string;password:boolean);
    begin
      anEdit.SetBounds(x,y,w,h);
      if password then
        anEdit.PasswordChar := '*';
      aLabel.SetBounds(w-Form.Canvas.TextWidth(text)-5,-1,Form.Canvas.TextWidth(text)+5,20);
      aLabel.Caption := text;
    end;

    procedure SafeVanishLabel(Sender:TObject);
    var
      tva:Tvariantarray;
    begin
      AnObject := Sender;
      tva := [];
      try
        ThreadSafeCall('VanishLabel',tva);
      except
        Writeln('Thread error');
      end;
    end;

    procedure VanishLabel;
    var
      i,i2:integer;
      TheEdit:TEdit;
      TheLabel:TLabel;
      Sender:TObject;
    begin
      try
        Sender := AnObject;
        for i := 1 to high(OtherEdits) do
          if not Labels[i].visible then
            Labels[i].visible := true;
        for i := 1 to 5 do
          for i2 := 0 to (getarraylength(PlayerFormEdits[1])-1) do
            if not PlayerFormLabels[i][i2].Visible then
              PlayerFormLabels[i][i2].Visible := True;
        TheLabel := nil;
        TheEdit := nil;
        for i := 1 to high(OtherEdits) do
          if (Sender=OtherEdits[i]) OR (Sender=Labels[i]) then
          begin
            TheLabel := Labels[i];
            TheEdit := OtherEdits[i];
          end;
        for i := 1 to high(PlayerFormEdits) do
          for i2 := 1 to getarraylength(PlayerFormEdits[1]) do
            if (Sender=PlayerFormEdits[i][i2-1]) OR (Sender=PlayerFormLabels[i][i2-1]) then
            begin
              TheLabel := PlayerFormLabels[i][i2-1];
              TheEdit := PlayerFormEdits[i][i2-1];
            end;
        if not ((TheEdit=nil) OR (TheLabel=nil)) then
        begin
          TheLabel.Visible := False;
          TheEdit.SetFocus;
        end else
          if not (Sender=Form) then
            Form.SetFocus;
        Sender := nil;
        AnObject := nil;
      except
        Writeln('Weird error with the labels *sigh*');
      end;
    end;

    procedure AddPlayer;
    var
      i,i2:integer;
    begin
      i2 := GetarrayLength(PlayerFormEdits[1]);
      for i := 1 to 5 do
      begin
        SetarrayLength(PlayerFormEdits[i],GetarrayLength(PlayerFormEdits[i])+1);
        SetarrayLength(PlayerFormLabels[i],GetarrayLength(PlayerFormLabels[i])+1);
        PlayerFormEdits[i][i2] := TEdit.Create(Form);
        PlayerFormEdits[i][i2].Visible := False;
        PlayerFormEdits[i][i2].Parent := PlayerScrollBox;
        PlayerFormEdits[i][i2].OnClick := @SafeVanishLabel;
        PlayerFormLabels[i][i2] := TLabel.Create(Form);
        PlayerFormLabels[i][i2].Parent := PlayerFormEdits[i][i2];
        PlayerFormLabels[i][i2].Font.Color := $AAAAAA;
        PlayerFormLabels[i][i2].Color := PlayerFormEdits[i][0].Color;
        PlayerFormLabels[i][i2].OnClick := @SafeVanishLabel;
      end;
      SetarrayLength(PlayerFormChecks,GetarrayLength(PlayerFormChecks)+1);
      SetEditProperties(PlayerFormEdits[1][i2],PlayerFormLabels[1][i2],25,10+25*i2,120,20,'Username',false);
      SetEditProperties(PlayerFormEdits[2][i2],PlayerFormLabels[2][i2],150,10+25*i2,120,20,'Password',true);
      SetEditProperties(PlayerFormEdits[3][i2],PlayerFormLabels[3][i2],275,10+25*i2,70,20,'Nick',false);
      SetEditProperties(PlayerFormEdits[4][i2],PlayerFormLabels[4][i2],350,10+25*i2,70,20,'PIN',false);
      SetEditProperties(PlayerFormEdits[5][i2],PlayerFormLabels[5][i2],425,10+25*i2,110,20,'Something Else',false);
      PlayerFormEdits[5][i2].Enabled := False;
      PlayerFormEdits[5][i2].Text := 'N/A';
      PlayerFormChecks[i2] := TCheckBox.Create(Form);
      PlayerFormChecks[i2].Visible := False;
      PlayerFormChecks[i2].Color := 16119800;
      PlayerFormChecks[i2].Parent := PlayerScrollBox;
      PlayerFormChecks[i2].SetBounds(5,11+25*i2,20,20);
      PlayerFormChecks[i2].Checked := True;
      PlayerFormChecks[i2].OnClick := @EnablePlayer;
      for i := 1 to 5 do
      begin
        PlayerFormEdits[i][i2].Visible := True;
        PlayerFormLabels[i][i2].Visible := True;
      end;
      PlayerFormChecks[i2].Visible := True;
    end;

    procedure SafeAddPlayer(Sender:TObject);
    var
      tva:Tvariantarray;
    begin
      ThreadSafeCall('AddPlayer',tva);
    end;

    procedure DeletePlayer;
    var
      i,i2:integer;
    begin
      try
        i := GetarrayLength(PlayerFormChecks)-1;
        if (i=0) then Exit;
        for i2 := 1 to 5 do
        begin
          PlayerFormEdits[i2][i].Parent := nil;
          PlayerFormLabels[i2][i].Parent := nil;
          PlayerFormEdits[i2][i].Free;
          PlayerFormLabels[i2][i].Free;
          SetarrayLength(PlayerFormLabels[i2],i);
          SetarrayLength(PlayerFormEdits[i2],i);
        end;
        PlayerFormChecks[i].Parent := nil;
        SetarrayLength(PlayerFormChecks,i);
      except
        GetApplication.MessageBox('Error deleting player','Error',1);
      end;
    end;

    procedure SafeDeletePlayer(Sender:TObject);
    var
      tva:Tvariantarray;
    begin
      ThreadSafeCall('DeletePlayer',tva);
    end;

    procedure EnablePlayer(Sender:TObject);
    var
      i,i2:integer;
    begin
      if Sender=Checks[1] then
      begin
        Checks[3].Enabled := Checks[1].Checked;
        Checks[5].Enabled := Checks[1].Checked and Checks[3].Checked;
        HerbDropDown.Enabled := Checks[1].Checked and Checks[3].Checked;
        Exit;
      end;
      if Sender=Checks[3] then
      begin
        Checks[5].Enabled := Checks[3].Checked;
        HerbDropDown.Enabled := Checks[3].Checked;
        Exit;
      end;
      for i := 0 to (getarraylength(PlayerFormChecks)-1) do
        if Sender=PlayerFormChecks[i] then Break;
      for i2 := 1 to 5 do
      begin
        PlayerFormEdits[i2][i].Enabled := PlayerFormChecks[i].Checked and (i2 <> 5);
        if PlayerFormChecks[i].Checked then
          PlayerFormEdits[i2][i].Color := $FFFFFF
        else
          PlayerFormEdits[i2][i].Color := $EEEEEE;
      end;
    end;

    function Encrypt(text:string):string;
    var
      i:integer;
    begin
      for i := 1 to length(text) do
        result := result+Chr(ord(text[i])-8);
    end;

    function Decrypt(text:string):string;
    var
      i:integer;
    begin
      for i := 1 to length(text) do
        result := result+Chr(ord(text[i])+8);
    end;

    procedure SaveTheSettings(Sender:TObject);
    var
      path:string;
      i:integer;
    begin
      Path := AppPath+'mansLaughter.ini';
      WriteINI('Settings','StatsID',OtherEdits[1].Text,Path);
      WriteINI('Settings','StatsPass',Encrypt(OtherEdits[2].Text),Path);
      WriteINI('Settings','MouseSpeed',OtherEdits[3].Text,Path);
      WriteINI('Settings','SmartWorld',OtherEdits[4].Text,Path);
      WriteINI('Settings','BuryBones',BoolToStr(Checks[1].Checked),Path);
      WriteINI('Settings','BankBones',BoolToStr(Checks[2].Checked),Path);
      WriteINI('Settings','PickUpHerbs',BoolToStr(Checks[3].Checked),Path);
      WriteINI('Settings','KeepDoorShut',BoolToStr(Checks[4].Checked),Path);
      WriteINI('Settings','GuamsToo',BoolToStr(Checks[5].Checked),Path);
      WriteINI('Settings','Herbs',HerbDropDown.Text,Path);
      WriteINI('Settings','Players',IntToStr(GetarrayLength(PlayerFormEdits[1])),Path);
      for i := 0 to (GetarrayLength(PlayerFormEdits[1])-1) do
      begin
        WriteINI('Player'+inttostr(i),'User',PlayerFormEdits[1][i].Text,Path);
        WriteINI('Player'+inttostr(i),'Pass',Encrypt(PlayerFormEdits[2][i].Text),Path);
        WriteINI('Player'+inttostr(i),'Nick',PlayerFormEdits[3][i].Text,Path);
        WriteINI('Player'+inttostr(i),'PIN',PlayerFormEdits[4][i].Text,Path);
        WriteINI('Player'+inttostr(i),'Loads',PlayerFormEdits[5][i].Text,Path);
      end;
    end;

    procedure LoadTheSettings(Sender:TObject);
    var
      path:string;
      i:integer;
    begin
      Path := AppPath+'mansLaughter.ini';
      if not FileExists(path) then Exit;
      OtherEdits[1].Text := ReadINI('Settings','StatsID',path);
      OtherEdits[2].Text := Decrypt(ReadINI('Settings','StatsPass',path));
      OtherEdits[3].Text := ReadINI('Settings','MouseSpeed',path);
      OtherEdits[4].Text := ReadINI('Settings','SmartWorld',path);
      for i := 2 to GetarrayLength(PlayerFormEdits[1]) do
        SafeDeletePlayer(Form);
      for i := 0 to (StrToIntDef(ReadINI('Settings','Players',path),0)-1) do
      begin
        if (i>0) then
          SafeAddPlayer(Form);
        PlayerFormEdits[1][i].Text := ReadINI('Player'+inttostr(i),'User',path);
        PlayerFormEdits[2][i].Text := Decrypt(ReadINI('Player'+inttostr(i),'Pass',path));
        PlayerFormEdits[3][i].Text := ReadINI('Player'+inttostr(i),'Nick',path);
        PlayerFormEdits[4][i].Text := ReadINI('Player'+inttostr(i),'PIN',path);
        PlayerFormEdits[5][i].Text := ReadINI('Player'+inttostr(i),'Loads',path);
      end;
      Checks[1].Checked := StrToBoolDef(ReadINI('Settings','UsePouches',path),False);
      Checks[2].Checked := StrToBoolDef(ReadINI('Settings','Autorespond',path),False);
      Checks[4].Checked := StrToBoolDef(ReadINI('Settings','KeepDoorShut',Path),False);
      Checks[5].Checked := StrToBoolDef(ReadINI('Settings','GuamsToo',Path),False);
      HerbDropDown.ItemIndex := HerbDropDown.Items.IndexOf(ReadINI('Settings','Herbs',Path));
    end;

    procedure OnFormClose(Sender: TObject; var CanClose: Boolean);
    var
      message:integer;
    begin
      message := GetApplication.MessageBox('Would you like to save the form settings?','Save Changes?',3);
      CanClose := (message<>2);
      if (message=6) then
        SaveTheSettings(Form);
    end;

    procedure CloseForm(Sender:TObject);
    var
      i, i2: integer;
    begin
      if (Sender=Ok) then
      begin
      {  NumberOfPlayers(High(PlayerFormEdits));
        for i := 0 to High(Players) do
        begin
          if not PlayerFormChecks[i].Checked then Continue;
          Players[i].Name := PlayerFormEdits[1][i].Text;
          Players[i].Pass := PlayerFormEdits[2][i].Text;
          Players[i].Nick := PlayerFormEdits[3][i].Text;
          Players[i].Pin := PlayerFormEdits[4][i].Text;
          Players[i].WhateverElseYouWant := PlayerFormEdits[5][i].Text;
          Players[i].Active := PlayerFormChecks[i].Checked;
          Inc(i2);
        end;          }

        for i := 1 to 5 do
          Settings[i] := Checks[i].Enabled;
        Settings[6] := HerbDropDown.Text;
      //  SRLID := OtherEdits[1].Text;
      //  SRLPassword := OtherEdits[2].Text;
        Form.ModalResult := mrOk;
      end else
        Form.ModalResult := mrCancel;
    end;

    procedure ScriptTerminate;
    begin
      Writeln('Script ending');
      // Bitmaps and such would be freed here
    end;


              (**************************************
             /*         Main Script Start         */
             *************************************)


    begin
    if ShowForm then
      Writeln('Clicked OK')
    else
      Writeln('Clicked Cancel');
    Writeln('Form closed');
    FreeForm(Form);
    writeln('Form freed');
    end.

    If you need help editing it just add my msn

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •