⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainunit.pas

📁 IDE开发环境
💻 PAS
📖 第 1 页 / 共 5 页
字号:


  {
  While Count <= TotalItems Do
    Begin
      if (TreeView2.Items[Count].Text = 'BASIC Project') Then Begin
        Inc(Count);
        Continue;
      End;
      if (TreeView2.Items[Count].Parent.Text = 'Code View') Then Begin
        if (TTabSheet(TreeView2.Items[Count].Data).Tag <> 1) Then Begin
          TTabSheet(TreeView2.Items[Count].Data).TabVisible := False;
          TTabSheet(TreeView2.Items[Count].Data).Free;
          TreeView2.Items[Count].Delete;
          Dec(TotalItems);
          Inc(Count);
          Continue;
        End;
     End;
      if (TreeView2.Items[Count].Parent.Text = 'Form Designer') Then Begin
          ShowWindow(TMDIChild(TreeView2.Items[Count].Data).Handle, SW_HIDE);
          TMDIChild(TreeView2.Items[Count].Data).Close;
          TreeView2.Items[Count].Delete;
          Dec(TotalItems);
          Inc(Count);
          Continue;
      End;
      Inc(Count);
    End;}
//   ShowWindow(Form1.Handle, SW_HIDE);
{   CloseChildren := False;
   MainForm.Save1.Enabled := False;
   MainForm.SaveAs1.Enabled := False;
   Compile1.Enabled := False;
   CompileRun1.Enabled  := False;
   TBXItem17.Enabled := False;
   TBXItem15.Enabled := False;
   TBXItem3.Enabled := False;
   TBXItem11.Enabled := False;
   TBXItem12.Enabled := False;}
   TreeView2.Items.Clear;
   FormCount := 1;
   MainForm.MDIChildren[0].Close;
end;

procedure TMainForm.Exit1Click(Sender: TObject);
begin
  CloseChildren := True;
  Close;
end;

procedure TMainForm.Undo1Click(Sender: TObject);
begin
IF ActiveMDIChild.Handle = Form1.Handle then
//  Form1.CodeSense1.ExecuteCmd(cmCmdUndo)
  Unit1.CodeSense[Form1.Tabs.ActivePageIndex].ExecuteCmd(cmCmdUndo)
  else
  RTDesigner1.Undo;
end;

procedure TMainForm.Copy1Click(Sender: TObject);
begin
  if ActiveMDIChild.Handle = Form1.Handle then
    begin
      if Unit1.CodeSense[Form1.Tabs.ActivePageIndex].SelLength > 0 then
        Unit1.CodeSense[Form1.Tabs.ActivePageIndex].Copy;
    end
  else
    begin
      RTDesigner1.CopyToClipboard;
    end;
end;

procedure TMainForm.Paste1Click(Sender: TObject);
begin
  if ActiveMDIChild.Handle = Form1.Handle then  //If the Code View is the active page...
    Unit1.CodeSense[Form1.Tabs.ActivePageIndex].Paste
  else
    begin
      RTDesigner1.PasteFromClipboard;
    end;
end;

procedure TMainForm.Cut1Click(Sender: TObject);
begin
  if ActiveMDIChild.Handle = Form1.Handle then
    begin
      if Unit1.CodeSense[Form1.Tabs.ActivePageIndex].SelLength > 0 then
        Unit1.CodeSense[Form1.Tabs.ActivePageIndex].Cut;
    end
  else
    begin
      RTDesigner1.CopyToClipboard;
      RTDesigner1.DeleteSelection;
    end;
end;

procedure TMainForm.RTDesigner1UndoChange(Sender: TObject);
begin
  Undo1.Enabled:=RTDesigner1.UndoKind<>ukNone;
  Undo1.Caption:=RTDesigner1.UndoString;
end;

procedure TMainForm.RTDesigner1InsertQuery(Sender: TObject;
  Control: TControl; var aClass: TControlClass);
begin
  aClass:=GetControlClass;
end;

procedure TMainForm.Aligntogrid1Click(Sender: TObject);
begin
  IF RTDesigner1.Selected(RTDesigner1.Control[0]) = true then
    exit;;;
  RTDesigner1.AlignToGrid;
end;

procedure TMainForm.RTDesigner1PopulateDesignerMenu(Sender: TObject;
  var Menu: TPopupMenu);
begin
//  Menu.Items.Add(NewLine);
//  Menu.Items.Add(NewItem('This is only an example', 0, False, True, nil, 0, 'PopupMenuExample1'));
//  Menu.Items.Add(NewItem('how to use OnPopulateDesignMenu', 0, False, True, nil, 0, 'PopupMenuExample2'));
end;

procedure TMainForm.x(Sender: TObject;
  Control: TControl);
var Items : Integer;
begin
  if Control is TLabel Then TLabel(Control).Transparent:=True;
  RTDesigner1.AlignToGrid;
  ComboBox1.Items.AddObject(Control.Name,TObject(Control));
  SelectAt(FindString(Control.Name));
  For Items := 0 To TreeView2.Items.Count-1 Do
    begin
      if TreeView2.Items[Items].Data = Control.Parent Then
        begin
          TreeView2.Select(TreeView2.Items.AddChildObject(TreeView2.Items[Items], Control.Name, TObject(Control)));
        end;
    End;
//    RTDesigner1.AcceptedControls.Add(RTDesigner1.AddControl(TBUtton,Control.Parent, 0, 0, 'hello', true));
//    RTDesigner1.AcceptedControls.Add(Control);
//    RTDesigner1.AcceptedControls.Add(Pointer(CreateWindowEx(0,'button','hello',WS_VISIBLE Or WS_CHILD, 0, 0, 35, 35, Control.Parent.Handle, HMENU(0), HInstance, nil)));
    RTDesigner1.ShowSelection(True);
//  OldWindProc := Pointer(SetWindowLong(Form1.Handle, GWL_WNDPROC, LongInt(@NewWindProc)));
//  SetOldWindowProcedure(LongInt(OldWindProc));
end;

procedure TMainForm.Editmode1Click(Sender: TObject);
begin
  RTDesigner1.EditMode:=not RTDesigner1.EditMode;
  EditMode1.Checked:=RTDesigner1.EditMode;
end;

procedure TMainForm.TabChange(Sender: TObject);
begin
{  if Tab.TabIndex = 0 Then
     begin
       BLabel.Visible := True;
       BEdit.Visible := True;
       BButton.Visible := True;
       BSpeedButton.Visible := True;
       SpeedButton1.Visible := True;
     end
  Else if Tab.TabIndex = 1 Then
     begin
       BLabel.Visible := False;
       BEdit.Visible := False;
       BButton.Visible := False;
       BSpeedButton.Visible := False;
       SpeedButton1.Visible := False;
     end;}
end;

procedure TMainForm.FormShow(Sender: TObject);
var aChild     : TMDIChild;
    TempNode   : TTreeNode;
    CurrentlyAt: Integer;
    SettingsINI: TINIFile;
    MenuStyle  : Integer;
    GrabHandle : Integer;
    GridX      : Integer;
    GridY      : Integer;
    SnapToGrid : Boolean;
    PassedName : String; //file name that could have been passed
    RecentFile : String;
    RecentFileTB: array[1..10] of TTBXItem;
    RecentTBClick: array[1..10] of TNotifyEvent;
begin
  SettingsINI := TINIFile.Create('BASICIDE.INI');
  RegisterLanguages(Unit1.CodeSense[0]);
  aChild := TMDIChild.Create(Application);
  ShowWindow(aChild.Handle, SW_HIDE);
  TreeView2.Items.Clear;
  TreeView2.Items.Add(TreeView2.TopItem, 'BASIC Project');
  TempNode := TreeView2.Items.AddChildObject(TreeView2.Items.AddChild(TreeView2.Items[0], 'Code View'), Form1.Tabs.ActivePage.Caption, TObject(Form1.Tabs.ActivePage));
  TempNode.ImageIndex := 3;
  TreeView2.Items[1].Expanded := True;     //Items[1] = Code View
//  TreeView2.Select(TreeView2.Items.AddChildObject(TreeView2.Items.AddChild(TreeView2.Items[0], 'Code View'), Form1.Tabs.ActivePage.Caption, TObject(Form1.Tabs.ActivePage)));
  TempNode := TreeView2.Items.AddChildFirst(TreeView2.TopItem, 'Form Designer');
  TBXItem17Click(Sender); //File|New|Form

  Utils.SetSettings;

  //see if there was a filename passed to load.
  IF ParamCount > 0 then //there was a file name passed
  begin
    //need to loop because Windoze when passing a param (such as when you double
    //click on a file it doesn't put quotes around the filename. If there is
    //a space, it gets treated as two params.
    for CurrentlyAt := 1 to ParamCount do //starts at one because 0 is <path>\BASICIDE.exe
    begin
      //a space because there should be one (see notes above on Windows)
      if CurrentlyAt < 2 then //it better be 1, or else!
        PassedName := PassedName + '' + ParamStr(CurrentlyAt)
      else
        PassedName := PassedName + ' ' + ParamStr(CurrentlyAt);
    end;

    IF FileExists(PassedName) then
      LoadProject(PassedName, Sender)
    else
      MessageDlg('Error: The invalid file name '+PassedName+' was passed. That file will not be opened. Try doing File|Open and selecting the and clicking OK.', mtError, [mbOK], 0);
  end; //end param num check if

  RecentFilesMenu.Clear;

  //load recent menu:
  for CurrentlyAt := 1 to 10 do
  begin
    RecentFile := SettingsINI.ReadString('RecentFiles','File'+IntToStr(CurrentlyAt), '');
    IF RecentFile = '' then //at the end of recent files
      exit;;

    RecentNamePublic := RecentFile; //because we can't pass params w/ a TNotifyEvent
    RecentFileTB[CurrentlyAt] := TTBXItem.Create(RecentFilesMenu);
    RecentFileTB[CurrentlyAt].Caption := RecentFile;
    RecentFilesMenu.Add(RecentFileTB[CurrentlyAt]);
    RecentTBClick[CurrentlyAt] := LoadRecentProject;
    RecentFileTB[CurrentlyAt].OnClick := RecentTBClick[CurrentlyAt];
  end;
end;

procedure TMainForm.ComboBox1Click(Sender: TObject);
begin
    RTDesigner1.SelectNone;
  with ComboBox1 do
    RTDesigner1.AddToSelection(TControl(Items.Objects[ItemIndex]));
    RTDesigner1.ShowSelection(True);
end;

procedure TMainForm.BeforeSelectControl(Sender: TObject; Control: TControl;
  var DoSelect: Boolean);
var I : Integer;
begin
  SelectAt(FindString(Control.Name));
  for I := 0 To TreeView2.Items.Count-1 Do
    begin
     if TreeView2.Items[I].Data = Control Then
        TreeView2.Select(TreeView2.Items[I]);
    end;
  Properties.Cells[1,0]:= Control.Parent.Name;
  Properties.Cells[1,1]:= IntToStr(Control.Top);
  Properties.Cells[1,2]:= IntToStr(Control.Left);
  Properties.Cells[1,3]:= IntToStr(Control.Height);
  Properties.Cells[1,4]:= IntToStr(Control.Width);
end;

procedure TMainForm.TabControl1Change(Sender: TObject);
begin
Properties.Top := 24;
//Hola
end;

procedure TMainForm.MainFormResize(Sender: TObject);
begin
//Hola
end;


procedure TMainForm.AfteMove(Sender: TObject);
begin
  Properties.Cells[1,0]:= RTDesigner1.Control[0].Parent.Name;
  Properties.Cells[1,1]:= IntToStr(RTDesigner1.Control[0].Top);
  Properties.Cells[1,2]:= IntToStr(RTDesigner1.Control[0].Left);
  Properties.Cells[1,3]:= IntToStr(RTDesigner1.Control[0].Height);
  Properties.Cells[1,4]:= IntToStr(RTDesigner1.Control[0].Width);
end;

procedure TMainForm.AfterSized(Sender: TObject);
begin
  Properties.Cells[1,0]:= RTDesigner1.Control[0].Parent.Name;
  Properties.Cells[1,1]:= IntToStr(RTDesigner1.Control[0].Top);
  Properties.Cells[1,2]:= IntToStr(RTDesigner1.Control[0].Left);
  Properties.Cells[1,3]:= IntToStr(RTDesigner1.Control[0].Height);
  Properties.Cells[1,4]:= IntToStr(RTDesigner1.Control[0].Width);
end;

procedure TMainForm.DeleteQuery(Sender: TObject; var DoDelete: Boolean);
  Var k : integer;
begin
  for K := 0 to RTDesigner1.Controls.Count-1 do
    ComboBox1.Items.Delete(FindString(RTDesigner1.Control[K].Name));
    ComboBox1.ItemIndex := 0;
//    SetWindowLong(Form1.Handle, GWL_WNDPROC, LongInt(OldWindProc));
end;

procedure TMainForm.PropertiesExit(Sender: TObject);
begin
{  RTDesigner1.Control[0].Top := StrToInt(Properties.Cells[1,1]);
  RTDesigner1.Control[0].Left := StrToInt(Properties.Cells[1,2]);
  RTDesigner1.Control[0].Height := StrToInt(Properties.Cells[1,3]);
  RTDesigner1.Control[0].Width := StrToInt(Properties.Cells[1,4]);
  RTDesigner1.UpdateSelection;}
end;

procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  CloseChildren := True;
  Application.Terminate;
end;


procedure TMainForm.Compile1Click(Sender: TObject);
begin
Run2Click(Sender);
end;

procedure TMainForm.About1Click(Sender: TObject);
begin
  AboutBox.Show;
end;

procedure TMainForm.XPStyleMenus1Click(Sender: TObject);
begin
  If Sender = XPStyleMenus1 Then
    Begin
      TBXSetTheme('OfficeXP');
      NormalStyleMenus1.Checked := False;
      StripesStyleMenus1.Checked := False;
      XPStyleMenus1.Checked := True;
      Exit;
    End;
  If Sender = NormalStyleMenus1 Then
    Begin
      TBXSetTheme('Default');
      XPStyleMenus1.Checked := False;
      StripesStyleMenus1.Checked := False;
      NormalStyleMenus1.Checked := True;
      Exit;
    End;
  If Sender = StripesStyleMenus1 Then
    Begin
      TBXSetTheme('Stripes');
      NormalStyleMenus1.Checked := False;
      XPStyleMenus1.Checked := False;
      StripesStyleMenus1.Checked := True;
      Exit;
    End;
{  If XPStyleMenus1.Checked = True then
    begin
      TBXSetTheme('Normal');
    end
  else
    begin
      TBXSetTheme('OfficeXP');
      XPStyleMenus1.Checked := True;
    end}
end;

procedure TMainForm.RunCompile1Click(Sender: TObject);
var INIFile : TINIFile;
begin
INIFile := TINIFile.Create(ProjectName);
      Save1Click(Sender);
      Form1.Panel1.Height := 100;
      Form1.Memo1.Text := '';

      DeleteFile(PChar(ChangeFileExt(ProjectName, '.EXE'))); //In RQ, the compile will fail if the EXE already exists?
      //The Current Directory needs to be where the compiler EXE is:
      SetCurrentDir(ExtractFilePath(INIFile.ReadString('Project', 'CompileCommand-Long', '')));

      //Set the compile command:
      DosCommand1.CommandLine := Format(INIFile.ReadString('Project', 'CompileCommand-8.3', ''), [INIFile.ReadString('Project', 'CompileFile-8.3', '')]);
      if ActiveMDIChild.Handle <> Form1.Handle then

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -