AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi DBGrid editieren einzelner Zellen
Thema durchsuchen
Ansicht
Themen-Optionen

DBGrid editieren einzelner Zellen

Ein Thema von Wilsandy · begonnen am 24. Jul 2007 · letzter Beitrag vom 26. Jul 2007
Antwort Antwort
Wilsandy

Registriert seit: 16. Aug 2005
20 Beiträge
 
#1

DBGrid editieren einzelner Zellen

  Alt 24. Jul 2007, 18:41
Datenbank: DBE • Zugriff über: SQL
Hallo, habe leider im Forum diesbezüglich nichts gefunden.

Ich möchte gerne in einem DBGrid einzelne Zellen (nicht Spalten) editieren,
alle anderen sollen schreibgeschützt sein.

Habe mal folgendes versucht, klappt aber nicht so richtig !!
Komischerweise kann ich immer noch ein Zeichen eingeben
bzw. kann ich in der Zelle die Werte immer noch löschen.

procedure TFormular1.Query1BeforeEdit(DataSet: TDataSet);
begin
if Query1.FieldByName('ABDAT').AsString <> '' then
DBGrid1.Columns[3].ReadOnly := true else
DBGrid1.Columns[3].ReadOnly := false;
end;

Würde mich über einen Tipp freuen

Gruß Sandy
  Mit Zitat antworten Zitat
Andreas Schilling

Registriert seit: 6. Sep 2006
106 Beiträge
 
Delphi 10.3 Rio
 
#2

Re: DBGrid editieren einzelner Zellen

  Alt 25. Jul 2007, 07:06
Ich hoffe das hilft.
Delphi-Quellcode:
// für die Query welches die Daten für das Grid liefert wenn der Datensatz wechselt
// aber die Spalte gleich bleibt
procedure TForm1.Query1AfterScroll(DataSet: TDataSet);
begin
  if DBGrid1.SelectedField <> nil // nil ist immer readonly
  then begin
    // wenn nur bestimmte Spalten betroffen sind
    if ((DBGgrid1.Selectedindex = 3 )
    then begin
      // wenn von einem Wert des aktuellen Datenzeile abhängig
      if Query1.FieldByName('ABDAT').AsString <> 'then
      DBGrid1.SelectedField.ReadOnly := true else
      DBGrid1.SelectedField.ReadOnly := false;
    end
    else DBGrid1.SelectedField.ReadOnly := false;
  end;
end;

 
// für das Grid wenn der Datensatz gleich bleibt aber die Spalte gewechselt wird
procedure TForm1.DBGrid1ColEnter(Sender: TObject);
begin
  if DBGrid1.SelectedField <> nil
  then begin
    if ((DBGrid1.Selectedindex = 3)
    then begin
      if Query1.FieldByName('ABDAT').AsString <> 'then
      DBGrid1.SelectedField.ReadOnly := true else
      DBGrid1.SelectedField.ReadOnly := false;
    end
    else DBGrid1.SelectedField.ReadOnly := false;
  end;
end;
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#3

Re: DBGrid editieren einzelner Zellen

  Alt 25. Jul 2007, 13:26
Zitat von Wilsandy:
Hallo, habe leider im Forum diesbezüglich nichts gefunden.

Ich möchte gerne in einem DBGrid einzelne Zellen (nicht Spalten) editieren,
alle anderen sollen schreibgeschützt sein.

Habe mal folgendes versucht, klappt aber nicht so richtig !!
Komischerweise kann ich immer noch ein Zeichen eingeben
bzw. kann ich in der Zelle die Werte immer noch löschen.

procedure TFormular1.Query1BeforeEdit(DataSet: TDataSet);
begin
if Query1.FieldByName('ABDAT').AsString <> '' then
DBGrid1.Columns[3].ReadOnly := true else
DBGrid1.Columns[3].ReadOnly := false;
end;

Würde mich über einen Tipp freuen

Gruß Sandy
Hallo,

ich habe mich über die in der VCL bei Grids eingebauten Editoren auch schon gewundert bis geärgert und habe dann teilweise folgende Brutallösung verwendet:

auf Onclick einer Zelle erzeuge ich ein randloses Edit gleicher Position und Grösse und regle von da an alles selbst, bis die Eingabe mit Enter oder einem Click ausserhalb abgschlossen wird. Ist einiges an Arbeit, aber unvergleichlich flexibel.

Gruss Reinhard
  Mit Zitat antworten Zitat
Wilsandy

Registriert seit: 16. Aug 2005
20 Beiträge
 
#4

Re: DBGrid editieren einzelner Zellen

  Alt 26. Jul 2007, 13:55
Hallo Rheinhard,

super, hat heholfen, jetzt gehts.

Vielen Dank Sandy
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz