📄 mainform.pas
字号:
// ReadClass;
Result:= TComponentClass(GetClass(SelectedComponentName));
if not ShiftKeyed then SelectedComponentName:= '';
end;
function TFMainForm.GetLinkForm:TForm;
// Return form linked with active unit
var
I:Integer;
begin
Result:= nil;
for I:=0 to Screen.FormCount-1 do
begin
if Screen.Forms[I] is TProxyForm then
if TProxyForm(Screen.Forms[I]).FileName = ActiveUnit then
begin
Result:=Screen.Forms[I];
Break;
end;
end;
end;
procedure TFMainForm.ProxyFormShow(Sender: TObject);
begin
if ProxyDesigner = nil then Exit;
ObjectInspector.GetPropertyInfo(ProxyDesigner.Form);
ProxyDesigner.GetComponentList;
ObjectInspector.ComponentList.Text:= ProxyDesigner.Form.Name+':TForm';
end;
procedure TFMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
var
SaveResp:Integer;
begin
if (ProjectInfo.ProjectState = psChange) then
begin
SaveResp := MessageDlg(Format('Save Change to %s?',
[ExtractFileName(ProjectInfo.ProjectName)]), mtWarning, mbYesNoCancel, 0);
if SaveResp = idYes then SaveProject(ProjectInfo.ProjectName)
else if SaveResp = idCancel then Action:= caNone;
end;
CodeCompletionList.Free;
//SaveHistory(ProjectInfo.ProjectName);
end;
function TFmainForm.TryName(const Test:string;Comp:TComponent):Boolean;
{哪欺惩飘 捞抚捞 蜡老茄瘤 抛胶飘 秦焊绊, 父老 蜡老窍促搁 True甫 府畔窍绊, 酒聪搁
False甫 府畔茄促.}
var
I:Integer;
begin
Result:=False;
for I:=0 to Comp.ComponentCount-1 do
if CompareText(Comp.Components[I].Name,Test) =0 then Exit;
Result:=True;
end;
function TFMainForm.UniqueName(Comp:TComponent):string;
{钎霖 胆颇捞狼 盔蘑阑 荤侩窍咯 哪欺惩飘俊 措茄 蜡老茄 捞抚阑 积己茄促. 溜 <鸥涝><箭磊>
屈侥阑 荤侩窍绰单, <鸥涝>篮 哪欺惩飘狼 努贰胶 捞抚俊辑 'T'甫 猾 巴捞绊, <箭磊>绰
捞抚阑 窜老窍霸 父甸扁 困茄 沥荐捞促.}
var
I:Integer;
Fmt:string;
begin
if Comp.ClassName[1] in ['t','T'] then
Fmt:=Copy(Comp.ClassName,2,255)+'%d'
else Fmt:=Comp.ClassName+'%d';
if Comp.Owner = nil then
begin
{家蜡磊啊 绝栏骨肺 葛电 捞抚捞 悼老窍促. 1阑 荤侩茄促.}
Result:=Format(Fmt,[1]);
Exit;
end
else
begin
{蜡老茄 捞抚捞 唱棵 锭鳖瘤 , 啊瓷茄 箭磊甫 葛滴 矫氰茄促.}
for I:=1 to High(Integer) do
begin
Result:=Format(Fmt,[I]);
if TryName(Result,Comp.Owner) then Exit;
end;
end;
end;
function TFMainForm.GetUnitName(const FormName:string):string;
// Return unit name linked with FormName
var
I:Integer;
begin
Result:= '';
for I:=0 to ProjectInfo.FormItems.Count-1 do
begin
if Pos(FormName,ProjectInfo.FormItems[I])>0 then
begin
Result:= ProjectInfo.UnitItems[I];
Exit;
end;
end;
end;
procedure TFMainForm.ProjectAddItemClick(Sender: TObject);
begin
OpenDialog1.FileName:='';
OpenDialog1.FilterIndex:=3;
if OpenDialog1.Execute then
begin
ProjectInfo.UnitItems.Add(GetNetFileName(OpenDialog1.FileName));
ProjectInfo.FormItems.Add('Test');
ProjectInfo.InsertProjectCode(GetNetFileName(OpenDialog1.FileName),'Test');
end;
end;
procedure TFMainForm.ProjectRemoveItemClick(Sender: TObject);
begin
CreateShowModal(TRemoveProject);
end;
procedure TFMainForm.SaveProjectHistory(const Project:string);
// Save project information to ini file
var
LastNum,I:Integer;
List:TStringList;
begin
List:=TStringList.Create;
IniFile.ReadSectionValues('Closed Projects',List);
for I:=0 to List.Count-1 do
if List.Values[IntToStr(I)]=Project then
begin
List.Free;
Exit;
end;
LastNum:=IniFile.ReadInteger('Closed Projects','Last',0);
if LastNum < 5 then
begin
IniFile.WriteInteger('Closed Projects','Last',LastNum+1);
IniFile.WriteString('Closed Projects',IntToStr(LastNum+1),Project);
end
else IniFile.WriteInteger('Closed Projects','Last',0);
end;
procedure TFMainForm.SaveFileHistory(const Filename:string);
var
LastNum,I:Integer;
List:TStringList;
begin
List:=TStringList.Create;
IniFile.ReadSectionValues('Closed Files',List);
for I:=0 to List.Count-1 do
if List.Values[IntToStr(I)]= Filename then
begin
List.Free;
Exit;
end;
LastNum:=IniFile.ReadInteger('Closed Files','Last',0);
if LastNum<15 then
begin
IniFile.WriteInteger('Closed Files','Last',LastNum+1);
IniFile.WriteString('Closed Files',IntToStr(LastNum+1),Filename);
end
else IniFile.WriteInteger('ProjectHistory','Last',0);
end;
procedure TFMainForm.OpenHistory;
// 傈俊 佬菌带 橇肺璃飘客 蜡聪飘甫 皋春俊 眠啊茄促.
var
I:Integer;
NewMenuItem:TMenuItem;
List:TStringList;
begin
List:=TStringList.Create;
IniFile.ReadSectionValues('Closed Projects',List);
for I:=0 to List.Count-1 do
begin
if FileExistOnPath(List.Values[IntToStr(I)]) then
begin
NewMenuItem:=TMenuItem.Create(Self);
NewMenuItem.Caption:=List.Values[IntToStr(I)];
NewMenuItem.OnClick:= OpenHistoryFile;
FileReOpenItem.Add(NewMenuItem);
end;
end;
NewMenuItem:=TMenuItem.Create(Self);
NewMenuItem.Caption:= '-';
NewMenuItem.OnClick:= nil;
FileReOpenItem.Add(NewMenuItem);
IniFile.ReadSectionValues('Closed Files',List);
for I:=0 to List.Count-1 do
begin
if FileExistOnPath(List.Values[IntToStr(I)]) then
begin
NewMenuItem:= TMenuItem.Create(Self);
NewMenuItem.Caption:= List.Values[IntToStr(I)];
NewMenuItem.OnClick:= OpenHistoryFile;
FileReOpenItem.Add(NewMenuItem);
end;
end;
List.Free;
end;
procedure TFMainForm.OpenHistoryFile(Sender: TObject);
// 傈俊 佬菌带 橇肺璃飘甫 角青茄促.(促矫 凯扁 皋春俊辑 急琶窍绰 版快)
begin
if ExtractFileExt((Sender as TMenuItem).Caption)='.dpr' then
OpenProject((Sender as TMenuItem).Caption)
else OpenFile((Sender as TMenuItem).Caption);
end;
procedure TFMainForm.ToggleFormAndUnit;
// Toggle form/unit
var
I:Integer;
FileName:string;
begin
if not ToggleFormUnit then
begin
for I:=0 to Screen.FormCount - 1 do
if Screen.Forms[I] is TProxyForm then
begin
FileName:= ExtractFileName(TProxyForm(Screen.Forms[I]).FileName);
if FileName = EditorForm.Caption then
begin
Screen.Forms[I].SetFocus;
Break;
end;
end;
end
else if EditorForm.Visible then EditorForm.SetFocus;
end;
procedure TFMainForm.ExecuteTool(Sender: TObject);
var
ExeName:string;
begin
ExeName:=IniFile.ReadString('Tools',(Sender as TMenuItem).Caption,'');
WinExec(PChar(ExeName),SW_SHOWNORMAL);
end;
procedure TFMainForm.OpenTools;
var
I:Integer;
NewMenuItem:TMenuItem;
List:TStringList;
begin
List:=TStringList.Create;
IniFile.ReadSection('Tools',List);
for I:=0 to List.Count-1 do
begin
NewMenuItem:= TMenuItem.Create(Self);
NewMenuItem.Caption:= List[I];
NewMenuItem.OnClick:= ExecuteTool;
ToolsMenu.Add(NewMenuItem);
end;
List.Free;
end;
procedure TFMainForm.ViewWindowListItemClick(Sender: TObject);
begin
CreateShowModal(TWindowList);
end;
procedure TFMainForm.ViewComponentListItemClick(Sender: TObject);
begin
CreateShowModal(TComponentList);
end;
procedure TFMainForm.ToolsToolsItemClick(Sender: TObject);
begin
CreateShowModal(TTools);
end;
procedure TFMainForm.UpdateControl(State:TProjectState);
begin
case State of
psOpen:
begin
ProjectInfo.ProjectState := psOpen;
sbSaveAll.Enabled := False;
FileSaveAllItem.Enabled := False;
end;
psSave:
begin
ProjectInfo.ProjectState := psSave;
sbSaveAll.Enabled := False;
FileSaveAllItem.Enabled := False;
end;
psChange:
begin
ProjectInfo.ProjectState := psChange;
sbSaveAll.Enabled := True;
FileSaveAllItem.Enabled := True;
end;
psNew:
begin
ProjectInfo.ProjectState := psNew;
sbSaveAll.Enabled := True;
FileSaveAllItem.Enabled := True;
end;
end;
end;
function TFMainForm.SearchingText(SearchStr:string;Options:TmwSearchOptions):Boolean;
// 巩磊凯阑 八祸茄促.
begin
Result:= True;
if ActivePasEditor.SearchReplace(SearchStr, '', Options) = 0 then
begin
Beep;
MessageDlg('"'+SearchStr+'"'+' finished finding.', mtInformation , [mbOK], 0);
ActivePasEditor.SetFocus;
Result:= False;
end;
end;
procedure TFMainForm.SearchFindInFilesItemClick(Sender: TObject);
begin
CreateShowModal(TFindInFile);
end;
procedure TFMainForm.ReplacingText(FindText,ReplaceText:string;Options:TmwSearchOptions);
// 巩磊凯阑 促弗 巩磊凯肺 官槽促.
begin
ActivePasEditor.SearchReplace(FindText, ReplaceText, Options);
end;
procedure TFMainForm.ReadClass;
// 汽 颇老俊 乐绰 哪欺惩飘狼 努贰胶甫 殿废茄促.
begin
RegisterClasses([TForm , TButton , TMainMenu,
TPopupMenu , TLabel , TEdit,
TMemo , TRadioButton , TCheckBox,
TListBox , TComboBox , TScrollBar,
TGroupBox , TRadioGroup , TPanel,
TBitBtn , TSpeedButton , TMaskEdit,
TStringGrid , TImage , TShape,
TBevel , TScrollBox , TTabControl,
TPageControl , TTreeView , TListView,
TImageList , THeaderControl , TRichEdit,
TStatusBar , TTrackBar , TProgressBar,
TUpDown , THotKey , TTable,
TQuery , TDataSource , TStoredProc,
TDatabase , TSession , TBatchMove,
TUpdateSQL , TDBGrid , TDBNavigator,
TDBText , TDBEdit , TDBMemo,
TDBImage , TDBListBox , TDBComboBox,
TDBCheckBox , TDBRadioGroup , TDBLookupListBox,
TDBLookupComboBox , TDBCtrlGrid , TDBRichedit,
TDBLookupList , TDBLookupCombo , TTimer,
TPaintBox , TFileListBox , TDirectoryListBox,
TDriveComboBox , TFilterComboBox , TMediaPlayer,
TGauge , TColorGrid , TSpinButton,
TSpinEdit , TDirectoryOutline , TCalendar,
TWrapperControl , TOpenDialog , TTabSheet,
TSaveDialog , TFontDialog , TToolBar,
TCoolBar , TToolButton , TPrintDialog,
TAnimate , TNotebook , TFindDialog,
TReplaceDialog , TOpenPictureDialog, TSavePictureDialog,
TPrinterSetupDialog , TColorDialog , TCheckListBox,
TSplitter , TStaticText , TDatetimePicker,
TOleContainer , TDdeClientConv , TDdeClientItem,
TDdeServerConv , TDdeServerItem , TTabSet,
TOutline , TTabbedNotebook , THeader
]);
end;
procedure TFMainForm.FileSaveAs(FileName:string);
var
SaveName:string;
LinkForm:TForm;
SaveResp:Integer;
begin
SaveDialog1.InitialDir:= IniFile.ReadString('system', 'LastPath',FilePath);
SaveDialog1.FileName:= FileName;
SaveDialog1.FilterIndex:=2;
if SaveDialog1.Execute then
begin
LinkForm:= GetLinkForm;
SaveName:=SaveDialog1.FileName;
if FileExistOnPath(SaveName) then
begin
SaveResp := MessageDlg(Format('Same filename exists already! Save changes to %s?',
[ExtractFileName(SaveName)]), mtWarning, mbYesNoCancel, 0);
case SaveResp of
idYes:
EditorForm.GetLinkEditor.Lines.SaveToFile(SaveName);
idNo: Exit;
idCancel: Abort;
end;
end
else EditorForm.GetLinkEditor.Lines.SaveToFile(SaveName);
SaveForm(LinkForm,Copy(SaveName,1,Length(SaveName)-4)+'.dfm');
end;
end;
procedure TFMainForm.FileSaveAsItemClick(Sender: TObject);
begin
FileSaveAs(EditorForm.Caption);
end;
procedure TFMainForm.FileSaveAllItemClick(Sender: TObject);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -