📄 fmain2.pas
字号:
unit fMain2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls, Menus, fDef, ExtCtrls;
const
MAC : array[0..5] of Integer = (5,10,30,60,120,240);
VMAC: array[0..2] of Integer = (5,10,30);
RSIC: array[0..1] of Integer = (5,10);
type
{ TVertLine }
TVertLine = class(TGraphicControl)
private
FVisible: Boolean;
protected
FPosition: Integer;
procedure SetPosition(const Value: Integer);
procedure Paint; override;
public
constructor Create(AOwner: TComponent); override;
property Position: Integer read FPosition write SetPosition;
end;
{ TfrmMain2 }
TfrmMain2 = class(TForm)
GRID: TStringGrid;
MainMenu1: TMainMenu;
N1: TMenuItem;
mi100: TMenuItem;
mi101: TMenuItem;
N3: TMenuItem;
mi0: TMenuItem;
mi1: TMenuItem;
mi2: TMenuItem;
mi3: TMenuItem;
N041: TMenuItem;
N051: TMenuItem;
N061: TMenuItem;
N071: TMenuItem;
N081: TMenuItem;
N091: TMenuItem;
N101: TMenuItem;
N111: TMenuItem;
N121: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
Header: TStringGrid;
miLeftOne: TMenuItem;
miRightOne: TMenuItem;
miPageLast: TMenuItem;
miPageFirst: TMenuItem;
miFirst: TMenuItem;
miLast: TMenuItem;
miQuickLeft: TMenuItem;
miQuickRight: TMenuItem;
miSizing: TMenuItem;
N2: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
miShowKLineHighLow: TMenuItem;
N13: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure GRIDDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
procedure mi100Click(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure mi0Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure HeaderDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
procedure N3Click(Sender: TObject);
procedure miPageLastClick(Sender: TObject);
procedure miLeftOneClick(Sender: TObject);
procedure miRightOneClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
procedure FormActivate(Sender: TObject);
procedure miPageFirstClick(Sender: TObject);
procedure miFirstClick(Sender: TObject);
procedure miLastClick(Sender: TObject);
procedure miQuickLeftClick(Sender: TObject);
procedure miQuickRightClick(Sender: TObject);
procedure N11Click(Sender: TObject);
private
FDataIndex: Integer;
function GetDataPerPage: Integer;
procedure SetDataIndex(Value: Integer);
protected
VertLine: TVertLine;
ScaleHigh: array[0..3] of Single;
ScaleLow: array[0..3] of Single;
MA: array[0..5] of TArrayOfSingle;
VMA: array[0..2] of TArrayOfSingle;
RSI: array[0..1] of TArrayOfSingle;
FStockName: string;
FPageStart: Integer;
FUnitWidth: Integer;
procedure CalcMA;
procedure CalcVMA;
procedure CalcRSI;
procedure DrawK(C: TCanvas; R: TRect); overload;
procedure DrawV(C: TCanvas; R: TRect); overload;
procedure DrawRSI(C: TCanvas; R: TRect); overload;
procedure DrawScaleK(C: TCanvas; R: TRect);
procedure DrawScaleV(C: TCanvas; R: TRect);
procedure DrawLine(A: TArrayOfSingle; Color: TColor; C: TCanvas; R: TRect; High, Low: Single);
procedure SetStockName(const Value: string);
procedure SetPageStart(Value: Integer);
procedure SetUnitWidth(Value: Integer);
procedure CalcAll;
function FindKLineScaleHighLow(DataFile: IDataFile; var High, Low: Single;
var HA, LA: TArrayOfSingle; var HIndex, LIndex: TArrayOfInteger): Boolean;
function FindVLineScaleHighLow(DataFile: IDataFile; var High, Low: Single): Boolean;
function PageIndex2DataIndex(Index: Integer): Integer;
procedure DRAW_DATE_SCALE(C: TCanvas; R: TRect; ShowText: Boolean);
procedure ITERATE_DATA(Index: Integer);
procedure MOVE_VERTLINE(DataIndex: Integer); overload;
function DataIndexToPixel(DataIndex: Integer): Integer;
function PixelToDataIndex(X: Integer): Integer;
procedure CLEAR_ALL_CALCULATE_DATA();
public
StkDataFile: IDataFile;
function Fy2Iy(FY: Single; R: TRect; ScaleHigh, ScaleLow: Single): Integer;
property StockName: string read FStockName write SetStockName;
property PageStart: Integer read FPageStart write SetPageStart;
property UnitWidth: Integer read FUnitWidth write SetUnitWidth;
property DataPerPage: Integer read GetDataPerPage;
property DataIndex: Integer read FDataIndex write SetDataIndex;
end;
var
frmMain2: TfrmMain2;
implementation
{$R *.dfm}
uses Math, fUtils;
procedure TfrmMain2.FormCreate(Sender: TObject);
begin
IS_FRACTION_UNDERLINE := True;
VertLine := TVertLine.Create(Self);
WindowState := wsMaximized;
FPageStart := 0;
FDataIndex := 0;
FUnitWidth:= 6;
GRID.Color := clBlack;
StockName := '00_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -