Results 1 to 8 of 8

Thread: How to Set length of players[0].strings[0]?

  1. #1
    Join Date
    Jan 2009
    Posts
    103
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default How to Set length of players[0].strings[0]?

    Hey all, im having problems with this code:

    Code:
    program New;
    {.include SRL/SRL.scar}
    
    
    var
    frmDesign : TForm;
      Banner : TImage;
      Labels: Array[0..10] of TLabel;
      Edit: Array[0..5] Of TEdit;
      ComboBox : Array[0..1] of TComboBox;
      ListBox1 : TListBox;
      Button: Array[0..7] Of TButton;
      Memo1 : TMemo;
      NoP,PlaySel,LoadsToDo: integer;
      RockType: String;
    
      
    Function CheckThaForm: Boolean;
    var
    i: integer;
    begin
         For i:=0 to 5 do
         begin
              if Edit[i].text= '' then
              begin
                   Writeln('Please Fill Out the Whole Form!!!');
                   Result:= False;
                   Exit;
              end;
         end;
         Result:=true;
    end;
    
    Procedure CheckButtonEnable;
    begin
         if NoP>0 then
         begin
              Button[0].enabled:=true;
              Button[2].enabled:=true;
         end;
         if NoP>1 then
         begin
              Button[3].enabled:=true;
         end;
         if NoP<1 then
          begin
               Button[0].enabled:=false;
               Button[2].enabled:=false;
          end;
         if NoP<2 then
          begin
               Button[3].enabled:=false;
          end;
         if PlaySel=0 then
         begin
              Button[0].enabled:=false;
         end;
         If PlaySel= NoP then
         begin
              Button[3].enabled:=false;
         end;
    end;
    
    Procedure MakeList;
    var
    i: integer;
    begin
         ListBox1.Clear;
         For i:=0 to NoP-1 do
         begin
              ListBox1.Items.Add(inttostr(i)+':   '+Players[i].name);
         end;
         Labels[0].Caption:=('You Currently have '+IntToStr(NoP)+' Player(s)');
         Labels[6].Caption:=(IntToStr(PlaySel)+':  ');
    end;
    
    Procedure SavePlayers;
    var
    i: integer;
    SaveFile: TStringList;
    begin
        SaveFile:= TStringList.Create;
        SaveFile.Add(IntToStr(NoP));
         For i:=0 to NoP-1 do
         begin
              SaveFile.Add(Players[i].Name);
              SaveFile.Add(Players[i].Pass);
              SaveFile.Add(Players[i].Nick);
              SaveFile.Add(booltostr(Players[i].Active));
              SaveFile.Add(Players[i].Strings[0]);
              SaveFile.Add(IntToStr(Players[i].Integers[0]));
         end;
        SaveToFile(SaveFile,AppPath+'Superbatmans_Forms\Players');
    end;
    
    Procedure LoadPlayers;
    var
    LoadFile: TSTringList;
    i: integer;
    begin
    if fileexists(AppPath+'Superbatmans_Forms\Players') then
      begin
         LoadFile:= TStringList.Create;
         if LoadFromFile(LoadFile,AppPath+'Superbatmans_Forms\Players') then
         begin
              NoP:=StrToInt(LoadFile.Strings[0]);
              For i:=0 to NoP-1 do
              begin
                   Players[i].name:=LoadFile.Strings[(i*6)+1];
                   Players[i].pass:=LoadFile.Strings[(i*6)+2];
                   Players[i].nick:=LoadFile.Strings[(i*6)+3];
                   Players[i].active:=StrToBool(LoadFile.Strings[(i*6)+4]);
                   Players[i].Strings[0]:=LoadFile.Strings[(i*6)+5];
                   Players[i].Integers[0]:=StrToInt(LoadFile.Strings[(i*6)+6]);
              end;
              Edit[0].text:= Players[0].Name;
              Edit[1].text:= Players[0].Pass;
              Edit[2].text:= Players[0].Nick;
              For i:=0 to NoP-1 do
              begin
                   ListBox1.Items.Add(IntToStr(i)+':   '+Players[i].Name);
              end;
              PlaySel:=0;
         end;
      end;
    end;
    
    Procedure SaveAndStartClick(Sender: TObject);
    begin
         If CheckThaForm then
         begin
              SavePlayers;
              frmDesign.ModalResult:= mrOk;
         end;
    end;
    
    Procedure SaveAndExitclick(Sender:Tobject);
    begin
         If CheckThaForm then
         begin
              SavePlayers;
              frmDesign.ModalResult:= mrOk;
              TerminateScript;
         end;
    end;
    
    
    Procedure AddClick(Sender: TObject);
    begin
         if CheckThaForm then
         begin
              NoP:=NoP+1;
              SetArrayLength(Players,NoP);
              Players[NoP-1].Name:=Edit[0].text;
              Players[NoP-1].Pass:=Edit[1].text;
              Players[NoP-1].Nick:=Edit[2].text;
              Players[NoP-1].Active:=StrToBool(ComboBox[0].text);
              Players[NoP-1].Strings[0]:=ComboBox[1].text;
              Players[NoP-1].Integers[0]:=StrToInt(Edit[5].text);
              CheckButtonEnable;
              MakeList;
              PlaySel:=PlaySel+1;
         end;
    end;
    
    Procedure PrevPlayer(Sender: TObject);
    begin
         Playsel:=PlaySel-1;
         Labels[6].Caption:=(IntToStr(PlaySel)+':  ');
         Edit[0].text:=Players[PlaySel].Name;
         Edit[1].text:=Players[PlaySel].Pass;
         Edit[2].text:=Players[PlaySel].Nick;
         ComboBox[0].text:=BoolToStr(Players[PlaySel].active);
         ComboBox[1].text:= Players[PlaySel].Strings[0];
         Edit[5].text:=IntToStr(Players[PlaySel].Integers[0]);
         CheckButtonEnable;
    end;
    
    Procedure NextPlayers(Sender: TObject);
    begin
         Playsel:=PlaySel+1;
         Labels[6].Caption:=(IntToStr(PlaySel)+':  ');
         Edit[0].text:=Players[PlaySel].Name;
         Edit[1].text:=Players[PlaySel].Pass;
         Edit[2].text:=Players[PlaySel].Nick;
         ComboBox[0].text:=BoolToStr(Players[PlaySel].active);
         ComboBox[1].text:= Players[PlaySel].Strings[0];
         Edit[5].text:=IntToStr(Players[PlaySel].Integers[0]);
         CheckButtonEnable;
    end;
    
    Procedure DeletePlayer(Sender: TObject);
    var
    i: integer;
    begin
         NoP:=NoP-1;
         SetArrayLength(Players,NoP)
         for i:=PlaySel to High(Players) do
         begin
              Players[i].Name:=Players[i+1].Name;
              Players[i].Pass:=Players[i+1].Pass;
              Players[i].Nick:=Players[i+1].Nick;
              Players[i].Active:=Players[i+1].Active;
              Players[i].Strings[0]:=Players[i+1].Strings[0];
              Players[i].Integers[0]:=Players[i+1].Integers[0];
         end;
         PlaySel:=PlaySel-1;
         MakeList;
         CheckButtonEnable;
    end;
    
    Procedure ExitForm(Sender: TObject);
    begin
          frmDesign.ModalResult:= mrOk;
          TerminateScript;
    end;
    
    procedure InitForm;
    var
    i: integer;
    begin
           frmDesign := CreateForm;
           frmDesign.Left := 250;
           frmDesign.Top := 114;
           frmDesign.Width := 555;
           frmDesign.Height := 570;
           frmDesign.Caption := 'frmDesign';
           frmDesign.Color := clWhite;
           frmDesign.Font.Color := clWindowText;
           frmDesign.Font.Height := -11;
           frmDesign.Font.Name := 'MS Sans Serif';
           frmDesign.Font.Style := [];
           frmDesign.Visible := false;
           frmDesign.PixelsPerInch := 96;
           Banner := TImage.Create(frmDesign);
           Banner.Parent := frmDesign;
           Banner.Left := 0;
           Banner.Top := 0;
           Banner.Width := 537;
           Banner.Height := 81;
           For i:=0 to 10 do
           begin
                Labels[i]:=Tlabel.Create(frmDesign);
                Labels[i].Parent:=frmDesign;
           end;
           For i:=1 to 5 do
           begin
                Labels[i].Width :=52;
                Labels[i].Height:=13;
                Labels[i].Left:=16;
                Labels[i].Top:=104+(32*i);
           end;
           For i:=7 to 9 do
           begin
                Labels[i].Width:=76;
                Labels[i].Height:=13;
                Labels[i].Left:=368;
                Labels[i].Top:=72+(56*(i-6));
           end;
           Labels[0].Left := 88;
           Labels[0].Top := 88;
           Labels[0].Width := 142;
           Labels[0].Height := 13;
           Labels[0].Caption := 'You Currently have Player[s]   ';
           Labels[1].Caption := 'Username: ';
           Labels[2].Caption := 'Password: ';
           Labels[3].Caption := 'Nick:        ';
           Labels[4].Caption := 'Active:     ';
           Labels[5].Caption := 'Rock:      ';
           Labels[6].Left := 80;
           Labels[6].Top := 112;
           Labels[6].Width := 9;
           Labels[6].Height := 13;
           Labels[6].Caption := '0:';
           Labels[7].Caption := 'SRL ID: ';
           Labels[8].Caption := 'SRL Password: ';
           Labels[9].Caption := 'Loads To Do: ';
           Labels[10].Left := 56;
           Labels[10].Top := 344;
           Labels[10].Width := 278;
           Labels[10].Height := 13;
           Labels[10].Caption := 'Best Progress Report For Superbatman'#39's Power Miner V1.0';
           For i:=0 to 5 do
           begin
                Edit[i]:=TEdit.Create(frmDesign);
                Edit[i].Parent:= frmDesign;
                Edit[i].Width:=121;
                Edit[i].Height:=21;
           end;
           For i:=0 to 2 do
           begin
                Edit[i].Left:=72;
                Edit[i].Top:=104+((i+1)*32);
                Edit[i].TabOrder:=8+i;
           end;
           For i:=3 to 5 do
           begin
                Edit[i].Left:=368;
                Edit[i].TabOrder:=14+(i-3);
                Edit[i].Top:=96+(56*(i-2));
           end;
           Edit[1].PasswordChar:='*';
           Edit[4].PasswordChar:='*';
           LoadPlayers;
           For i:=0 to 1 do
           begin
                ComboBox[i]:=TComboBox.Create(frmDesign);
                ComboBox[i].Parent:= frmDesign;
                ComboBox[i].Width:=121;
                ComboBox[i].Height:=21;
                ComboBox[i].ItemHeight:=13;
                ComboBox[i].Left:=72;
                ComboBox[i].Top:=232+(32*i);
                ComboBox[i].TabOrder:=11+i;
           end;
           ComboBox[0].Text:='True';
           ComboBox[0].Items.Add('True');
           ComboBox[0].Items.Add('False');
           ComboBox[1].Text:='Copper';
           ComboBox[1].Items.Add('Copper');
           ComboBox[1].Items.Add('Tin');
           ComboBox[1].Items.Add('Iron');
           ComboBox[1].Items.Add('Coal');
           ComboBox[1].Items.Add('Mithril');
           ComboBox[1].Items.Add('Adamantite');
           ComboBox[1].Items.Add('Runite');
           ListBox1 := TListBox.Create(frmDesign);
           ListBox1.Parent := frmDesign;
           ListBox1.Left := 224;
           ListBox1.Top := 136;
           ListBox1.Width := 113;
           ListBox1.Height := 153;
           ListBox1.ItemHeight := 13;
           ListBox1.TabOrder := 13;
           For i:=0 to 7 do
           begin
                Button[i]:= TButton.Create(frmDesign);
                Button[i].Parent:= frmDesign;
                Button[i].TabOrder:=17+i;
                Button[i].Width:=81;
                Button[i].Height:=25;
           end;
           For i:=0 to 3 do
           begin
                Button[i].Top:=296;
                Button[i].Left:=40+(i*104);
           end;
           For i:=4 to 7 do
           begin
                Button[i].Top:=488;
                Button[i].Left:=40+((i-4)*104);
           end;
           CheckButtonEnable;
           Button[0].Caption := '<---------';
           Button[0].OnClick:=@PrevPlayer;
           Button[1].Caption := 'Add Player';
           Button[1].OnClick:=@AddClick;
           Button[2].Caption := 'Delete Player';
           Button[2].OnClick:=@DeletePlayer;
           Memo1 := TMemo.Create(frmDesign);
           Memo1.Parent := frmDesign;
           Memo1.Left := 32;
           Memo1.Top := 360;
           Memo1.Width := 425;
           Memo1.Height := 121;
           Memo1.Lines.Add('######################################');
           Memo1.Lines.Add('#SuperBatmans''s Miner Thing');
           Memo1.Lines.Add('#Xp gained: 60480');
           Memo1.Lines.Add('#Time Running: 3 Hours, 16 Minutes and 0 Seconds');
           Memo1.Lines.Add('#');
           Memo1.Lines.Add('#Terminated For: Demon Random Event');
           Memo1.TabOrder := 20;
           Button[3].Caption := '--------->';
           Button[3].OnClick:=@NextPlayers;
           Button[4].Caption := 'Exit';
           Button[4].OnClick:=@ExitForm;
           Button[5].Caption := 'Save and Exit';
           Button[5].OnClick:=@SaveAndExitClick;
           Button[6].Caption := 'Save and Start';
           Button[5].OnClick:=@SaveAndStartClick;
           Button[7].Caption := 'Back To Menu';
    end;
    
    Procedure Initform2;
    begin
    end;
    
    
    procedure SafeInitForm(WF: integer);
    var
      v: TVariantArray;
    begin
      setarraylength(V, 0);
      if WF=0 then
      begin
           ThreadSafeCall('InitForm', v);
      end;
      if WF=1 then
      begin
           ThreadSafeCall('InitForm1',v);
      end;
    end;
    
    procedure ShowFormModal;
    begin
        FrmDesign.ShowModal;
    end;
    
    procedure SafeShowFormModal;
    var
      v: TVariantArray;
    begin
      setarraylength(V, 0);
      ThreadSafeCall('ShowFormModal', v);
    end;
    
    Procedure OpenForm(WF: integer);
    begin
         SafeInitForm(WF);
         SafeShowFormModal;
    end;
    
    begin
         OpenForm(0);
    end.
    The First error is on, well now pretty much all buttons, cause im out of range on players[].strings[] and players[].integers[], but i dont know how to set those. I tried setlength(Players[].strings[],NoP) but it askes for identifier expected. Second error is on Load players, says thats out of range too, i dont see where that is out of range. Dont Comment on the buttons enabled, or that kinda stuff, cause im sitll working on that, just trying to figure out this error first. You might notice a similarity to MK's forms, i really like the way his looked so i kinda stole his format, sorry bought that.

  2. #2
    Join Date
    Oct 2006
    Location
    ithurtsithurtsithurtsithurts
    Posts
    2,930
    Mentioned
    7 Post(s)
    Quoted
    135 Post(s)

    Default

    Take a look inside the Players.scar include file, specifically at the NumberOfPlayers procedure.

  3. #3
    Join Date
    Jan 2008
    Location
    Ontario, Canada
    Posts
    7,805
    Mentioned
    5 Post(s)
    Quoted
    3 Post(s)

    Default

    They aren't arrays.

    You have 100 strings to work with in the type Players[0].Strings[0]. Remember, the [] indicates an array, and this one is a single dimension aka only one value, not an array of values.



    E: You could use the Array: Players[0].strings if that's what you were looking for.
    Writing an SRL Member Application | [Updated] Pascal Scripting Statements
    My GitHub

    Progress Report:
    13:46 <@BenLand100> <SourceCode> @BenLand100: what you have just said shows you 
                        have serious physchological problems
    13:46 <@BenLand100> HE GETS IT!
    13:46 <@BenLand100> HE FINALLY GETS IT!!!!1

  4. #4
    Join Date
    Jan 2009
    Posts
    103
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Alright, I got the first error out, any idea on how to fix the loadplayers error? also, if you look at my code, i modified it with another form, but for some reason, i cant get it to open another form OnClick.
    Code:
    program New;
    {.include SRL/SRL.scar}
    
    
    var
      MineForm : TForm;
      Banner : TImage;
      Labels: Array[0..10] of TLabel;
      Edit: Array[0..5] Of TEdit;
      ComboBox : Array[0..1] of TComboBox;
      ListBox1 : TListBox;
      Button: Array[0..7] Of TButton;
      Memo1 : TMemo;
      NoP,PlaySel,LoadsToDo,CP: integer;
      RockType: String;
      MainForm1 : TForm;
      Label1 : TLabel;
      MainButton:Array[0..4] of TButton;
    
    
    Procedure FirstSetup;
    begin
         HowManyPlayers:=NoP;
         NumberOfPlayers(HowManyPlayers);
         CurrentPlayer:= CP;
    end;
      
    Function CheckThaForm: Boolean;
    var
    i: integer;
    begin
         For i:=0 to 5 do
         begin
              if Edit[i].text= '' then
              begin
                   Writeln('Please Fill Out the Whole Form!!!');
                   Result:= False;
                   Exit;
              end;
         end;
         Result:=true;
    end;
    
    Procedure CheckButtonEnable;
    begin
         if NoP>0 then
         begin
              Button[0].enabled:=true;
              Button[2].enabled:=true;
         end;
         if NoP>1 then
         begin
              Button[3].enabled:=true;
         end;
         if NoP<1 then
          begin
               Button[0].enabled:=false;
               Button[2].enabled:=false;
          end;
         if NoP<2 then
          begin
               Button[3].enabled:=false;
          end;
         if PlaySel=0 then
         begin
              Button[0].enabled:=false;
         end;
         If PlaySel= NoP then
         begin
              Button[3].enabled:=false;
         end;
    end;
    
    Procedure MakeList;
    var
    i: integer;
    begin
         ListBox1.Clear;
         For i:=0 to NoP-1 do
         begin
              ListBox1.Items.Add(inttostr(i)+':   '+Players[i].name);
         end;
         Labels[0].Caption:=('You Currently have '+IntToStr(NoP)+' Player(s)');
         Labels[6].Caption:=(IntToStr(PlaySel)+':  ');
    end;
    
    Procedure SavePlayers;
    var
    i: integer;
    SaveFile: TStringList;
    begin
        SaveFile:= TStringList.Create;
        SaveFile.Add(IntToStr(NoP));
         For i:=0 to NoP-1 do
         begin
              SaveFile.Add(Players[i].Name);
              SaveFile.Add(Players[i].Pass);
              SaveFile.Add(Players[i].Nick);
              SaveFile.Add(booltostr(Players[i].Active));
              SaveFile.Add(Players[i].Strings[0]);
              SaveFile.Add(IntToStr(Players[i].Integers[0]));
         end;
        SaveToFile(SaveFile,AppPath+'Superbatmans_Forms\Players');
    end;
    
    Procedure LoadPlayers;
    var
    LoadFile: TSTringList;
    i: integer;
    begin
    if fileexists(AppPath+'Superbatmans_Forms\Players') then
      begin
         LoadFile:= TStringList.Create;
         if LoadFromFile(LoadFile,AppPath+'Superbatmans_Forms\Players') then
         begin
              NoP:=StrToInt(LoadFile.Strings[0]);
              For i:=0 to NoP-1 do
              begin
                   Players[i].name:=LoadFile.Strings[(i*6)+1];
                   Players[i].pass:=LoadFile.Strings[(i*6)+2];
                   Players[i].nick:=LoadFile.Strings[(i*6)+3];
                   Players[i].active:=StrToBool(LoadFile.Strings[(i*6)+4]);
                   Players[i].Strings[0]:=LoadFile.Strings[(i*6)+5];
                   Players[i].Integers[0]:=StrToInt(LoadFile.Strings[(i*6)+6]);
              end;
              Edit[0].text:= Players[0].Name;
              Edit[1].text:= Players[0].Pass;
              Edit[2].text:= Players[0].Nick;
              For i:=0 to NoP-1 do
              begin
                   ListBox1.Items.Add(IntToStr(i)+':   '+Players[i].Name);
              end;
              PlaySel:=0;
         end;
      end;
    end;
    
    Procedure SaveAndStartClick(Sender: TObject);
    begin
         If CheckThaForm then
         begin
              SavePlayers;
              MineForm.ModalResult:= mrOk;
         end;
    end;
    
    Procedure SaveAndExitclick(Sender:Tobject);
    begin
         If CheckThaForm then
         begin
              SavePlayers;
              MineForm.ModalResult:= mrOk;
              TerminateScript;
         end;
    end;
    
    
    Procedure AddClick(Sender: TObject);
    begin
         if CheckThaForm then
         begin
              NoP:=NoP+1;
              firstSetup;
              SetArrayLength(Players,NoP);
              Players[NoP-1].Name:=Edit[0].text;
              Players[NoP-1].Pass:=Edit[1].text;
              Players[NoP-1].Nick:=Edit[2].text;
              Players[NoP-1].Active:=StrToBool(ComboBox[0].text);
              Players[NoP-1].Strings[0]:=ComboBox[1].text;
              Players[NoP-1].Integers[0]:=StrToInt(Edit[5].text);
              CheckButtonEnable;
              MakeList;
              PlaySel:=PlaySel+1;
         end;
    end;
    
    Procedure PrevPlayer(Sender: TObject);
    begin
         Playsel:=PlaySel-1;
         Labels[6].Caption:=(IntToStr(PlaySel)+':  ');
         Edit[0].text:=Players[PlaySel].Name;
         Edit[1].text:=Players[PlaySel].Pass;
         Edit[2].text:=Players[PlaySel].Nick;
         ComboBox[0].text:=BoolToStr(Players[PlaySel].active);
         ComboBox[1].text:= Players[PlaySel].Strings[0];
         Edit[5].text:=IntToStr(Players[PlaySel].Integers[0]);
         CheckButtonEnable;
    end;
    
    Procedure NextPlayers(Sender: TObject);
    begin
         Playsel:=PlaySel+1;
         Labels[6].Caption:=(IntToStr(PlaySel)+':  ');
         Edit[0].text:=Players[PlaySel].Name;
         Edit[1].text:=Players[PlaySel].Pass;
         Edit[2].text:=Players[PlaySel].Nick;
         ComboBox[0].text:=BoolToStr(Players[PlaySel].active);
         ComboBox[1].text:= Players[PlaySel].Strings[0];
         Edit[5].text:=IntToStr(Players[PlaySel].Integers[0]);
         CheckButtonEnable;
    end;
    
    Procedure DeletePlayer(Sender: TObject);
    var
    i: integer;
    begin
         NoP:=NoP-1;
         SetArrayLength(Players,NoP)
         for i:=PlaySel to High(Players) do
         begin
              Players[i].Name:=Players[i+1].Name;
              Players[i].Pass:=Players[i+1].Pass;
              Players[i].Nick:=Players[i+1].Nick;
              Players[i].Active:=Players[i+1].Active;
              Players[i].Strings[0]:=Players[i+1].Strings[0];
              Players[i].Integers[0]:=Players[i+1].Integers[0];
         end;
         PlaySel:=PlaySel-1;
         MakeList;
         CheckButtonEnable;
    end;
    
    
    Procedure ExitForm(Sender: TObject);
    begin
          MineForm.ModalResult:= mrOk;
          TerminateScript;
    end;
    
    procedure SafeInitForm(WF: integer);
    var
      v: TVariantArray;
    begin
      setarraylength(V, 0);
      if WF=0 then
      begin
           ThreadSafeCall('InitForm', v);
      end;
      if WF=1 then
      begin
           ThreadSafeCall('InitForm1',v);
      end;
    end;
    
    procedure ShowFormModal1;
    begin
    
        MineForm.ShowModal;
    end;
    
    Procedure ShowFormModal2;
    begin
         MainForm1.ShowModal;
    end;
    
    
    procedure SafeShowFormModal(WhatForm: string);
    var
      v: TVariantArray;
    begin
      setarraylength(V, 0);
      Case WhatForm Of
       'Mine':     ThreadSafeCall('ShowFormModal1', v);
       'MainForm1': ThreadSafeCall('ShowFormModal2',v);
      end;
    end;
    
    Procedure OpenForm(WF: integer;WhatForm: String);
    begin
         SafeInitForm(WF);
         SafeShowFormModal(WhatForm);
    end;
    
    Procedure OpenMineForm(Sender:TObject);
    begin
         OpenForm(0,'mine');
         MainForm1.ModalResult:= mrOk;
    end;
    
    procedure InitForm;
    var
    i: integer;
    begin
           MineForm := CreateForm;
           MineForm.Left := 250;
           MineForm.Top := 114;
           MineForm.Width := 555;
           MineForm.Height := 570;
           MineForm.Caption := 'frmDesign';
           MineForm.Color := clWhite;
           MineForm.Font.Color := clWindowText;
           MineForm.Font.Height := -11;
           MineForm.Font.Name := 'MS Sans Serif';
           MineForm.Font.Style := [];
           MineForm.Visible := false;
           MineForm.PixelsPerInch := 96;
           Banner := TImage.Create(MineForm);
           Banner.Parent := MineForm;
           Banner.Left := 0;
           Banner.Top := 0;
           Banner.Width := 537;
           Banner.Height := 81;
           For i:=0 to 10 do
           begin
                Labels[i]:=Tlabel.Create(MineForm);
                Labels[i].Parent:=MineForm;
           end;
           For i:=1 to 5 do
           begin
                Labels[i].Width :=52;
                Labels[i].Height:=13;
                Labels[i].Left:=16;
                Labels[i].Top:=104+(32*i);
           end;
           For i:=7 to 9 do
           begin
                Labels[i].Width:=76;
                Labels[i].Height:=13;
                Labels[i].Left:=368;
                Labels[i].Top:=72+(56*(i-6));
           end;
           Labels[0].Left := 88;
           Labels[0].Top := 88;
           Labels[0].Width := 142;
           Labels[0].Height := 13;
           Labels[0].Caption := 'You Currently have Player[s]   ';
           Labels[1].Caption := 'Username: ';
           Labels[2].Caption := 'Password: ';
           Labels[3].Caption := 'Nick:        ';
           Labels[4].Caption := 'Active:     ';
           Labels[5].Caption := 'Rock:      ';
           Labels[6].Left := 80;
           Labels[6].Top := 112;
           Labels[6].Width := 9;
           Labels[6].Height := 13;
           Labels[6].Caption := '0:';
           Labels[7].Caption := 'SRL ID: ';
           Labels[8].Caption := 'SRL Password: ';
           Labels[9].Caption := 'Loads To Do: ';
           Labels[10].Left := 56;
           Labels[10].Top := 344;
           Labels[10].Width := 278;
           Labels[10].Height := 13;
           Labels[10].Caption := 'Best Progress Report For Superbatman'#39's Power Miner V1.0';
           For i:=0 to 5 do
           begin
                Edit[i]:=TEdit.Create(MineForm);
                Edit[i].Parent:= MineForm;
                Edit[i].Width:=121;
                Edit[i].Height:=21;
           end;
           For i:=0 to 2 do
           begin
                Edit[i].Left:=72;
                Edit[i].Top:=104+((i+1)*32);
                Edit[i].TabOrder:=8+i;
           end;
           For i:=3 to 5 do
           begin
                Edit[i].Left:=368;
                Edit[i].TabOrder:=14+(i-3);
                Edit[i].Top:=96+(56*(i-2));
           end;
           Edit[1].PasswordChar:='*';
           Edit[4].PasswordChar:='*';
     //      LoadPlayers;
           For i:=0 to 1 do
           begin
                ComboBox[i]:=TComboBox.Create(MineForm);
                ComboBox[i].Parent:= MineForm;
                ComboBox[i].Width:=121;
                ComboBox[i].Height:=21;
                ComboBox[i].ItemHeight:=13;
                ComboBox[i].Left:=72;
                ComboBox[i].Top:=232+(32*i);
                ComboBox[i].TabOrder:=11+i;
           end;
           ComboBox[0].Text:='True';
           ComboBox[0].Items.Add('True');
           ComboBox[0].Items.Add('False');
           ComboBox[1].Text:='Copper';
           ComboBox[1].Items.Add('Copper');
           ComboBox[1].Items.Add('Tin');
           ComboBox[1].Items.Add('Iron');
           ComboBox[1].Items.Add('Coal');
           ComboBox[1].Items.Add('Mithril');
           ComboBox[1].Items.Add('Adamantite');
           ComboBox[1].Items.Add('Runite');
           ListBox1 := TListBox.Create(MineForm);
           ListBox1.Parent := MineForm;
           ListBox1.Left := 224;
           ListBox1.Top := 136;
           ListBox1.Width := 113;
           ListBox1.Height := 153;
           ListBox1.ItemHeight := 13;
           ListBox1.TabOrder := 13;
           For i:=0 to 7 do
           begin
                Button[i]:= TButton.Create(MineForm);
                Button[i].Parent:= MineForm;
                Button[i].TabOrder:=17+i;
                Button[i].Width:=81;
                Button[i].Height:=25;
           end;
           For i:=0 to 3 do
           begin
                Button[i].Top:=296;
                Button[i].Left:=40+(i*104);
           end;
           For i:=4 to 7 do
           begin
                Button[i].Top:=488;
                Button[i].Left:=40+((i-4)*104);
           end;
           CheckButtonEnable;
           Button[0].Caption := '<---------';
           Button[0].OnClick:=@PrevPlayer;
           Button[1].Caption := 'Add Player';
           Button[1].OnClick:=@AddClick;
           Button[2].Caption := 'Delete Player';
           Button[2].OnClick:=@DeletePlayer;
           Memo1 := TMemo.Create(MineForm);
           Memo1.Parent := MineForm;
           Memo1.Left := 32;
           Memo1.Top := 360;
           Memo1.Width := 425;
           Memo1.Height := 121;
           Memo1.Lines.Add('######################################');
           Memo1.Lines.Add('#SuperBatmans''s Miner Thing');
           Memo1.Lines.Add('#Xp gained: 60480');
           Memo1.Lines.Add('#Time Running: 3 Hours, 16 Minutes and 0 Seconds');
           Memo1.Lines.Add('#');
           Memo1.Lines.Add('#Terminated For: Demon Random Event');
           Memo1.TabOrder := 20;
           Button[3].Caption := '--------->';
           Button[3].OnClick:=@NextPlayers;
           Button[4].Caption := 'Exit';
           Button[4].OnClick:=@ExitForm;
           Button[5].Caption := 'Save and Exit';
           Button[5].OnClick:=@SaveAndExitClick;
           Button[6].Caption := 'Save and Start';
           Button[5].OnClick:=@SaveAndStartClick;
           Button[7].Caption := 'Back To Menu';
    end;
    
    Procedure Initform1;
    var
    i: integer;
    begin
         MainForm1 := CreateForm;
         MainForm1.Left := 250;
         MainForm1.Top := 114;
         MainForm1.Width := 281;
         MainForm1.Height := 436;
         MainForm1.Caption := 'SuperBatman'#39's Script Pack';
         MainForm1.Color := clWhite;
         MainForm1.Font.Color := clWindowText;
         MainForm1.Font.Height := -11;
         MainForm1.Font.Name := 'MS Sans Serif';
         MainForm1.Font.Style := [];
         MainForm1.Visible := False;
         MainForm1.PixelsPerInch := 96;
         Label1 := TLabel.Create(MainForm1);
         Label1.Parent := MainForm1;
         Label1.Left := 24;
         Label1.Top := 32;
         Label1.Width := 217;
         Label1.Height := 23;
         Label1.Caption := 'SuperBatman'#39's Script Pack!';
         Label1.Font.Color := clRed;
         Label1.Font.Height := -16;
         Label1.Font.Name := 'Comic Sans MS';
         Label1.Font.Style := [fsBold];
         Label1.ParentFont := False;
         For i:=0 to 4 do
         begin
              MainButton[i]:= TButton.Create(MainForm1);
              MainButton[i].Parent:=MainForm1;
              MainButton[i].Left:=24;
              MainButton[i].Width:=217;
              MainButton[i].Height:=41;
              MainButton[i].Top:=72+(64*i);
              MainButton[i].TabOrder:=8+i;
         end;
         MainButton[0].OnClick:=@OpenMineForm;
              
    {MainButton0 := TButton.Create(MainForm1);
    MainButton0.Parent := MainForm1;
    MainButton0.Left := 24;
    MainButton0.Top := 72;
    MainButton0.Width := 217;
    MainButton0.Height := 41;}
    MainButton[0].Caption := 'Super Miner';
    //MainButton0.TabOrder := 8;}
    //MainButton1 := TButton.Create(MainForm1);
    {MainButton1.Parent := MainForm1;
    MainButton1.Left := 24;
    MainButton1.Top := 136;
    MainButton1.Width := 217;
    MainButton1.Height := 41;  }
    MainButton[1].Caption := 'Super Cooker';
    {MainButton1.Font.Color := clWindowText;
    MainButton1.Font.Height := -11;
    MainButton1.Font.Name := 'Main';
    MainButton1.Font.Style := [];
    MainButton1.ParentFont := False;
    MainButton1.TabOrder := 9;
    MainButton2 := TButton.Create(MainForm1);
    MainButton2.Parent := MainForm1;
    MainButton2.Left := 24;
    MainButton2.Top := 200;
    MainButton2.Width := 217;
    MainButton2.Height := 41;   }
    MainButton[2].Caption := 'Super Fisher';
    {MainButton2.TabOrder := 10;
    MainButton3 := TButton.Create(MainForm1);
    MainButton3.Parent := MainForm1;
    MainButton3.Left := 24;
    MainButton3.Top := 264;
    MainButton3.Width := 217;
    MainButton3.Height := 41; }
    MainButton[3].Caption := 'Super WoodCutter';
    {MainButton3.TabOrder := 11;
    MainButton4 := TButton.Create(MainForm1);
    MainButton4.Parent := MainForm1;
    MainButton4.Left := 24;
    MainButton4.Top := 328;
    MainButton4.Width := 217;
    MainButton4.Height := 41;    }
    MainButton[4].Caption := 'Next Page';
    //MainButton4.TabOrder := 12;
    
    
    end;
    
    
    
    
    begin
         FirstSetup;
         OpenForm(1,'MainForm1');
    end.
    Last edited by superbatman; 03-28-2009 at 07:24 PM.

  5. #5
    Join Date
    Jan 2008
    Location
    Ontario, Canada
    Posts
    7,805
    Mentioned
    5 Post(s)
    Quoted
    3 Post(s)

    Default

    What are you trying todo?

    Also, I find if you remove the SafeCalls then debugging a form is much easier.
    Writing an SRL Member Application | [Updated] Pascal Scripting Statements
    My GitHub

    Progress Report:
    13:46 <@BenLand100> <SourceCode> @BenLand100: what you have just said shows you 
                        have serious physchological problems
    13:46 <@BenLand100> HE GETS IT!
    13:46 <@BenLand100> HE FINALLY GETS IT!!!!1

  6. #6
    Join Date
    Jan 2009
    Posts
    103
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Well im trying to Get it to where if a button on one form is pushed, it will close the current form and open the other one. Run the new script i have put in and you will see that it opens a different form. push the Super Miner form, and that should open the other form.

  7. #7
    Join Date
    Jun 2007
    Location
    Wednesday
    Posts
    2,446
    Mentioned
    3 Post(s)
    Quoted
    1 Post(s)

    Default

    Perform the init for both forms at the beginning, then just set the ModalResult to mrOk on the closing form and doing ShowModal on the new form should work in the same safe thread. It may be that it dislikes doing this inside the same procedure, in which case you can try setting a global boolean value (something like showForm) and set it to true then doing ModalResult := MrOk on your closing form. In you main loop, create an infinite loop and add the ThreadSafeCall for showing them in it for both of them, but after each one do "if not showForm then break". This method may work if the previous doesn't, but I haven't had to play with two completely separate forms too much.
    By reading this signature you agree that mixster is superior to you in each and every way except the bad ways but including the really bad ways.

  8. #8
    Join Date
    Jan 2009
    Posts
    103
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Hmmm... i kinda get what your saying, ill mess around with it a bit when i find my usb drive =/

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
  •