Въпросче за DBGrid

3 отговора 110 прегледа
#1

Въпросче за DBGrid

Как мога да забраня в един DBGrid да се вмъкват нови записи, ако случайно натисна стрелката надолу след последния запис ? Едновременно с това искам да мога да редактирам съществуващите (т.е да не е Read-only). Например ако го свържа с DBNavigator и забраня бутончето Insert става, обаче само ако използвам TTable, а при TQuery нещо не ще.

Отговор
в отговор на froggy #2

BeforeInsert...

Ако използваш обикновения TDBGrid на делфи може би ще ти е най-лесно да си добавиш BeforeInsert евент и в него да викаш Abort. Но това ще ти попречи и програмно да добавяш записи. Най добре да го направиш с някакво флагче:

procedure TForm1.tbDummyBeforeInsert(Sender: TDataSet);
begin
if not FInsertingRecords then
Abort;
end

...
...
FInsertingRecords := True;
try
tbDummy.Append;
...
tbDummy.Post;
finally
FInsertingRecords := False;
end;
...
...


Другият вариант е да използваш някой друг грид, който има такива възможности. Например DBGridEh има пропърти AllowedOperations, от където можеш да му забраниш да се insert/append-ва.

Животът не се мери с броя вдишвания, а с моментите, които спират дъха ни!
Отговор
в отговор на andrew_nikoloff #3

Re: BeforeInsert...

Абсолютно стара и изпитана практика

с малко влакче композирам патките в реката
Отговор
в отговор на andrew_nikoloff #4

Re: BeforeInsert...

Много мерси, точно това ми трябваше.

Отговор