Entwickler-Ecke
Datenbanken - Löschen in DBGrid unterbinden
Arakis - So 15.09.02 12:25
Titel: Löschen in DBGrid unterbinden
Hi Leute,
wie kann man in einem DBGrid oder ähnlichem unterbinden, dass zwar editiert(UPDATE), aber nicht gelöscht werden darf(DELETE)? Denn mit STRG-DEL spring mir immer eine Löschabfrage auf den Bildschirm.
Bis dann
Klabautermann - So 15.09.02 13:03
Hallo,
du kannst dich im BeforeDelete Ereignis des Tabellen-Objektes hängen und den löschvorgang mit einem
abbrechen.
Gruß
Klabautermann
Arakis - So 15.09.02 13:10
Hat nicht funktioniert :(
Quelltext
1: 2: 3: 4:
| procedure TForm_Main.AdressQueryBeforeDelete(DataSet: TDataSet); begin DataSet.Cancel; end; |
Bis dann
bis11 - So 15.09.02 13:32
Hi Akaris,
probiere es mal mit folgendem Code :
Quelltext
1: 2: 3: 4: 5:
| procedure TKundenformularfenster.DBKundenGesamtKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (ssctrl in Shift) and (key = VK_DELETE) then key := 0; end; |
LCS - So 15.09.02 14:22
Oder so:
Quelltext
1: 2: 3: 4:
| procedure TForm_Main.AdressQueryBeforeDelete(DataSet: TDataSet); begin Abort; end; |
Gruss Lothar
NetSpider - Di 30.01.07 09:33
Hi Leute,
ist zwar schon lange her - allerdings hatte ich auch eben das Problem mit den DBGrid. Ich habe die Version von bis11 verwendet, da ich glaube, dass LCSs Version zwar funktioniert, allerdings wird jeglicher Delete-Versuch abgebrochen - also auch die evtl. gewollten Loesch-Aktionen.
Find ich nicht so gut, dass die DBGrids keine Option anbieten, bei der man diese Tastenkombinationen disablen kann.
MfG NetSpider
jasocul - Di 30.01.07 10:17
Ich hatte mal ein ähnliches Problem und habe einfach eine Exception ausgelöst.
Zum Beispiel:
Delphi-Quelltext
1:
| raise EDatabaseError.Create ('Unzulässiger Löschvorgang!'); |
Probiere das doch mal im "BeforeDelete". Ich meine, dass Cancel und Abort sich nur auf die Erfassung und das Ändern von Datensätzen bezieht.
raiguen - Mi 31.01.07 00:28
Das sollte funktionieren:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TfrmBenutzer.DBGrid2KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin inherited; if (ssctrl in Shift) and (key = VK_DELETE) then begin (Sender as TDBGrid).DataSource.DataSet.Cancel; key := 0; end; end; |
Ohne die hervorgehobene Zeile bzw Anweisung wird trotzdem der Datensatz gelöscht!!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!