Commit b535f0b

Nick committed on
Improve validation of order editor value
commit b535f0bd598f079c634678f7bd8cf681f4f171f7 parent dfbd736
2 changed files +26−20
Modifiedtracker.lfm +5−4
@@ -1,7 +1,7 @@
1 object frmTracker: TfrmTracker 1 object frmTracker: TfrmTracker
2 Left = 247 2 Left = 621
3 Height = 806 3 Height = 806
4 Top = 197 4 Top = 181
5 Width = 1270 5 Width = 1270
6 AllowDropFiles = True 6 AllowDropFiles = True
7 Caption = 'hUGETracker' 7 Caption = 'hUGETracker'
@@ -282,7 +282,7 @@ object frmTracker: TfrmTracker
282 DefaultColWidth = 17 282 DefaultColWidth = 17
283 DefaultRowHeight = 21 283 DefaultRowHeight = 21
284 ExtendedSelect = False 284 ExtendedSelect = False
285 Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goRangeSelect, goRowMoving, goEditing, goAutoAddRows, goTabs, goSmoothScroll, goFixedRowNumbering, goRowHighlight] 285 Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goRangeSelect, goRowMoving, goEditing, goTabs, goSmoothScroll, goFixedRowNumbering, goRowHighlight]
286 ParentFont = False 286 ParentFont = False
287 PopupMenu = OrderEditPopup 287 PopupMenu = OrderEditPopup
288 RangeSelectMode = rsmMulti 288 RangeSelectMode = rsmMulti
@@ -291,13 +291,14 @@ object frmTracker: TfrmTracker
291 TabOrder = 1 291 TabOrder = 1
292 UseXORFeatures = True 292 UseXORFeatures = True
293 OnAfterSelection = OrderEditStringGridAfterSelection 293 OnAfterSelection = OrderEditStringGridAfterSelection
294 OnCellProcess = OrderEditStringGridCellProcess
294 OnColRowDeleted = OrderEditStringGridColRowDeleted 295 OnColRowDeleted = OrderEditStringGridColRowDeleted
295 OnColRowExchanged = OrderEditStringGridColRowExchanged 296 OnColRowExchanged = OrderEditStringGridColRowExchanged
296 OnColRowInserted = OrderEditStringGridColRowInserted 297 OnColRowInserted = OrderEditStringGridColRowInserted
297 OnColRowMoved = OrderEditStringGridColRowMoved 298 OnColRowMoved = OrderEditStringGridColRowMoved
298 OnDblClick = OrderEditStringGridDblClick 299 OnDblClick = OrderEditStringGridDblClick
299 OnEditingDone = OrderEditStringGridEditingDone
300 OnKeyDown = OrderEditStringGridKeyDown 300 OnKeyDown = OrderEditStringGridKeyDown
301 OnValidateEntry = OrderEditStringGridValidateEntry
301 ColWidths = ( 302 ColWidths = (
302 64 303 64
303 34 304 34
Modifiedtracker.pas +21−16
@@ -271,6 +271,10 @@ type
271 procedure NoiseMacroPaintboxMouseUp(Sender: TObject; Button: TMouseButton; 271 procedure NoiseMacroPaintboxMouseUp(Sender: TObject; Button: TMouseButton;
272 Shift: TShiftState; X, Y: Integer); 272 Shift: TShiftState; X, Y: Integer);
273 procedure NoiseMacroPaintboxPaint(Sender: TObject); 273 procedure NoiseMacroPaintboxPaint(Sender: TObject);
274 procedure OrderEditStringGridCellProcess(Sender: TObject; aCol,
275 aRow: Integer; processType: TCellProcessType; var aValue: string);
276 procedure OrderEditStringGridValidateEntry(sender: TObject; aCol,
277 aRow: Integer; const OldValue: string; var NewValue: String);
274 procedure PlayCursorActionExecute(Sender: TObject); 278 procedure PlayCursorActionExecute(Sender: TObject);
275 procedure PlayOrderActionExecute(Sender: TObject); 279 procedure PlayOrderActionExecute(Sender: TObject);
276 procedure ScrollBox1MouseWheelDown(Sender: TObject; Shift: TShiftState; 280 procedure ScrollBox1MouseWheelDown(Sender: TObject; Shift: TShiftState;
@@ -342,7 +346,6 @@ type
342 procedure OrderEditStringGridColRowMoved(Sender: TObject; 346 procedure OrderEditStringGridColRowMoved(Sender: TObject;
343 IsColumn: Boolean; sIndex, tIndex: Integer); 347 IsColumn: Boolean; sIndex, tIndex: Integer);
344 procedure OrderEditStringGridDblClick(Sender: TObject); 348 procedure OrderEditStringGridDblClick(Sender: TObject);
345 procedure OrderEditStringGridEditingDone(Sender: TObject);
346 procedure OrderEditStringGridKeyDown(Sender: TObject; var Key: Word; 349 procedure OrderEditStringGridKeyDown(Sender: TObject; var Key: Word;
347 Shift: TShiftState); 350 Shift: TShiftState);
348 procedure PanicToolButtonClick(Sender: TObject); 351 procedure PanicToolButtonClick(Sender: TObject);
@@ -1686,6 +1689,23 @@ begin
1686 end; 1689 end;
1687 end; 1690 end;
1688 1691
1692 procedure TfrmTracker.OrderEditStringGridCellProcess(Sender: TObject; aCol,
1693 aRow: Integer; processType: TCellProcessType; var aValue: string);
1694 begin
1695 // Somewhat of a hack, to prevent accidentally pasting crap into the
1696 // order editor.
1697 if processType = cpPaste then
1698 aValue := OrderEditStringGrid.Cells[aCol, aRow];
1699 end;
1700
1701 procedure TfrmTracker.OrderEditStringGridValidateEntry(sender: TObject; aCol,
1702 aRow: Integer; const OldValue: string; var NewValue: String);
1703 var
1704 _: Integer;
1705 begin
1706 if not TryStrToInt(NewValue, _) then NewValue := OldValue;
1707 end;
1708
1689 procedure TfrmTracker.PlayCursorActionExecute(Sender: TObject); 1709 procedure TfrmTracker.PlayCursorActionExecute(Sender: TObject);
1690 begin 1710 begin
1691 if GetPreviewReady then begin 1711 if GetPreviewReady then begin
@@ -2204,21 +2224,6 @@ begin
2204 end; 2224 end;
2205 end; 2225 end;
2206 2226
2207 procedure TfrmTracker.OrderEditStringGridEditingDone(Sender: TObject);
2208 var
2209 Temp: Integer;
2210 begin
2211 // TODO: Fix this hack!
2212 // For some reason OnValidateEntry is giving bad pointers
2213 // for its NewValue and OldValue params. This is the workaround for now.
2214 with OrderEditStringGrid do begin
2215 if not TryStrToInt(Cells[Col, Row], Temp) then
2216 Cells[Col, Row] := ''
2217 else;
2218 end;
2219 ReloadPatterns;
2220 end;
2221
2222 procedure TfrmTracker.OrderEditStringGridKeyDown(Sender: TObject; 2227 procedure TfrmTracker.OrderEditStringGridKeyDown(Sender: TObject;
2223 var Key: Word; Shift: TShiftState); 2228 var Key: Word; Shift: TShiftState);
2224 begin 2229 begin