Главная страница
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.05 c
2-1162736465
Student2007
2006-11-05 17:21
2006.11.19
Убрать границы после использования Rectagle


15-1162125633
MsGuns
2006-10-29 15:40
2006.11.19
Динамо делает Локо !


1-1160550187
Calibr
2006-10-11 11:03
2006.11.19
Количество строк в файле


2-1162381860
Stan
2006-11-01 14:51
2006.11.19
Управление компонентами


15-1162563306
Rikki
2006-11-03 17:15
2006.11.19
HELP!!!!!!