Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.19;
Скачать: CL | DM;

Вниз

TIntegerField.EditMask   Найти похожие ветки 

 
alehan ©   (2006-09-19 18:43) [0]

В базе время храниться в секундах, пользователь видит и вводит его по маске nn:ss. На форме ClientDataSet с двумя Integer-полями, DataSource и DBGrid. У полей заданы события OnSetText и OnGetText и св-во EditMask.

Код:

 TForm1 = class(TForm)
   ClientDataSet: TClientDataSet;
   ClientDataSetN1: TIntegerField;
   ClientDataSetN2: TIntegerField;
   DBGrid1: TDBGrid;
   DataSource1: TDataSource;
   procedure FormCreate(Sender: TObject);
   procedure ClientDataSetNGetText(Sender: TField; var Text: String; DisplayText: Boolean);
   procedure ClientDataSetNSetText(Sender: TField; const Text: String);
 end;

procedure TForm1.FormCreate(Sender: TObject);
begin
ClientDataSetN1.EditMask:="99\:99;1;_";
ClientDataSetN2.EditMask:="99\:99;1;_";
ClientDataSet.CreateDataSet;
end;

procedure TForm1.ClientDataSetNGetText(Sender: TField; var Text: String; DisplayText: Boolean);
var i, j: integer;
begin
i:=Sender.AsInteger;
j:=i mod 60; Text:=IntToStr(j); if j<=9 then Text:="0"+Text;
i:=(i-j) div 60; Text:=IntToStr(i)+":"+Text; if i<=9 then Text:="0"+Text;
end;

procedure TForm1.ClientDataSetNSetText(Sender: TField; const Text: String);
begin
//ShowMessage(Text);
Sender.AsInteger:=60*StrToIntDef(copy(Text,1,2),0)+StrToIntDef(copy(Text,4,2),0);
end;


Если вводить вручную - всё работает нормально.

Но если копировать в DBGrid из буфера обмена (строку типа "12:34") - при переходе в другой столбец значение сбрасывается на старое. Закомментированный ShowMessage в OnSetText показывает тоже старое значение.

Кто-нибудь делал что-то похожее? Помогите! Спасибо.


 
alehan ©   (2006-09-20 13:15) [1]

В Delphi2006 тоже самое.

TJvDBGrid ведёт себя также.

А вот обычный TDBEdit - работает нормально. Т.е. воспринимает ввод через буфер обмена. Т.е. дело именно в DBGrid.

Ну хоть посочувствовал бы кто!



Страницы: 1 вся ветка

Текущий архив: 2006.11.19;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.137 c
6-1148946937
nikitian
2006-05-30 03:55
2006.11.19
Проблема с кодировкой в indySMTP


2-1162359332
apic
2006-11-01 08:35
2006.11.19
автозагружаемые DLL


15-1162137014
Ketmar
2006-10-29 18:50
2006.11.19
softwarer.ru


15-1162043372
PHPDeveloper
2006-10-28 17:49
2006.11.19
ICQ


15-1162202026
IMHO
2006-10-30 12:53
2006.11.19
Как нужно есть?