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

📄 unit1.pas

📁 IDE开发环境
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Menus, StdCtrls, OleCtrls, ComCtrls, CommCtrl, axctrls, ActiveX,
  ImgList, ExtCtrls, CodeSense_TLB, TB2Item, TBX, TB2ExtItems, Utils;

type
  TForm1 = class(TForm)
    SplitteB: TSplitter;
    Panel1: TPanel;
    Memo1: TMemo;
    SplitterL: TSplitter;
    SplitterR: TSplitter;
    SplitterT: TSplitter;
    Label1: TLabel;
    Tabs: TPageControl;
    First: TTabSheet;
    TabPopup: TPopupMenu;
    Close1: TMenuItem;

    procedure FormCreate(Sender: TObject);
    procedure _WM_GETMINMAXINFO( var mmInfo : TWMGETMINMAXINFO );  message wm_GetMinMaxInfo;
    procedure TabsChange(Sender: TObject);
    procedure TabsDragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    procedure TabsDragDrop(Sender, Source: TObject; X, Y: Integer);
    procedure TabsMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormActivate(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);

  private
       { Private declarations }

    DefWinProc : TFarProc;
    DefWinProcInstance : Pointer;
//    procedure WinProc(var Message: TMessage);

  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  CodeSense : array[0..255] of TCodeSense;
  CodeSenseCL: TNotifyEvent;

implementation

uses MainUnit;

{$R *.DFM}


procedure TForm1.FormCreate(Sender: TObject);
VAR
  NewFont : TFont;
begin
//  CodeSenseClick(IJustGotClicked, CodeSenseCtrl);
//  CodeSense1.UpdateControlPositions;
  Form1.Panel1.Height := 0;
  Form1.Width := 450;
//  CodeSense1.Width := 0;
//  CodeSense1.Height :=0;

  //Setup CodeSense:
  CodeSense[0] := TCodeSense.Create(Self);
  CodeSense[0].Parent := Form1.First;
  CodeSense[0].UpdateControlPositions;
  CodeSense[0].Align := alClient;
  CodeSense[0].AutoIndentMode := 2;
  CodeSense[0].ColorSyntax := True;
  CodeSense[0].CurrentView := 0;
  CodeSense[0].Cursor := crDefault;
  CodeSense[0].DisplayLeftMargin := True;
  CodeSense[0].DisplayWhiteSpace := False;
  CodeSense[0].DragCursor := crDrag;
  CodeSense[0].DragMode := dmManual;
  CodeSense[0].EnableColumnSel := True;
  CodeSense[0].EnableCRLF := True;
  CodeSense[0].Enabled := True;
  CodeSense[0].EnableDragDrop := True;
  CodeSense[0].EnableHSplitter := True;
  CodeSense[0].EnableVSplitter := True;
  CodeSense[0].ExpandTabs := False;
  {
  CodeSense[0].Font.Color := clWindowText;
  CodeSense[0].Font.Height := -15;
  CodeSense[0].Font.Pitch := fpDefault;
  CodeSense[0].Font.Size := 11;
  }
  CodeSense[0].GlobalProps := True;
  CodeSense[0].Height := 215;
  CodeSense[0].HideSel := True;
  CodeSense[0].HighlightedLine := -1;
  CodeSense[0].HScrollVisible := True;
  CodeSense[0].HSplitterPos := 0;
  CodeSense[0].Left := 30;
  CodeSense[0].LineNumbering := True;
  CodeSense[0].LineNumberStart := 1;
  CodeSense[0].LineNumberStyle := 10 - cmDecimal;
  CodeSense[0].LineToolTips := True;
  CodeSense[0].Modified := False;
  CodeSense[0].NormalizeCase := False;
  CodeSense[0].Overtype := False;
  CodeSense[0].OvertypeCaret := True;
  CodeSense[0].ParentFont := False;
  CodeSense[0].ParentShowHint := True;
  CodeSense[0].ReadOnly := False;
  CodeSense[0].ReplacePreserveCase := False;
  CodeSense[0].SearchCaseSensitive := False;
  CodeSense[0].SearchRegExp := False;
  CodeSense[0].SearchWholeWord := False;
  CodeSense[0].SelBounds := True;
  CodeSense[0].TabSize := 4;
  CodeSense[0].TabStop := True;
  CodeSense[0].Top := 5;
  CodeSense[0].Text := '''Type your code here';
  CodeSense[0].UndoLimit := 255;
  CodeSense[0].VScrollVisible := True;
  CodeSense[0].VSplitterPos := 0;
  CodeSense[0].Width := 420;
  CodeSense[0].Left := 3;
//  CodeSense[0].Top := 0;
  CodeSense[0].Align := alClient;
  CodeSense[0].BorderStyle := 10;

  Utils.RegisterLanguages(Unit1.CodeSense[0]);
end;

procedure TForm1._WM_GETMINMAXINFO( var mmInfo : TWMGETMINMAXINFO );
begin
  with mmInfo.minmaxinfo^ do
  begin
    // allow at most half of the screen, and position it in the middle
    ptmaxposition.x := 0;//MainForm.Left + MainForm.TBDock4.Width-100;
    ptmaxposition.y := 0;//MainForm.Top + MainForm.Panel3.Height-100;

    ptmaxsize.x     := 100;//MainForm.Width - MainForm.TBDock4.Width-100;
    ptmaxsize.y     := 100;//MainForm.Height - MainForm.Panel3.Height-100;
  end;
end;


procedure TForm1.TabsChange(Sender: TObject);
var Items : Integer;
begin
  For Items := 0 To MainForm.TreeView2.Items.Count-1 Do
    begin
      if MainForm.TreeView2.Items[Items].Data = Form1.Tabs.ActivePage Then
        begin
          MainForm.TreeView2.Select(mainForm.TreeView2.Items[Items]);
          //TreeView2.Select(TreeView2.Items.AddChildObject(TreeView2.Items[Items], Control.Name, TObject(Control)));
        end;
    End;
IF Tabs.ActivePageIndex > 0 then
  CodeSense[Tabs.ActivePageIndex].SetFocus
else
  CodeSense[0].SetFocus;
end;

procedure TForm1.TabsDragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  if source is TPageControl then accept:= true;
end;

procedure TForm1.TabsDragDrop(Sender, Source: TObject; X, Y: Integer);
var
  HitIndex: Integer;
  HitTestInfo: TTCHitTestInfo;
begin 
  HitTestInfo.pt := Point(X,Y); 
  HitIndex := SendMessage(Tabs.Handle, TCM_HITTEST, 0,Longint(@HitTestInfo));
  if (HitIndex <> -1) and (TTabSheet(Source).PageIndex <> HitIndex) then
    TTabSheet(Source).PageIndex:= HitIndex;
end;

procedure TForm1.TabsMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  HitIndex: Integer; 
  HitTestInfo: TTCHitTestInfo; 
begin
  HitTestInfo.pt := Point(X,Y);
  HitIndex := SendMessage(Tabs.Handle, TCM_HITTEST, 0,Longint(@HitTestInfo));
  if (HitIndex <> -1) then begin
    Tabs.Pages[HitIndex].BeginDrag(False,-1); 
  end;
end;

procedure TForm1.FormActivate(Sender: TObject);
var Items : Integer;
begin
{With MainForm Do
Begin
  For Items := 0 To TreeView2.Items.Count-1 Do
    begin
      if TreeView2.Items[Items].Text = 'Code View' Then
        begin
          TreeView2.Select(TreeView2.Items[Items]);
        end;
     End;
End;}
MainForm.Undo1.Caption := 'Undo';
MainForm.TBXItem1.Hint := 'Create a new BASIC file';

MainForm.TBXItem15.ShortCut := TextToShortCut('Ctrl+N'); //File|New|BASIC File
MainForm.TBXItem17.ShortCut := TextToShortCut(''); //File|New|Form


MainForm.mnuFormDesigner.Visible := False;
MainForm.mnuCodeEditor.Visible := True;
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if (MainUnit.CloseChildren = False) Then
  CanClose := False;
  ShowWindow(Form1.Handle, SW_HIDE);
end;

//procedure TCodeSense.OnClick(Sender);
//begin
//Showmessage('Outch!');
//end;

procedure Click(Sender:TObject);
begin
  Showmessage('Outch!');
end;

end.

⌨️ 快捷键说明

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