if ((ACol==1)&&(ARow==0)) Value="00,0";if ((ACol==2)&&(ARow==0)) Value="00,00";if ((ACol==8)&&(ARow==0)) Value="0000";
Value="#00";Value="0000,0";Value="0000";Value="0,000";Value="00";
void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &Key, TShiftState Shift){ if(!((Key>='0' && Key<='9') || (Key==FormatSettings.DecimalSeparator))) Key = 0;}
void __fastcall TForm1::Edit1Change(TObject *Sender){ TEdit* Edit = dynamic_cast<TEdit*>(Sender); if(!Edit) return; String val(Edit->Text); if(val.IsEmpty()) return; bool Separator(false); for(int i=1; i<=val.Length(); i++) { if(val[i]==FormatSettings.DecimalSeparator) { if(Separator) {val.Delete(i); --i;} else Separator = true; } else if(!(val[i]>='0' && val[i]<='9')) { val.Delete(i); --i; } } Edit->Text = val;}
TFormatSettings FormatSettings; FormatSettings.DecimalSeparator=','; if(Key==VK_RETURN) { if(StringGrid1->Col<(StringGrid1->ColCount-1)) {StringGrid1->Col++;} else StringGrid1->Col=0; } if(!isdigit(Key)&&(Key != VK_BACK)&&(Key!=VK_RETURN)&&(Key!=FormatSettings.DecimalSeparator)) { Key = 0x00; Application->MessageBoxA(L"Вводите только цифры и знак запятой.",L"Ошибка ввода данных",MB_ICONINFORMATION); }
TStringGrid* StringGrid = dynamic_cast<TStringGrid*>(Sender); if(!StringGrid) return; String var=StringGrid->Cells[StringGrid->Col][StringGrid->Row]; if ((StringGrid->Col==1)&&(StringGrid->Row==0)) ...
void __fastcall TForm1::StringGrid1SetEditText(TObject *Sender, int ACol, int ARow, const UnicodeString Value){FEdited = true; if(StringGrid1->EditorMode==false) { ShowMessage("OnSetEditText -> Finished"); FEdited = false; }}//---------------------------------------------------------------------------void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, int ACol, int ARow, bool &CanSelect){if(FEdited) { ShowMessage("OnSelectCell -> Finished"); FEdited = false; }}//---------------------------------------------------------------------------void __fastcall TForm1::StringGrid1Exit(TObject *Sender){if(FEdited && !StringGrid1->EditorMode) { ShowMessage("OnExit -> Finished"); FEdited = false; }}
TStringGrid* StringGrid = dynamic_cast<TStringGrid*>(Sender);if(!StringGrid) return; String value=StringGrid->Cells[StringGrid->Col][StringGrid->Row]; float x=0; if(TryStrToFloat(value,x)) { if(StringGrid->Col==1) // маска "00,0" / для второго столбца ячейки if(!TextCheck00_0(value)){Application->MessageBoxA(L"Данные не корректны (формат ячейки 00,0)",L"Ошибка ввода данных",MB_ICONINFORMATION); StringGrid->Cells[StringGrid->Col][StringGrid->Row]="";} ...//далее по аналогии }else { //если ошибка Application->MessageBoxA(L"Вводимые данные не корректны",L"Ошибка ввода данных",MB_ICONINFORMATION); StringGrid->Cells[StringGrid->Col][StringGrid->Row]=""; }
bool TForm1::TextCheck00_0(String value){ //если соответствует маске то возвращает истину bool ms1=false,ms2=false,ms3=false,ms4=false,ms5=false; TMask *mask0 = new TMask("[0-9]"); TMask *mask0_0 = new TMask("[0-9],[0-9]"); TMask *mask00 = new TMask("[0-9][0-9]"); TMask *mask00_0 = new TMask("[0-9][0-9],[0-9]"); TMask *mask0_00 = new TMask("[0-9],[0-9][0-9]"); if(mask0->Matches(value)) ms1=true; if(mask0_0->Matches(value)) ms2=true; if(mask00->Matches(value)) ms3=true; if(mask00_0->Matches(value))ms4=true; if(mask0_00->Matches(value))ms5=true; delete mask0; delete mask0_0; delete mask00; delete mask00_0; delete mask0_00; return (ms1|ms2|ms3|ms4|ms5);}