source: trunk/UFormPanel.pas

Last change on this file was 1, checked in by chronos, 5 years ago
  • Added: Initial version.
File size: 2.4 KB
Line 
1unit UFormPanel;
2
3{$mode objfpc}{$H+}
4
5interface
6
7uses
8 Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls,
9 UCompare;
10
11type
12
13 { TFormPanel }
14
15 TFormPanel = class(TForm)
16 ButtonBrowse: TButton;
17 EditFile: TEdit;
18 OpenDialog1: TOpenDialog;
19 PaintBox1: TPaintBox;
20 ScrollBar1: TScrollBar;
21 procedure ButtonBrowseClick(Sender: TObject);
22 procedure EditFileChange(Sender: TObject);
23 procedure FormCreate(Sender: TObject);
24 procedure FormDestroy(Sender: TObject);
25 procedure FormResize(Sender: TObject);
26 procedure FormShow(Sender: TObject);
27 procedure PaintBox1Paint(Sender: TObject);
28 procedure ScrollBar1Change(Sender: TObject);
29 private
30
31 public
32 Compare: TTextCompare;
33 procedure Reload;
34 end;
35
36var
37 FormPanel: TFormPanel;
38
39implementation
40
41{$R *.lfm}
42
43{ TFormPanel }
44
45procedure TFormPanel.ScrollBar1Change(Sender: TObject);
46begin
47 PaintBox1.Repaint;
48end;
49
50procedure TFormPanel.Reload;
51begin
52 if FileExists(EditFile.Text) then begin
53 Compare.TextFile.LoadFromFile(EditFile.Text);
54 end else Compare.Clear;
55 Compare.Rebuild;
56 ScrollBar1.PageSize := Trunc(PaintBox1.Height / Compare.LineHeight);
57 ScrollBar1.Max := Compare.Lines.Count;
58 PaintBox1.Repaint;
59end;
60
61procedure TFormPanel.FormCreate(Sender: TObject);
62begin
63 Compare := TTextCompare.Create;
64 EditFile.Text := 'UCompare.pas';
65 Compare.WordWrap := True;
66end;
67
68procedure TFormPanel.ButtonBrowseClick(Sender: TObject);
69begin
70 OpenDialog1.InitialDir := ExtractFileDir(EditFile.Text);
71 OpenDialog1.FileName := ExtractFileName(EditFile.Text);
72 if OpenDialog1.Execute then begin
73 EditFile.Text := OpenDialog1.FileName;
74 end;
75end;
76
77procedure TFormPanel.EditFileChange(Sender: TObject);
78begin
79 Reload;
80end;
81
82procedure TFormPanel.FormDestroy(Sender: TObject);
83begin
84 FreeAndNil(Compare);
85end;
86
87procedure TFormPanel.FormResize(Sender: TObject);
88begin
89 Compare.CharsPerLine := Trunc((PaintBox1.Width - Compare.LineNumbersWidth) / PaintBox1.Canvas.TextWidth('A'));
90 Compare.Rebuild;
91 ScrollBar1.PageSize := Trunc(PaintBox1.Height / Compare.LineHeight);
92 ScrollBar1.Max := Compare.Lines.Count;
93 PaintBox1.Repaint;
94end;
95
96procedure TFormPanel.FormShow(Sender: TObject);
97begin
98 Reload;
99end;
100
101procedure TFormPanel.PaintBox1Paint(Sender: TObject);
102begin
103 Compare.Render(PaintBox1.Canvas, ScrollBar1.Position);
104end;
105
106end.
107
Note: See TracBrowser for help on using the repository browser.