View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0003469 | JEDI VCL | 00 JVCL Components | public | 2006-01-25 10:13 | 2006-04-05 01:24 |
| Reporter | vmarko | Assigned To | obones | ||
| Priority | normal | Severity | major | Reproducibility | always |
| Status | resolved | Resolution | fixed | ||
| Product Version | 3.10 | ||||
| Target Version | Fixed in Version | 3.30 | |||
| Summary | 0003469: TJvSpin.Thousands := True causes incorrect caret movement (fix) | ||||
| Description | TJvSpin component does not behave correctly after setting Thousands property to true and decimals is > 0. The position is calcuated incorrectly because it does not take decimal part of number into account. Crude fix attached. | ||||
| Additional Information | Related issue: 0002717 - same bug, improper fix, not resolved | ||||
| Tags | No tags attached. | ||||
|
2006-01-25 10:14
|
SpinEditFix.diff (2,231 bytes)
*** JvSpin.pas.orig Tue Dec 27 19:08:02 2005
--- JvSpin.pas Tue Dec 27 19:43:36 2005
***************
*** 48,54 ****
{$IFDEF VisualCLX}
QComboEdits, JvQExComboEdits, QComCtrlsEx,
{$ENDIF VisualCLX}
! JvEdit, JvExMask, JvMaskEdit, JvComponent;
type
TSpinButtonState = (sbNotDown, sbTopDown, sbBottomDown);
--- 48,54 ----
{$IFDEF VisualCLX}
QComboEdits, JvQExComboEdits, QComCtrlsEx,
{$ENDIF VisualCLX}
! JvEdit, JvExMask, JvMaskEdit, JvComponent, JclStrings;
type
TSpinButtonState = (sbNotDown, sbTopDown, sbBottomDown);
***************
*** 643,649 ****
procedure TJvCustomSpinEdit.Change;
var
! // OldText: string;
OldSelStart: Integer;
begin
{ (rb) Maybe move to CMTextChanged }
--- 643,649 ----
procedure TJvCustomSpinEdit.Change;
var
! OldText: string;
OldSelStart: Integer;
begin
{ (rb) Maybe move to CMTextChanged }
***************
*** 653,659 ****
FChanging := True;
OldSelStart := SelStart;
try
! // OldText := inherited Text;
try
if not (csDesigning in ComponentState) and (coCheckOnChange in CheckOptions) then
begin
--- 653,659 ----
FChanging := True;
OldSelStart := SelStart;
try
! OldText := inherited Text;
try
if not (csDesigning in ComponentState) and (coCheckOnChange in CheckOptions) then
begin
***************
*** 666,678 ****
finally
FChanging := False;
end;
!
SelStart := OldSelStart;
if FOldValue <> Value then
begin
if Thousands and (Length(Text) mod 4 = 1) and (SelStart > 0) then
SelStart := SelStart + 1;
inherited Change;
FOldValue := Value;
end;
--- 666,682 ----
finally
FChanging := False;
end;
!
SelStart := OldSelStart;
if FOldValue <> Value then
begin
+ if Thousands then
+ SelStart := SelStart + StrCharCount(Text, ThousandSeparator) - StrCharCount(OldText,ThousandSeparator);
+ {
if Thousands and (Length(Text) mod 4 = 1) and (SelStart > 0) then
SelStart := SelStart + 1;
+ }
inherited Change;
FOldValue := Value;
end;
|
|
|
The issue affects TJvSpinEdit, sorry for wrong identifier. |
|
|
To reproduce, you need these values: Decimals = 2 (default) Thousands = True ValueType = vtFloat |
|
|
Your fix is ready to be added in CVS, as soon as it is back online. |
|
|
This is now in CVS |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2006-01-25 10:13 | vmarko | New Issue | |
| 2006-01-25 10:14 | vmarko | File Added: SpinEditFix.diff | |
| 2006-01-25 10:21 | vmarko | Note Added: 0008453 | |
| 2006-01-26 07:11 | obones | Note Added: 0008463 | |
| 2006-01-26 07:11 | obones | Status | new => confirmed |
| 2006-04-04 09:24 | obones | Note Added: 0008915 | |
| 2006-04-05 01:24 | obones | Status | confirmed => resolved |
| 2006-04-05 01:24 | obones | Resolution | open => fixed |
| 2006-04-05 01:24 | obones | Assigned To | => obones |
| 2006-04-05 01:24 | obones | Note Added: 0008948 |