Главная страница
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.064 c
15-1162209544
Obideli
2006-10-30 14:59
2006.11.19
Как mail добавить в list ?


3-1158810978
Merko2005
2006-09-21 07:56
2006.11.19
Как вычислить кол-во месяцев


2-1162375551
md
2006-11-01 13:05
2006.11.19
pen.Style:=psDash;


15-1162000406
ProV
2006-10-28 05:53
2006.11.19
Можно ли изменить параметр FVisible в привате класса другого юнит


15-1162141580
foofuu
2006-10-29 20:06
2006.11.19
Меню в TheBat!