📄 mainunit.pas
字号:
{
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 + -