|
Тема
|
Post,commit при редакт.в клетка на таблица ?
|
|
Автор |
gydi (engineer) |
Публикувано | 15.06.06 17:12 |
|
Имам фаил (дбф) показан в таблица. Как, когато променя стойността в клетка от таблицата, промяната да се запише във файла, без да сменям реда. само въвеждам [enter] ,или вместо ентер чукам с мишката на съседна клетка.
(използвам табле-датасорсе-грид)
| |
Тема
|
Re: Post,commit при редакт.в клетка на таблица ?
[re: gydi]
|
|
Автор | eмил (Нерегистриран) |
Публикувано | 15.06.06 17:39 |
|
Виж събитията на DBGrid.
(Това което искаш не е хубаво да се прави така)
| |
Тема
|
Re: Post,commit при редакт.в клетка на таблица ?
[re: eмил]
|
|
Автор |
gydi (engineer) |
Публикувано | 15.06.06 17:53 |
|
пробвах ги повечето но нищо не стана. Въпроса е ако някой го е правил кое по точно събитие.
| |
Тема
|
Re: Post,commit при редакт.в клетка на таблица ?
[re: gydi]
|
|
Автор | eмил (Нерегистриран) |
Публикувано | 15.06.06 18:51 |
|
Няма да минеш само с едно събитие.
Трябва да ловиш много неща. Виж OnColEnter или OnColExit, но
няма да е достатъчно. Ще трябва да ловиш например
натискането на Enter и сигурно и на други навигационни клавиши.
Какво да стане като цъкаш извън грида например? (когато губи фокус)
Ще стане сигурно, но ще изглежда много оплетено.
Друг начин би бил да се разгледа реализацията на DBGrid кога
и как той влиза в режим на редакция на клетка и кога приключва
редакцията. И да се направи собствен грид, които има събите
от рода на "приключване на редакция на клетка". (ако например
в програмата има много гридове, които трябва да се държат така,
то това ще е по-добрия вариант)
ПП:А така става защото това което искаш е противоестествено.
Естественото е целия запис да се записва наведнъж. Какво би
станало ако например се добави нов запис и в него има
попълнено само едно поле, а липсва някое ключово? Например
въвел си име на човек, но ЕГН не, а то е задължителен атрибут.
Как да се процедира тогава? Още повече, че ти имаш DBF, който
ще позволи това, но ако таблицата беше на някой SQL сървер,
то този фокус посмъртно няма да стане :)
| |
Тема
|
Re: Post,commit при редакт.в клетка на таблица ?
[re: gydi]
|
|
Автор | eмил (Нерегистриран) |
Публикувано | 15.06.06 19:36 |
|
хм.. пробвай така:
TForm1 = class(TForm)
DBGrid1: TDBGrid;
Table1: TTable;
DataSource1: TDataSource;
procedure FormCreate(Sender: TObject);
procedure FieldChange(Sender: TField);
private
{ Private declarations }
public
{ Public declarations }
end;
...
var
Form1: TForm1;
AlreadyChangedFlag:boolean;
....
procedure TForm1.FormCreate(Sender: TObject);
var k:integer;
begin
AlreadyChangedFlag:=false;
for k:=0 to table1.FieldCount-1
do table1.Fields[k].OnChange:=FieldChange;
end;
procedure TForm1.FieldChange(Sender: TField);
begin
if AlreadyChangedFlag then Exit;
AlreadyChangedFlag:=true;
try
if (Sender as TField).DataSet.State in [dsEdit,dsInsert] then
begin
(Sender as TField).DataSet.Post;
(Sender as TField).DataSet.Edit;
end;
finally
AlreadyChangedFlag:=false;
end;
end;
като ще е гарга да е рошава :)
| |
Тема
|
Re: Post,commit при редакт.в клетка на таблица ?
[re: gydi]
|
|
Автор |
avatarx (Mr.) |
Публикувано | 27.06.06 23:30 |
|
Незнам за какво ти е точно така да изглежда, но Емил е прав - така не се прави! От друга страна пък, откъде ги изкопавате тия вехти формати :)
Avatarx
| |
|
|
|
|