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

📄 main.pas

📁 delphi编程控件
💻 PAS
📖 第 1 页 / 共 3 页
字号:
Unit main;

Interface

Uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ReportControl, StdCtrls, Buttons, Menus, IniFiles, Wordcap, ComCtrls,
  ExtCtrls, TB97, TB97Tlbr, AnimatedMenus98, TB97Ctls, RXCombos;

Type

  TColorComboBox = Class(TCustomComboBox)
  Private
    FColorValue : TColor;
    FDisplayNames : Boolean;
    FColorNames : TStrings;
    FOnChange : TNotifyEvent;
    Procedure SetColorValue(NewValue : TColor);
    Procedure SetDisplayNames(Value : Boolean);
    Procedure SetColorNames(Value : TStrings);
    Procedure ColorNamesChanged(Sender : TObject);
    Procedure ResetItemHeight;
    Procedure CMFontChanged(Var Message : TMessage); Message CM_FONTCHANGED;
  Protected
    Procedure CreateWnd; Override;
    Procedure DrawItem(Index : Integer; Rect : TRect; State : TOwnerDrawState); Override;
    Procedure Click; Override;
    Procedure BuildList; Virtual;
    Procedure DoChange; Dynamic;
  Public
    Constructor Create(AOwner : TComponent); Override;
    Destructor Destroy; Override;
    Property Text;
  Published
    Property ColorValue : TColor Read FColorValue Write SetColorValue
      Default clBlack;
    Property ColorNames : TStrings Read FColorNames Write SetColorNames;
    Property DisplayNames : Boolean Read FDisplayNames Write SetDisplayNames
      Default True;
    Property Color;
    Property Ctl3D;
    Property DragMode;
    Property DragCursor;
    Property Enabled;
    Property Font;
    {$IFDEF RX_D4}
    Property Anchors;
    Property BiDiMode;
    Property Constraints;
    Property DragKind;
    Property ParentBiDiMode;
    {$ENDIF}
    {$IFDEF WIN32}
    {$IFNDEF VER90}
    Property ImeMode;
    Property ImeName;
    {$ENDIF}
    {$ENDIF}
    Property ParentColor;
    Property ParentCtl3D;
    Property ParentFont;
    Property ParentShowHint;
    Property PopupMenu;
    Property ShowHint;
    Property TabOrder;
    Property TabStop;
    Property Visible;
    Property OnChange : TNotifyEvent Read FOnChange Write FOnChange;
    Property OnClick;
    Property OnDblClick;
    Property OnDragDrop;
    Property OnDragOver;
    Property OnDropDown;
    Property OnEndDrag;
    Property OnEnter;
    Property OnExit;
    Property OnKeyDown;
    Property OnKeyPress;
    Property OnKeyUp;
    {$IFDEF WIN32}
    Property OnStartDrag;
    {$ENDIF}
    {$IFDEF D4}
    Property OnEndDock;
    Property OnStartDock;
    {$ENDIF}
  End;

  TMainForm = Class(TForm)
    MainMenu1 : TMainMenu;
    T1 : TMenuItem;
    N5 : TMenuItem;
    FileOpen : TMenuItem;
    FileExit : TMenuItem;
    N1 : TMenuItem;
    PageSetup : TMenuItem;
    T2 : TMenuItem;
    NewTable : TMenuItem;
    N3 : TMenuItem;
    InsertLine : TMenuItem;
    AddLine : TMenuItem;
    DeleteLine : TMenuItem;
    N4 : TMenuItem;
    CombineCells : TMenuItem;
    SplitCell : TMenuItem;
    N7 : TMenuItem;
    FileSave : TMenuItem;
    OpenDialog1 : TOpenDialog;
    N2 : TMenuItem;
    AddCell : TMenuItem;
    InsertCell : TMenuItem;
    DeleteCell : TMenuItem;
    CellBorderLine : TMenuItem;
    CellFont : TMenuItem;
    CellDiagonalLine : TMenuItem;
    CellColor : TMenuItem;
    FontDialog1 : TFontDialog;
    PrinterSetupDialog1 : TPrinterSetupDialog;
    CellAlign : TMenuItem;
    SaveDialog1 : TSaveDialog;
    PrintIt : TMenuItem;
    VSplitCell : TMenuItem;
    MarginSetting : TMenuItem;
    N6 : TMenuItem;
    PrintPreivew : TMenuItem;
    PopupMenu1 : TPopupMenu;
    N8 : TMenuItem;
    N9 : TMenuItem;
    N10 : TMenuItem;
    N11 : TMenuItem;
    N12 : TMenuItem;
    N13 : TMenuItem;
    N14 : TMenuItem;
    N15 : TMenuItem;
    N16 : TMenuItem;
    N17 : TMenuItem;
    N18 : TMenuItem;
    N19 : TMenuItem;
    N20 : TMenuItem;
    N21 : TMenuItem;
    N22 : TMenuItem;
    N23 : TMenuItem;
    N24 : TMenuItem;
    file1 : TMenuItem;
    FileClose : TMenuItem;
    ms_cap1 : TMSOfficeCaption;
    N26 : TMenuItem;
    SBar : TStatusBar;
    ScrollBox1 : TScrollBox;
    N27 : TMenuItem;
    N28 : TMenuItem;
    A1 : TMenuItem;
    N29 : TMenuItem;
    ReportControl1 : TReportControl;
    Dock971 : TDock97;
    MainMenu981 : TMainMenu98;
    Dock972 : TDock97;
    Toolbar971 : TToolbar97;
    ToolbarButton972 : TToolbarButton97;
    ToolbarButton973 : TToolbarButton97;
    ToolbarButton974 : TToolbarButton97;
    ToolbarButton975 : TToolbarButton97;
    ToolbarButton976 : TToolbarButton97;
    ToolbarButton977 : TToolbarButton97;
    ToolbarButton978 : TToolbarButton97;
    ToolbarButton979 : TToolbarButton97;
    ToolbarButton9710 : TToolbarButton97;
    ToolbarButton9711 : TToolbarButton97;
    ToolbarButton9712 : TToolbarButton97;
    ToolbarSep974 : TToolbarSep97;
    ToolbarSep975 : TToolbarSep97;
    ToolbarSep976 : TToolbarSep97;
    ToolbarSep979 : TToolbarSep97;
    FontBox : TComboBox;
    FontSizeBox : TComboBox;
    ToolbarButton9713 : TToolbarButton97;
    ToolbarSep9710 : TToolbarSep97;
    PopupMenu981 : TPopupMenu98;
    N25 : TMenuItem;
    N30 : TMenuItem;
    N31 : TMenuItem;
    ToolbarButton9714 : TToolbarButton97;
    Toolbar972 : TToolbar97;
    ToolbarButton971 : TToolbarButton97;
    ToolbarButton9715 : TToolbarButton97;
    ToolbarButton9716 : TToolbarButton97;
    CellColorBtn : TToolbarButton97;
    ToolbarButton9717 : TToolbarButton97;
    Procedure FormCreate(Sender : TObject);
    Procedure FileExitClick(Sender : TObject);
    Procedure FileOpenClick(Sender : TObject);
    Procedure NewTableClick(Sender : TObject);
    Procedure FormResize(Sender : TObject);
    Procedure InsertLineClick(Sender : TObject);
    Procedure AddLineClick(Sender : TObject);
    Procedure CombineCellsClick(Sender : TObject);
    Procedure SplitCellClick(Sender : TObject);
    Procedure CellPropClick(Sender : TObject);
    Procedure DeleteLineClick(Sender : TObject);
    Procedure AddCellClick(Sender : TObject);
    Procedure InsertCellClick(Sender : TObject);
    Procedure DeleteCellClick(Sender : TObject);
    Procedure CellBorderLineClick(Sender : TObject);
    Procedure CellDiagonalLineClick(Sender : TObject);
    Procedure CellFontClick(Sender : TObject);
    Procedure CellColorClick(Sender : TObject);
    Procedure CellAlignClick(Sender : TObject);
    Procedure PageSetupClick(Sender : TObject);
    Procedure FileSaveClick(Sender : TObject);
    Procedure PrintItClick(Sender : TObject);
    Procedure VSplitCellClick(Sender : TObject);
    Procedure MarginSettingClick(Sender : TObject);
    Procedure PrintPreivewClick(Sender : TObject);
    Procedure UpdateOldies(thefile : String; sender : tobject);
    Procedure RecentFile1(sender : tobject);
    Procedure RecentFile2(sender : tobject);
    Procedure RecentFile3(sender : tobject);
    Procedure RecentFile4(sender : tobject);
    Procedure RecentFile5(sender : tobject);
    Procedure RecentFile6(sender : tobject);
    Procedure RecentFile7(sender : tobject);
    Procedure RecentFile8(sender : tobject);
    Procedure RecentFile9(sender : tobject);
    Procedure T1Click(Sender : TObject);
    Procedure FileCloseClick(Sender : TObject);
    Procedure N25Click(Sender : TObject);
    Procedure N27Click(Sender : TObject);
    Procedure N28Click(Sender : TObject);
    Procedure A1Click(Sender : TObject);
    Procedure N29Click(Sender : TObject);
    Procedure DisplayHints(Sender : TObject);
    Procedure ToolbarButton977Click(Sender : TObject);
    Procedure N31Click(Sender : TObject);
    Procedure CellColorBtnClick(Sender : TObject);
    Procedure CellColorBoxClick(Sender : TObject);
    Procedure FontBoxChange(Sender : TObject);
    Procedure FormClose(Sender : TObject; Var Action : TCloseAction);
    procedure SBarDrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel;
      const Rect: TRect);

  Private
    { Private declarations }
  Public
    { Public declarations }

  End;


Const
  DefIni = 'EReport.ini';

Var
  MainForm : TMainForm;
  thefile : String;
  WorkDir : String;
  ColorBox : TColorComboBox;
  ALabel : TLabel;
  Hwd : THandle;

Function GetItemHeight(Font : TFont) : Integer;
Function CallBackProc(Code : integer; wParam : wParam; Lparam : Lparam) : Longint;
{$IFDEF Win32}stdCall;
{$ELSE}Export;
{$ENDIF}

Implementation

Uses NewDialog, PropDlg, Border, diagonal, Color, Align, vsplit, margin, SetWorkPlace,
  About;

{$R *.DFM}


{ TColorComboBox }
Const
  ColorsInList = 16;
  ColorValues : Array[0..ColorsInList - 1] Of TColor = (
    clBlack, clMaroon, clGreen, clOlive, clNavy, clPurple, clTeal, clGray,
    clSilver, clRed, clLime, clYellow, clBlue, clFuchsia, clAqua, clWhite);


Function GetItemHeight(Font : TFont) : Integer;
Var
  DC : HDC;
  SaveFont : HFont;
  Metrics : TTextMetric;
Begin
  DC := GetDC(0);
  Try
    SaveFont := SelectObject(DC, Font.Handle);
    GetTextMetrics(DC, Metrics);
    SelectObject(DC, SaveFont);
  Finally
    ReleaseDC(0, DC);
  End;
  Result := Metrics.tmHeight + 1;
End;

Constructor TColorComboBox.Create(AOwner : TComponent);
Begin
  Inherited Create(AOwner);
  Style := csOwnerDrawFixed;
  FColorValue := clBlack;
  FColorNames := TStringList.Create;
  TStringList(FColorNames).OnChange := ColorNamesChanged;
  FDisplayNames := False;
End;

Destructor TColorComboBox.Destroy;
Begin
  TStringList(FColorNames).OnChange := Nil;
  FColorNames.Free;
  FColorNames := Nil;
  Inherited Destroy;
End;

Procedure TColorComboBox.CreateWnd;
Begin
  Inherited CreateWnd;
  BuildList;
  SetColorValue(FColorValue);
End;

Procedure TColorComboBox.BuildList;
Var
  I : Integer;
  ColorName : String;
Begin
  Clear;
  For I := 0 To Pred(ColorsInList) Do Begin
      If (I <= Pred(FColorNames.Count)) And (FColorNames[I] <> '') Then
        ColorName := FColorNames[I]
      Else
        ColorName := Copy(ColorToString(ColorValues[I]), 3, MaxInt);
      Items.AddObject(ColorName, TObject(ColorValues[I]));
    End;
End;

Procedure TColorComboBox.ColorNamesChanged(Sender : TObject);
Begin
  If HandleAllocated Then Begin
      FColorValue := ColorValue;
      RecreateWnd;
    End;
End;

Procedure TColorComboBox.SetColorNames(Value : TStrings);
Begin
  FColorNames.Assign(Value);
End;

Procedure TColorComboBox.SetDisplayNames(Value : Boolean);
Begin
  If DisplayNames <> Value Then Begin
      FDisplayNames := Value;
      Invalidate;
    End;
End;

Procedure TColorComboBox.SetColorValue(NewValue : TColor);
Var
  Item : Integer;
  CurrentColor : TColor;
Begin
  If (ItemIndex < 0) Or (NewValue <> FColorValue) Then
    { change selected item }
    For Item := 0 To Pred(Items.Count) Do Begin
        CurrentColor := TColor(Items.Objects[Item]);
        If CurrentColor = NewValue Then Begin
            FColorValue := NewValue;
            If ItemIndex <> Item Then ItemIndex := Item;
            DoChange;
            Break;
          End;

⌨️ 快捷键说明

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