source: oup/releases/0.33a/Helper_ValueEdit.pas@ 522

Last change on this file since 522 was 46, checked in by alloc, 18 years ago
File size: 4.5 KB
Line 
1unit Helper_ValueEdit;
2
3interface
4
5uses
6 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7 Dialogs, StdCtrls, CrossEdit, Math;
8
9type
10 TForm_ValueEdit = class(TForm)
11 group: TGroupBox;
12 btn_ok: TButton;
13 btn_cancel: TButton;
14 lbl_current: TLabel;
15 edit_current: TEdit;
16 lbl_new: TLabel;
17 lbl_offset: TLabel;
18 lbl_datatype: TLabel;
19 edit_offset: TEdit;
20 edit_datatype: TEdit;
21 procedure btn_cancelClick(Sender: TObject);
22 procedure btn_okClick(Sender: TObject);
23 procedure MakeVarInput(objectname: String; offset: LongWord;
24 datatype: Word; current: String; caller: TObject);
25 procedure FormCreate(Sender: TObject);
26 private
27 public
28 edit_new: TCrossEdit;
29 end;
30
31var
32 Form_ValueEdit: TForm_ValueEdit;
33
34
35implementation
36
37uses BinEdit, RawEdit, DataStructures, Main;
38
39{$R *.dfm}
40
41var
42 caller_win_dat: TForm_BinEdit;
43 caller_win_raw: TForm_RawEdit;
44 _datatype: Word;
45 _offset: LongWord;
46
47
48
49
50procedure TForm_ValueEdit.MakeVarInput(objectname: String; offset: LongWord;
51 datatype: Word; current: String; caller: TObject);
52begin
53 caller_win_dat := nil;
54 caller_win_raw := nil;
55 if Pos('rawedit', TComponent(caller).Name) > 0 then
56 caller_win_raw := TForm_RawEdit(caller)
57 else
58 caller_win_dat := TForm_BinEdit(caller);
59 Form_Main.Enabled := False;
60 Self.Visible := True;
61 group.Caption := 'Edit value';
62 _datatype := datatype;
63 _offset := offset;
64 if Length(objectname) > 0 then
65 group.Caption := group.Caption + ' for ' + objectname;
66 edit_offset.Text := '0x' + IntToHex(offset, 8);
67 edit_datatype.Text := GetDataType(datatype);
68 edit_current.Text := current;
69 edit_new.EditType := etString;
70 edit_new.Text := '';
71 edit_new.LimitCheck := False;
72 edit_new.MaxLength := 0;
73 edit_new.Max := 0;
74 edit_new.BorderStyle := bsSingle;
75 Self.Width := 300;
76 case datatype of
77 1..4:
78 begin
79 edit_new.EditType := etUnsignedInt;
80 edit_new.LimitCheck := True;
81 edit_new.Max := Int(Power(256, datatype)) - 1;
82 end;
83 5..8:
84 begin
85 edit_new.MaxLength := 2 * (datatype - 4);
86 edit_new.EditType := etHex;
87 end;
88 9:
89 begin
90 edit_new.EditType := etFloat;
91 edit_new.LimitCheck := False;
92 end;
93 10:
94 begin
95 edit_new.EditType := etBinary;
96 edit_new.LimitCheck := False;
97 edit_new.MaxLength := 8;
98 end;
99 13..16:
100 begin
101 Exit;
102 edit_new.EditType := etInteger;
103 edit_new.LimitCheck := True;
104 edit_new.Max := Int((Power(256, datatype - 13)) / 2) - 1;
105 edit_new.Min := 1 - Int((Power(256, datatype - 13)) / 2) - 1;
106 end;
107 10000..65535:
108 begin
109 edit_new.EditType := etString;
110 edit_new.LimitCheck := False;
111 edit_new.MaxLength := datatype - 10000;
112 Self.Width := 700;
113 end;
114 end;
115 edit_new.SetFocus;
116 edit_new.SelectAll;
117end;
118
119
120
121
122procedure TForm_ValueEdit.btn_okClick(Sender: TObject);
123begin
124 if not edit_new.NoValidValue then
125 begin
126 Form_Main.Enabled := True;
127 Self.Visible := False;
128 if caller_win_dat = nil then
129 caller_win_raw.SetNewValue(_datatype, _offset, edit_new.Text)
130 else
131 caller_win_dat.SetNewValue(_datatype, _offset, edit_new.Text);
132 end;
133end;
134
135
136
137
138procedure TForm_ValueEdit.FormCreate(Sender: TObject);
139begin
140 edit_new := TCrossEdit.Create(Self);
141 with edit_new do
142 begin
143 Left := 88;
144 Top := 88;
145 Width := 203;
146 Height := 18;
147 Anchors := [akLeft, akTop, akRight];
148 AutoSize := False;
149 BorderStyle := bsNone;
150 Color := clWhite;
151 Font.Charset := DEFAULT_CHARSET;
152 Font.Color := clWindowText;
153 Font.Height := -11;
154 Font.Name := 'Tahoma';
155 Font.Style := [];
156 HideSelection := False;
157 ParentFont := False;
158 TabOrder := 5;
159 Text := '0000';
160 FocusAlignment := taLeftJustify;
161 NoFocusAlignment := taLeftJustify;
162 Precision := 15;
163 Decimals := 4;
164 FocusWidthInc := 0;
165 EditType := etHex;
166 NextDialogOnEnter := True;
167 DialogOnCursorKeys := True;
168 NextPriorStep := 1;
169 AutoFocus := False;
170 LimitCheck := True;
171 Max := 2147483647.000000000000000000;
172 FocusColor := clWhite;
173 NoFocusColor := clWhite;
174 ErrorColor := clRed;
175 StringCharSet := scFull;
176 end;
177 Self.InsertControl(edit_new);
178end;
179
180procedure TForm_ValueEdit.btn_cancelClick(Sender: TObject);
181begin
182 Form_Main.Enabled := True;
183 Self.Visible := False;
184end;
185
186end.
Note: See TracBrowser for help on using the repository browser.