Tedit стиле 1C

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Tedit стиле 1C

Сообщение alexmai » 22.05.2009 09:48:52

Может кому интересно пришлось допиливать
1. TEdit в стиле 1С
т.е. при вводе float числа остаются видимыми знаки после разделителя и перепрыгивание через разделитель происходит нажатием точки или запятой или стрелки
добавил процедуры
procedure Tformopl.FloatKeyDown(snd:TEdit; var Key: Word);
var s:string;
begin
s:='';
if Key=46 then
begin
s:=copy(snd.text,snd.SelStart+1,1);
if (s=',') then Key:=0;
if (s='.') then Key:=0;
end;

end;
procedure Tformopl.FloatKeyPress(snd:TEdit; var Key: char;dig:integer);
var a:extended;
s:string;
begin
TryStrToFloat(snd.Text,a);
if (Key in [#8,#13,'-', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] ) then
if snd.selstart=0 then
begin
s:=rightstr(snd.Text,dig+1);
if dig>0 then
snd.Text:=Key+s
else
snd.Text:=Key;
Key:=#0;
Snd.SelStart:=Snd.SelStart+1;
end
else
Key:=Key
else
begin
if (Key in ['.', ',']) then
Snd.SelStart:=Snd.SelStart+1;
Key :=#0;
end;
end;
procedure Tformopl.floatChange(snd:TEdit;dig:integer);
var a:extended;
posk,nn:integer;
st:extended;
begin
st:=power(10,dig);
nn:=trunc(st);
posk:=snd.SelStart;
TryStrToFloat(snd.Text,a);
a:=trunc(a*nn)/nn;
snd.Text:=FloatToStrF(a,ffFixed, 15, dig);
snd.SelStart:=posk;
end;

а в методах самого TEdit вызываю эти процедуры
procedure Tformopl.Edit1Change(Sender: TObject);
begin
FloatChange(Edit1,2); // 2- разрядность
end;
procedure Tformopl.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
FloatKeyDown(Edit1,Key);
end;
procedure Tformopl.Edit1KeyPress(Sender: TObject; var Key: char);
begin
FloatKeyPress(Edit1,Key,2);
end;

Есть реализация навороченных заголовков скроллируемых синхронно с гридом, итоговая строка и выделение фиксированных ячеек StringGrid .
кому интересно пишите в мыло
a_maceyko@mail.ru
alexmai
постоялец
 
Сообщения: 106
Зарегистрирован: 02.02.2009 14:58:42

Re: Tedit стиле 1C

Сообщение Mr.Smart » 22.05.2009 11:54:54

Делай набор компонентов.
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Tedit стиле 1C

Сообщение alexs » 22.05.2009 19:11:15

Если дело стоящее - присоединяйся к доработке RxDBGrid-а
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Tedit стиле 1C

Сообщение alexmai » 27.05.2009 12:26:31

Mr.Smart писал(а):Делай набор компонентов.

Компонент пока не хочется, потому, я этот Tedit засовываю в ячейку Stringgrid, чтобы и в ячейке использовать такой же стиль редактирования.
Когда закончу с наполнением функционала Stringgrid тогда можно и пытаться делать компоненты

Добавлено спустя 6 минут 55 секунд:
alexs писал(а):Если дело стоящее - присоединяйся к доработке RxDBGrid-а

Да пока не могу самого rxFPC найти работающего на Linux
alexmai
постоялец
 
Сообщения: 106
Зарегистрирован: 02.02.2009 14:58:42

Re: Tedit стиле 1C

Сообщение alexs » 27.05.2009 19:48:13

а чего искать? скачай с SVN
Код: Выделить всё
svn co https://lazarus-ccr.svn.sourceforge.net/svnroot/lazarus-ccr/components/rx


естественно - svn клиентдолжен быть установлен.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 33

Рейтинг@Mail.ru