|
Antwort |
DualCoreCpu
(Gast)
n/a Beiträge |
#21
Habe nun die DesignIde.pas Unit und auch die anderen (VCLEdit und StrEdit entfernt.
Nun kommt Fehlermeldung: "DesignIde260 wird benötigt, kann aber nicht gefunden werden"! So sieht mein Quellcode für mein Editorprojekt bisher aus:
Delphi-Quellcode:
Wo ist die klassische Begin End. Klammer geblieben?
program Edit;
uses Vcl.Forms, UFrame in 'UFrame.pas' {Frame1: TFrame}, SynAutoCorrect in '..\Synedit\Source\SynAutoCorrect.pas', SynAutoCorrectEditor in '..\Synedit\Source\SynAutoCorrectEditor.pas' {frmAutoCorrectEditor}, SynCompletionProposal in '..\Synedit\Source\SynCompletionProposal.pas', SynDBEdit in '..\Synedit\Source\SynDBEdit.pas', SynEdit in '..\Synedit\Source\SynEdit.pas', SynEditAutoComplete in '..\Synedit\Source\SynEditAutoComplete.pas', SynEditCodeFolding in '..\Synedit\Source\SynEditCodeFolding.pas', SynEditDocumentManager in '..\Synedit\Source\SynEditDocumentManager.pas', SynEditExport in '..\Synedit\Source\SynEditExport.pas', SynEditHighlighter in '..\Synedit\Source\SynEditHighlighter.pas', SynEditHighlighterOptions in '..\Synedit\Source\SynEditHighlighterOptions.pas', SynEditKbdHandler in '..\Synedit\Source\SynEditKbdHandler.pas', SynEditKeyCmdEditor in '..\Synedit\Source\SynEditKeyCmdEditor.pas' {SynEditKeystrokeEditorForm}, SynEditKeyCmds in '..\Synedit\Source\SynEditKeyCmds.pas', SynEditKeyCmdsEditor in '..\Synedit\Source\SynEditKeyCmdsEditor.pas' {SynEditKeystrokesEditorForm}, SynEditKeyConst in '..\Synedit\Source\SynEditKeyConst.pas', SynEditMiscClasses in '..\Synedit\Source\SynEditMiscClasses.pas', SynEditMiscProcs in '..\Synedit\Source\SynEditMiscProcs.pas', SynEditOptionsDialog in '..\Synedit\Source\SynEditOptionsDialog.pas' {fmEditorOptionsDialog}, SynEditPlugins in '..\Synedit\Source\SynEditPlugins.pas', SynEditPrint in '..\Synedit\Source\SynEditPrint.pas', SynEditPrinterInfo in '..\Synedit\Source\SynEditPrinterInfo.pas', SynEditPrintHeaderFooter in '..\Synedit\Source\SynEditPrintHeaderFooter.pas', SynEditPrintMargins in '..\Synedit\Source\SynEditPrintMargins.pas', SynEditPrintMarginsDialog in '..\Synedit\Source\SynEditPrintMarginsDialog.pas' {SynEditPrintMarginsDlg}, SynEditPrintPreview in '..\Synedit\Source\SynEditPrintPreview.pas', SynEditPrintTypes in '..\Synedit\Source\SynEditPrintTypes.pas', SynEditPropertyReg in '..\Synedit\Source\SynEditPropertyReg.pas', SynEditPythonBehaviour in '..\Synedit\Source\SynEditPythonBehaviour.pas', SynEditReg in '..\Synedit\Source\SynEditReg.pas', SynEditRegexSearch in '..\Synedit\Source\SynEditRegexSearch.pas', SynEditSearch in '..\Synedit\Source\SynEditSearch.pas', SynEditStrConst in '..\Synedit\Source\SynEditStrConst.pas', SynEditTextBuffer in '..\Synedit\Source\SynEditTextBuffer.pas', SynEditTypes in '..\Synedit\Source\SynEditTypes.pas', SynEditWildcardSearch in '..\Synedit\Source\SynEditWildcardSearch.pas', SynEditWordWrap in '..\Synedit\Source\SynEditWordWrap.pas', SynExportHTML in '..\Synedit\Source\SynExportHTML.pas', SynExportRTF in '..\Synedit\Source\SynExportRTF.pas', SynExportTeX in '..\Synedit\Source\SynExportTeX.pas', SynHighlighterADSP21xx in '..\Synedit\Source\SynHighlighterADSP21xx.pas', SynHighlighterAsm in '..\Synedit\Source\SynHighlighterAsm.pas', SynHighlighterAsmMASM in '..\Synedit\Source\SynHighlighterAsmMASM.pas', SynHighlighterAWK in '..\Synedit\Source\SynHighlighterAWK.pas', SynHighlighterBaan in '..\Synedit\Source\SynHighlighterBaan.pas', SynHighlighterBat in '..\Synedit\Source\SynHighlighterBat.pas', SynHighlighterCAC in '..\Synedit\Source\SynHighlighterCAC.pas', SynHighlighterCache in '..\Synedit\Source\SynHighlighterCache.pas', SynHighlighterCobol in '..\Synedit\Source\SynHighlighterCobol.pas', SynHighlighterCPM in '..\Synedit\Source\SynHighlighterCPM.pas', SynHighlighterCpp in '..\Synedit\Source\SynHighlighterCpp.pas', SynHighlighterCS in '..\Synedit\Source\SynHighlighterCS.pas', SynHighlighterCss in '..\Synedit\Source\SynHighlighterCss.pas', SynHighlighterDfm in '..\Synedit\Source\SynHighlighterDfm.pas', SynHighlighterDml in '..\Synedit\Source\SynHighlighterDml.pas', SynHighlighterDOT in '..\Synedit\Source\SynHighlighterDOT.pas', SynHighlighterDWS in '..\Synedit\Source\SynHighlighterDWS.pas', SynHighlighterEiffel in '..\Synedit\Source\SynHighlighterEiffel.pas', SynHighlighterFortran in '..\Synedit\Source\SynHighlighterFortran.pas', SynHighlighterFoxpro in '..\Synedit\Source\SynHighlighterFoxpro.pas', SynHighlighterGalaxy in '..\Synedit\Source\SynHighlighterGalaxy.pas', SynHighlighterGeneral in '..\Synedit\Source\SynHighlighterGeneral.pas', SynHighlighterGLSL in '..\Synedit\Source\SynHighlighterGLSL.pas', SynHighlighterGo in '..\Synedit\Source\SynHighlighterGo.pas', SynHighlighterGWS in '..\Synedit\Source\SynHighlighterGWS.pas', SynHighlighterHashEntries in '..\Synedit\Source\SynHighlighterHashEntries.pas', SynHighlighterHaskell in '..\Synedit\Source\SynHighlighterHaskell.pas', SynHighlighterHC11 in '..\Synedit\Source\SynHighlighterHC11.pas', SynHighlighterHP48 in '..\Synedit\Source\SynHighlighterHP48.pas', SynHighlighterHtml in '..\Synedit\Source\SynHighlighterHtml.pas', SynHighlighterIDL in '..\Synedit\Source\SynHighlighterIDL.pas', SynHighlighterIni in '..\Synedit\Source\SynHighlighterIni.pas', SynHighlighterInno in '..\Synedit\Source\SynHighlighterInno.pas', SynHighlighterJava in '..\Synedit\Source\SynHighlighterJava.pas', SynHighlighterJScript in '..\Synedit\Source\SynHighlighterJScript.pas', SynHighlighterJSON in '..\Synedit\Source\SynHighlighterJSON.pas', SynHighlighterKix in '..\Synedit\Source\SynHighlighterKix.pas', SynHighlighterLDraw in '..\Synedit\Source\SynHighlighterLDraw.pas', SynHighlighterLLVM in '..\Synedit\Source\SynHighlighterLLVM.pas', SynHighlighterM3 in '..\Synedit\Source\SynHighlighterM3.pas', SynHighlighterManager in '..\Synedit\Source\SynHighlighterManager.pas', SynHighlighterModelica in '..\Synedit\Source\SynHighlighterModelica.pas', SynHighlighterMsg in '..\Synedit\Source\SynHighlighterMsg.pas', SynHighlighterMulti in '..\Synedit\Source\SynHighlighterMulti.pas', SynHighlighterPas in '..\Synedit\Source\SynHighlighterPas.pas', SynHighlighterPerl in '..\Synedit\Source\SynHighlighterPerl.pas', SynHighlighterPHP in '..\Synedit\Source\SynHighlighterPHP.pas', SynHighlighterProgress in '..\Synedit\Source\SynHighlighterProgress.pas', SynHighlighterPython in '..\Synedit\Source\SynHighlighterPython.pas', SynHighlighterRC in '..\Synedit\Source\SynHighlighterRC.pas', SynHighlighterRexx in '..\Synedit\Source\SynHighlighterRexx.pas', SynHighlighterRuby in '..\Synedit\Source\SynHighlighterRuby.pas', SynHighlighterSDD in '..\Synedit\Source\SynHighlighterSDD.pas', SynHighlighterSml in '..\Synedit\Source\SynHighlighterSml.pas', SynHighlighterSQL in '..\Synedit\Source\SynHighlighterSQL.pas', SynHighlighterST in '..\Synedit\Source\SynHighlighterST.pas', SynHighlighterTclTk in '..\Synedit\Source\SynHighlighterTclTk.pas', SynHighlighterTeX in '..\Synedit\Source\SynHighlighterTeX.pas', SynHighlighterUNIXShellScript in '..\Synedit\Source\SynHighlighterUNIXShellScript.pas', SynHighlighterUnreal in '..\Synedit\Source\SynHighlighterUnreal.pas', SynHighlighterURI in '..\Synedit\Source\SynHighlighterURI.pas', SynHighlighterVB in '..\Synedit\Source\SynHighlighterVB.pas', SynHighlighterVBScript in '..\Synedit\Source\SynHighlighterVBScript.pas', SynHighlighterVrml97 in '..\Synedit\Source\SynHighlighterVrml97.pas', SynHighlighterWebIDL in '..\Synedit\Source\SynHighlighterWebIDL.pas', SynHighlighterXML in '..\Synedit\Source\SynHighlighterXML.pas', SynMacroRecorder in '..\Synedit\Source\SynMacroRecorder.pas', SynMemo in '..\Synedit\Source\SynMemo.pas', SynRegExpr in '..\Synedit\Source\SynRegExpr.pas', SynTextDrawer in '..\Synedit\Source\SynTextDrawer.pas', SynUnicode in '..\Synedit\Source\SynUnicode.pas', SynURIOpener in '..\Synedit\Source\SynURIOpener.pas', SynUsp10 in '..\Synedit\Source\SynUsp10.pas'; Application.CreateForm(TSynEditKeystrokeEditorForm, SynEditKeystrokeEditorForm); Unit UEditor:
Delphi-Quellcode:
Und mein Editor:
unit UEditor;
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ToolWin, Vcl.ActnMan, Vcl.ActnCtrls, Vcl.ExtCtrls, Vcl.Menus, Vcl.ComCtrls, Vcl.CategoryButtons, editor2; type TForm2 = class(TForm) MainMenu1: TMainMenu; Datei1: TMenuItem; Neu1: TMenuItem; InEditorholen1: TMenuItem; N1: TMenuItem; Speichern1: TMenuItem; Speichernunter1: TMenuItem; Allesspeichern1: TMenuItem; Schlieen1: TMenuItem; Allesschlieen1: TMenuItem; N2: TMenuItem; Beenden1: TMenuItem; Bearbeiten1: TMenuItem; T: TControlBar; CategoryPanelGroup1: TCategoryPanelGroup; ToolBar1: TToolBar; ToolButton1: TToolButton; ToolButton2: TToolButton; ToolButton3: TToolButton; ToolButton4: TToolButton; ToolButton5: TToolButton; ToolButton6: TToolButton; CategoryPanel1: TCategoryPanel; TreeView1: TTreeView; CategoryPanel2: TCategoryPanel; CategoryPanelGroup2: TCategoryPanelGroup; CategoryPanel3: TCategoryPanel; CategoryPanel4: TCategoryPanel; PageControl1: TPageControl; TabSheet1: TTabSheet; HeaderControl1: THeaderControl; private { Private-Deklarationen } public { Public-Deklarationen } end; var Form2: TForm2; implementation {$R *.dfm} end.
Delphi-Quellcode:
{
To do: - vor schließen Fenster oder Tabseite -> Datei speichern oder fragen - In Editwindow -> Editorliste ergänzen - in Main: Zeile 109 und 153 TEditorPages//(Container) - in TEditorPages mit TPageControl -> Wenn Noname.pas, dann Datei in diesen Editor } unit editor2; {$ifdef fpc}{$mode objfpc}{$H+}{$endif} {.define USE_SPTBX} interface uses Classes, SysUtils, Forms, Controls, Graphics, Dialogs, SynHighlighterPas, SynHighlighterCpp, SynHighlighterDFM, SynHighlighterJava, SynHighlighterPerl, SynHighlighterHTML, SynHighlighterXML, SynHighlighterCss, SynHighlighterPHP, SynHighlighterSQL, SynHighlighterPython, SynEdit, SynCompletionProposal, SynExportHTML, SynMacroRecorder, SynEditHighlighter, {$ifndef FPC} {$ifdef USE_SPTBX}SpTBXTabs,{$endif} {$endif} ComCtrls, Contnrs, ExtCtrls{$ifdef fpc},Process{$endif}; //nur FPC Version const HIGHLIGHTER_PAS = 0; HIGHLIGHTER_FPC = 1; HIGHLIGHTER_CPP = 2; HIGHLIGHTER_LFM = 3; HIGHLIGHTER_JAV = 4; HIGHLIGHTER_PRL = 5; HIGHLIGHTER_HTM = 6; HIGHLIGHTER_XML = 7; HIGHLIGHTER_CSS = 8; HIGHLIGHTER_PHP = 9; HIGHLIGHTER_SQL = 10; HIGHLIGHTER_PYT = 11; HIGHLIGHTER_ASM = 12; type THighLighters = class(TStringList) private function GetHighlighter(Index: Integer): TSynCustomHighlighter; public function Add(AHighlighter: TSynCustomHighlighter): Integer; property Highlighters[Index: Integer]: TSynCustomHighlighter read GetHighlighter; end; { TEditorPage } {$ifdef USE_SPTBX} TEditorPage = class(TSpTBXTabSheet) {$else} TEditorPage = class(TTabSheet) {$endif} private FDefaultExt: ShortString; FEditor: TSynEdit; FExtension: ShortString; FFilename: ShortString; //Name der Editordatei FHighlighter: TSynCustomHighlighter; FHighlighters: THighlighters; FEmptyFileNames: TStringList; FHighlighterIX: Integer; {$ifdef fpc} FProcess: TProcess; //nur FPC Version {$endif} function HighlighterEquivalentToFileExt(AFileExt: ShortString): Integer; function GetHighlighter: Integer; procedure SetDefaultExt(Value: ShortString); procedure SetFilename(AFilename: ShortString); procedure SetHighlighter(AHighlighter: Integer); public //Compiler ist individuell für die Editordatei procedure Compile; procedure CompileSource(AFilename: ShortString); constructor Create(AOwner: TComponent); destructor Destroy; override; procedure LoadFromFile(AFilename: ShortString); procedure Save; procedure SaveAs(AFilename: ShortString); property Editor: TSynEdit read FEditor; property FileExt: ShortString read FExtension write FExtension; property Filename: ShortString read FFilename write SetFilename; property Highlighter: Integer read GetHighlighter write SetHighlighter; property DefaultExt: ShortString write SetDefaultExt; end; TEditorsList = class(TObjectList) private function GetEditors(Index: Integer): TEditorPage; public function AddEditor(AEditor: TEditorPage): Integer; property Editors[Index: Integer]: TEditorPage read GetEditors; default; end; (* Here the Editor-PageControl follows *) { TEditorPages } {$ifdef USE_SPTBX} TEditorPages = class(TSpTBXTabControl) {$else} TEditorPages = class(TPageControl) {$endif} private FProjectName: ShortString; //Name des Projektes {$ifdef fpc} FProcess: TProcess; //nur FPC Version zum Start des Compilers {$endif} function GetEditorPages: TEditorpages; public //Compiler ist derjenige der das Projekt überstzt //Compiler des einzelnen Editors kann dagegen eine andere Programmiersprache //übersetzen und den Bin-code in den Code des Projektes linken procedure Compile; procedure CompileProject(AProject: ShortString); procedure Debug; procedure DebugProject(AProjectName: ShortString); procedure OpenEditor(AFilename: ShortString); procedure CloseCurrentEditor; constructor Create(AOwner: TComponent); destructor Destroy; override; procedure Save; procedure SaveAs(AFilename: ShortString); procedure SaveAll; property Editors: TEditorPages read GetEditorPages; {$ifdef fpc} {$endif} end; { TEditorPagesContainer } TEditorPagesContainer = class(TPanel) private FEditorPage: TEditorsList; FEditPage: TObjectList; FEditorPages: TEditorPages; function GetPageCount: Integer; public procedure OpenEditor(AFilename: ShortString); procedure CloseCurrentEditor; constructor Create(AOwner: TComponent); destructor Destroy; override; procedure Save; procedure SaveAs(AFilename: ShortString); procedure SaveAll; property Editors: TEditorPages read FEditorPages; property PageCount: Integer read GetPageCount; end; { TEditorWindow } TEditorWindow = class(TForm) private FDefaultExt: ShortString; FEditor: TSynEdit; FExtension: ShortString; FFilename: ShortString; FHighlighter: TSynCustomHighlighter; FHighlighters: THighlighters; FEmptyFileNames: TStringList; FHighlighterIX: Integer; {$ifdef fpc} FProcess: TProcess; //nur FPC Version {$endif} FStatusBar: TStatusBar; function HighlighterEquivalentToFileExt(AFileExt: ShortString): Integer; function GetHighlighter: Integer; procedure SetDefaultExt(value: ShortString); procedure SetFilename(AFilename: ShortString); procedure SetHighlighter(AHighlighter: Integer); public procedure Compile; procedure CompileSource(AFilename: ShortString); constructor Create(AOwner: TComponent); destructor Destroy; override; procedure NewFile; procedure LoadFromFile(AFilename: ShortString); procedure Save; procedure SaveAs(AFilename: ShortString); property FileExt: ShortString read FExtension write FExtension; property Filename: ShortString read FFilename write SetFilename; property Highlighter: Integer read GetHighlighter write SetHighlighter; property DefaultExt: ShortString write SetDefaultExt; end; var IDEEditor: TEditorPages; implementation { THighlighters } function THighlighters.GetHighlighter(Index: Integer): TSynCustomHighlighter; begin Result := TSynCustomHighlighter(Objects[Index]); end; function THighlighters.Add(AHighlighter: TSynCustomHighlighter): Integer; begin Result := AddObject(AHighlighter.Name, AHighlighter); end; { TEditorPage } procedure TEditorPage.SetDefaultExt(value: ShortString); begin if FDefaultExt<> value then FDefaultExt := value; end; function TEditorPage.HighlighterEquivalentToFileExt(AFileExt: ShortString ): Integer; begin if AFileExt = 'pas' then begin FEditor.Highlighter := TSynPasSyn.Create(self); FHighlighter := FEditor.Highlighter; Result := 0; end; if AFileExt = 'pp' then begin FEditor.Highlighter := TSynPasSyn.Create(self); FHighlighter := FEditor.Highlighter; Result := 1; end; if (AFileExt = 'cpp') or (AFileExt = 'c') then begin FEditor.Highlighter := TSynCppSyn.Create(self); FHighlighter := FEditor.Highlighter; Result := 2; end; if (AFileExt = 'lfm') or (AFileExt = 'dfm') then begin FEditor.Highlighter := TSynDfmSyn.Create(self); FHighlighter := FEditor.Highlighter; Result := 3; end; if AFileExt = 'java' then begin FEditor.Highlighter := TSynJavaSyn.Create(self); FHighlighter := FEditor.Highlighter; Result := 4; end; if AFileExt = 'perl' then begin FEditor.Highlighter := TSynPerlSyn.Create(self); FHighlighter := FEditor.Highlighter; Result := 5; end; if AFileExt = 'html' then begin FEditor.Highlighter := TSynHtmlSyn.Create(self); FHighlighter := FEditor.Highlighter; Result := 6; end; if AFileExt = 'xml' then begin FEditor.Highlighter := TSynXmlSyn.Create(self); FHighlighter := FEditor.Highlighter; Result := 7; end; if AFileExt = 'css' then begin FEditor.Highlighter := TSynCssSyn.Create(self); FHighlighter := FEditor.Highlighter; Result := 8; end; if AFileExt = 'php' then begin FEditor.Highlighter := TSynPhpSyn.Create(self); FHighlighter := FEditor.Highlighter; Result := 9; end; if AFileExt = 'sql' then begin FEditor.Highlighter := TSynSqlSyn.Create(self); FHighlighter := FEditor.Highlighter; Result := 10; end; if AFileExt = 'python' then begin FEditor.Highlighter := TSynPythonSyn.Create(self); FHighlighter := FEditor.Highlighter; Result := 11; end; { if (AFileExt = 'asm') or (AFileExt = 'as') then begin FEditor.Highlighter := TSynAsmSyn.Create(self); FHighlighter := FEditor.Highlighter; Result := 12; end; } end; function TEditorPage.GetHighlighter: Integer; begin Result := FHighlighterIX; end; procedure TEditorPage.SetFilename(AFilename: ShortString); begin LoadFromFile(AFilename); { FFilename := AFilename; if (FFilename <> '') and (POS('Noname', FFilename)=0) then begin FEditor.Lines.LoadFromFile(FFilename); Caption := FFilename; end else Caption := 'Untitled'; } end; procedure TEditorPage.SetHighlighter(AHighlighter: Integer); begin if FHighlighterIX >= FHighlighters.Count then ShowMessage('Diese Syntax wird vom Editor nicht unterstützt!'); if FHighlighterIX < FHighlighters.Count then if FHighlighterIX <> AHighlighter then begin FHighlighterIX := AHighlighter; FEditor.Highlighter := TSynCustomHighlighter(FHighlighters.Highlighters[FHighlighterIX]); Highlighter := FHighlighterIX; end; end; procedure TEditorPage.Compile; begin end; procedure TEditorPage.CompileSource(AFilename: ShortString); begin end; constructor TEditorPage.Create(AOwner: TComponent); begin inherited Create(AOwner); FHighlighters := THighlighters.Create; //nur UnixShellScript fehlt aus dem Repertoire der Lazarus Synedit-Highlighter FHighlighters.Add(TSynPasSyn.Create(self)); FHighlighters.Add(TSynCppSyn.Create(self)); FHighlighters.Add(TSynDfmSyn.Create(self)); FHighlighters.Add(TSynJavaSyn.Create(self)); FHighlighters.Add(TSynPerlSyn.Create(self)); FHighlighters.Add(TSynHtmlSyn.Create(self)); FHighlighters.Add(TSynXmlSyn.Create(self)); FHighlighters.Add(TSynCssSyn.Create(self)); FHighlighters.Add(TSynPHPSyn.Create(self)); FHighlighters.Add(TSynSQLSyn.Create(self)); FHighlighters.Add(TSynPythonSyn.Create(self)); FEmptyFileNames := TStringList.Create; FEmptyFileNames.Add('Noname.pas'); FEmptyFileNames.Add('Noname.pp'); FEmptyFileNames.Add('Noname.cpp'); FEmptyFileNames.Add('Noname.lfm'); FEmptyFileNames.Add('Noname.java'); FEmptyFileNames.Add('Noname.Perl'); FEmptyFileNames.Add('Noname.Html'); FEmptyFileNames.Add('Noname.xml'); FEmptyFileNames.Add('Noname.css'); FEmptyFileNames.Add('Noname.php'); FEmptyFileNames.Add('Noname.sql'); FEmptyFileNames.Add('Noname.python'); FEditor := TSynEdit.Create(self); FEditor.Parent := self; FEditor.Align := alClient; FDefaultExt := 'pas'; end; destructor TEditorPage.Destroy; begin if FEditor<>nil then FreeAndNil(FEditor); if FEmptyFileNames<>nil then FreeAndNil(FEmptyFileNames); if FHighlighters<>nil then FreeAndNil(FHighlighters); inherited Destroy; end; procedure TEditorPage.LoadFromFile(AFilename: ShortString); var Ext: ShortString; begin if (AFilename<>'') then begin Ext := ExtractFileExt(AFilename); System.Delete(Ext, 1, 1); //SetHighlighter(HighlighterEquivalentToFileExt(Ext)); FHighlighterIX := HighlighterEquivalentToFileExt(Ext); FEditor.Lines.LoadFromFile(AFilename); FFilename := AFilename; Caption := ExtractFilename(FFilename); end else begin Ext := FDefaultExt; FHighlighterIX := HighlighterEquivalentToFileExt(Ext); if (FHighlighterIX >= 0) and (FHighlighterIX < FEmptyFileNames.Count) then begin Caption := FEmptyFileNames[FHighlighterIX]; end else Caption := 'Untitled'; end; end; procedure TEditorPage.Save; begin //Wenn FFilename = '' dann Dateidialog aufrufen und Filename erfragen SaveAs(FFilename); end; procedure TEditorPage.SaveAs(AFilename: ShortString); begin FEditor.Lines.SaveToFile(AFilename); FFileName := AFilename; Caption := ExtractFileName(AFilename); end; { TEditorsList } function TEditorsList.GetEditors(Index: Integer): TEditorPage; begin Result := TEditorPage(Items[Index]); end; function TEditorsList.AddEditor(AEditor: TEditorPage): Integer; begin Result := Add(AEditor); end; { TEditorPages } function TEditorPages.GetEditorPages: TEditorpages; begin Result := self; end; procedure TEditorPages.Compile; begin end; procedure TEditorPages.CompileProject(AProject: ShortString); begin end; procedure TEditorPages.Debug; begin end; procedure TEditorPages.DebugProject(AProjectName: ShortString); begin end; procedure TEditorPages.OpenEditor(AFilename: ShortString); var Page: TEditorPage; begin Page := TEditorPage.Create(self); Page.LoadFromFile(AFileName); {$ifdef USE_SPTBX} Page.TabControl := self; {$else} Page.PageControl := self; {$endif} end; procedure TEditorPages.CloseCurrentEditor; var mResult: Integer; begin if TEditorPage(ActivePage).Editor.Modified then begin mResult := MessageDlg('', mtWarning, [mbYes, mbNo, mbCancel], 0); if MResult = mrYes then TEditorPage(ActivePage).Save; end; ActivePage.Free; end; constructor TEditorPages.Create(AOwner: TComponent); begin inherited Create(AOwner); {$ifdef fpc} Process := TProcess.Create(self); {$endif} end; destructor TEditorPages.Destroy; begin {$ifdef fpc} if Process<>nil then FreeAndNil(Process); {$endif} inherited Destroy; end; procedure TEditorPages.Save; begin TEditorPage(ActivePage).Save; end; procedure TEditorPages.SaveAs(AFilename: ShortString); begin TEditorPage(ActivePage).SaveAs(AFileName); end; procedure TEditorPages.SaveAll; var Index: Integer; begin for Index := IdeEditor.PageCount - 1 downto 0 do TEditorPage(Pages[Index]).Save; end; { TEditorPagesContainer } function TEditorPagesContainer.GetPageCount: Integer; begin Result := FEditorPages.PageCount; end; procedure TEditorPagesContainer.OpenEditor(AFilename: ShortString); var Editor: TEditorPage; Extension: ShortString; Index: Integer; begin { Editor := TEditorPage.Create(self); Editor.PageControl := FEditorPages; Editor.LoadFromFile(AFilename); } Index := FEditPage.Add{Editor}(TEditorPage.Create(self)); TEditorPage(FEditPage[Index]).Parent := self; {$ifdef USE_SPTBX} TEditorPage(FEditPage[Index]).TabControl := FEditorPages; {$else} TEditorPage(FEditPage[Index]).PageControl := FEditorPages; {$endif} TEditorPage(FEditPage[Index]).LoadFromFile(AFilename); //Extension := ExtractFileExt(AFileName); //System.Delete(Extension, 1, 1); //Editor.HighlighterEquivalentToFileExt(Extension); //Editor.Highlighter := HIGHLIGHTER_PAS; //Editor.Editor.Highlighter := TSynPasSyn.Create(self); end; procedure TEditorPagesContainer.CloseCurrentEditor; var MResult: Word; begin if TEditorPage(FEditorPages.ActivePage).Editor.Modified then begin mResult := MessageDlg('', mtWarning, [mbYes, mbNo, mbCancel], 0); if MResult = mrYes then TEditorPage(FEditorPages.ActivePage).Save; end; if (FEditorPages<>nil) and (FEditorPages.ActivePage<>nil) then FEditorPages.ActivePage.Free; end; constructor TEditorPagesContainer.Create(AOwner: TComponent); begin inherited Create(AOwner); FEditorPages := TEditorPages.Create(AOwner); FEditorPages.Align := alClient; FEditorPages.Parent := self; FEditorPage := TEditorsList.Create; FEditPage := TObjectList.Create; end; destructor TEditorPagesContainer.Destroy; begin if FEditPage<>nil then FreeAndNil(FEditPage); if FEditorPage<>nil then FreeAndNil(FEditorPage); if FEditorPages<>nil then FreeAndNil(FEditorPages); inherited Destroy; end; procedure TEditorPagesContainer.Save; begin TEditorPage(FEditorPages.ActivePage).Save; end; procedure TEditorPagesContainer.SaveAs(AFilename: ShortString); begin TEditorPage(FEditorPages.ActivePage).SaveAs(AFilename); //TEditorPage(FEditorPages.ActivePage).Caption := ExtractFileName(AFilename); end; procedure TEditorPagesContainer.SaveAll; var Index: Integer; begin for Index := IdeEditor.PageCount - 1 downto 0 do TEditorPage(FEditorPages.Pages[Index]).Save; end; { TEditorWindow } procedure TEditorWindow.SetDefaultExt(value: ShortString); begin if FDefaultExt<> value then FDefaultExt := value; end; function TEditorWindow.HighlighterEquivalentToFileExt(AFileExt: ShortString ): Integer; begin if AFileExt = 'pas' then begin FEditor.Highlighter := TSynPasSyn.Create(self); FHighlighter := FEditor.Highlighter; Result := 0; end; if AFileExt = 'pp' then begin FEditor.Highlighter := TSynPasSyn.Create(self); FHighlighter := FEditor.Highlighter; Result := 1; end; if AFileExt = 'cpp' then begin FEditor.Highlighter := TSynCppSyn.Create(self); FHighlighter := FEditor.Highlighter; Result := 2; end; if (AFileExt = 'lfm') or (AFileExt = 'dfm') then begin FEditor.Highlighter := TSynDfmSyn.Create(self); FHighlighter := FEditor.Highlighter; Result := 3; end; if AFileExt = 'java' then begin FEditor.Highlighter := TSynJavaSyn.Create(self); FHighlighter := FEditor.Highlighter; Result := 4; end; if AFileExt = 'perl' then begin FEditor.Highlighter := TSynPerlSyn.Create(self); FHighlighter := FEditor.Highlighter; Result := 5; end; if AFileExt = 'html' then begin FEditor.Highlighter := TSynHtmlSyn.Create(self); FHighlighter := FEditor.Highlighter; Result := 6; end; if AFileExt = 'xml' then begin FEditor.Highlighter := TSynXmlSyn.Create(self); FHighlighter := FEditor.Highlighter; Result := 7; end; if AFileExt = 'css' then begin FEditor.Highlighter := TSynCssSyn.Create(self); FHighlighter := FEditor.Highlighter; Result := 8; end; if AFileExt = 'php' then begin FEditor.Highlighter := TSynPhpSyn.Create(self); FHighlighter := FEditor.Highlighter; Result := 9; end; if AFileExt = 'sql' then begin FEditor.Highlighter := TSynSqlSyn.Create(self); FHighlighter := FEditor.Highlighter; Result := 10; end; if AFileExt = 'python' then begin FEditor.Highlighter := TSynPythonSyn.Create(self); FHighlighter := FEditor.Highlighter; Result := 11; end; end; function TEditorWindow.GetHighlighter: Integer; begin Result := FHighlighterIX; end; procedure TEditorWindow.SetFilename(AFilename: ShortString); begin LoadFromFile(AFilename); end; procedure TEditorWindow.SetHighlighter(AHighlighter: Integer); begin if FHighlighterIX >= FHighlighters.Count then ShowMessage('Diese Syntax wird vom Editor nicht unterstützt!'); if FHighlighterIX < FHighlighters.Count then if FHighlighterIX <> AHighlighter then begin FHighlighterIX := AHighlighter; FEditor.Highlighter := TSynCustomHighlighter(FHighlighters.Highlighters[FHighlighterIX]); Highlighter := FHighlighterIX; end; end; procedure TEditorWindow.Compile; begin end; procedure TEditorWindow.CompileSource(AFilename: ShortString); begin end; constructor TEditorWindow.Create(AOwner: TComponent); begin inherited Create(AOwner); FormStyle := fsMDIChild; FHighlighters := THighlighters.Create; //nur UnixShellScript fehlt aus dem Repertoire der Lazarus Synedit-Highlighter FHighlighters.Add(TSynPasSyn.Create(self)); FHighlighters.Add(TSynCppSyn.Create(self)); FHighlighters.Add(TSynDfmSyn.Create(self)); FHighlighters.Add(TSynJavaSyn.Create(self)); FHighlighters.Add(TSynPerlSyn.Create(self)); FHighlighters.Add(TSynHtmlSyn.Create(self)); FHighlighters.Add(TSynXmlSyn.Create(self)); FHighlighters.Add(TSynCssSyn.Create(self)); FHighlighters.Add(TSynPHPSyn.Create(self)); FHighlighters.Add(TSynSQLSyn.Create(self)); FHighlighters.Add(TSynPythonSyn.Create(self)); FEmptyFileNames := TStringList.Create; FEmptyFileNames.Add('Noname.pas'); FEmptyFileNames.Add('Noname.cpp'); FEmptyFileNames.Add('Noname.lfm'); FEmptyFileNames.Add('Noname.java'); FEmptyFileNames.Add('Noname.Perl'); FEmptyFileNames.Add('Noname.Html'); FEmptyFileNames.Add('Noname.xml'); FEmptyFileNames.Add('Noname.css'); FEmptyFileNames.Add('Noname.php'); FEmptyFileNames.Add('Noname.sql'); FEmptyFileNames.Add('Noname.python'); FStatusBar:= TStatusBar.Create(self); FStatusBar.Parent := self; FEditor := TSynEdit.Create(self); FEditor.Parent := self; FEditor.WordWrap := false; FEditor.WantTabs := true; FEditor.WantReturns := true; FEditor.Align := alClient; FDefaultExt := 'pas'; end; destructor TEditorWindow.Destroy; begin //FEditor.Free; //FStatusBar.Free; FEmptyFileNames.Free; FHighlighters.Free; inherited Destroy; end; procedure TEditorWindow.NewFile; begin LoadFromFile(''); end; procedure TEditorWindow.LoadFromFile(AFilename: ShortString); var Ext: ShortString; begin if (AFilename<>'') then begin Ext := ExtractFileExt(AFilename); System.Delete(Ext, 1, 1); //SetHighlighter(HighlighterEquivalentToFileExt(Ext)); FHighlighterIX := HighlighterEquivalentToFileExt(Ext); FEditor.Lines.LoadFromFile(AFilename); FFilename := AFilename; Caption := ExtractFilename(FFilename); end else begin Ext := FDefaultExt; FHighlighterIX := HighlighterEquivalentToFileExt(Ext); if (FHighlighterIX >= 0) and (FHighlighterIX < FEmptyFileNames.Count) then Caption := FEmptyFileNames[FHighlighterIX] else Caption := 'Untitled'; end; end; procedure TEditorWindow.Save; begin SaveAs(FFilename); end; procedure TEditorWindow.SaveAs(AFilename: ShortString); begin FEditor.Lines.SaveToFile(AFilename); FFilename := AFilename; Caption := ExtractFileName(AFilename); end; end. Geändert von DualCoreCpu (26. Sep 2019 um 13:03 Uhr) |
Zitat |
Registriert seit: 11. Aug 2012 Ort: Essen 1.603 Beiträge Delphi 10.2 Tokyo Professional |
#22
Habe nun die DesignIde.pas Unit und auch die anderen (VCLEdit und StrEdit entfernt.
Wenn Du sie aus dem SynEdit-Code entfernst, compiliert das Designtime-Package von SynEdit nicht mehr. Das stört zwar aktuell nicht, aber beim nächsten Versuch es zu compilieren oder installieren wirst Du dich dann nicht mehr an diese Änderung erinnern und ewig nach dem Grund suchen. Nun kommt Fehlermeldung:
"DesignIde260 wird benötigt, kann aber nicht gefunden werden"! Wenn das in diesem Programm war, wirf es dort auch wieder raus. Es hat in einem Programm nichts zu suchen.
Thomas Mueller
|
Zitat |
Registriert seit: 12. Aug 2003 Ort: Soest 4.016 Beiträge Delphi 10.1 Berlin Enterprise |
#23
Einfach stumpf alle pas Dateien ins uses der dpr zu packen, war der Fehler, denn dort stehen nun auch Units drin, die nur für das SynEdit Designtime package da sind!
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin Delphi Sorcery - DSharp - Spring4D - TestInsight |
Zitat |
Registriert seit: 11. Aug 2012 Ort: Essen 1.603 Beiträge Delphi 10.2 Tokyo Professional |
#24
Einfach stumpf alle pas Dateien ins uses der dpr zu packen, war der Fehler, denn dort stehen nun auch Units drin, die nur für das SynEdit Designtime package da sind!
Thomas Mueller
|
Zitat |
Registriert seit: 9. Okt 2003 Ort: München 251 Beiträge Delphi 10.4 Sydney |
#25
Einfach stumpf alle pas Dateien ins uses der dpr zu packen, war der Fehler, denn dort stehen nun auch Units drin, die nur für das SynEdit Designtime package da sind!
|
Zitat |
DualCoreCpu
(Gast)
n/a Beiträge |
#26
Danke Euch allen! Ich musste wirklich die Synedit(s) aus der .dpr entfernen und dann noch den Namen meiner Form anpassen.
Form2 statt SynEditKeyStrokeEditorForm. Und natürlich Begin End Klammer ergänzen. Warum macht das Delphi nicht mehr automatisch?
Delphi-Quellcode:
Hatte mich schon gewundert, warum de Begin End- Klammer gefehlt hat.
program Edit;
uses Vcl.Forms, UFrame in 'UFrame.pas' {Frame1: TFrame}, UEditor in 'UEditor.pas' {Form2: TForm2}; //Synedit(s) entfernt, dafür Suchpfad ergänzt begin //Begin und Application.CreateForm(TForm2, Form2); Application.Initialize; // Diese beiden Zeilen Application.Run; // händisch hinzugefügt, früher hat das Delphi automatisch erledigt end. //End. hinzugefügt Werde mal testen wie sich Delphi diesbezüglich bei anderen Projekten verhält. Aber nun kann ich mein Projekt übersetzen und auch ausführen. |
Zitat |
Ansicht |
Linear-Darstellung |
Zur Hybrid-Darstellung wechseln |
Zur Baum-Darstellung wechseln |
ForumregelnEs ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus. Trackbacks are an
Pingbacks are an
Refbacks are aus
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
LinkBack URL |
About LinkBacks |