Autor Beitrag
bwolf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 50



BeitragVerfasst: Di 22.05.07 11:50 
Hi all,

kann mir einer erklären, wie ich eine einzelne Zeile (oder eine bestimmte Zelle) in einem DBGrid auf read-only setzen kann ?
Danke!
Andreas Schilling
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 128
Erhaltene Danke: 1

WIN XP, WIN 7
Delphi 5 Ent, Delphi 2007 Pro, XE4
BeitragVerfasst: Mi 23.05.07 11:22 
Mit den beiden Proceduren mache ich das. Das setzt immer das Readonly für die aktuell aktive Feld.
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
// für das TDataSet welches die Daten für das Grid liefert (bei mir TIBDataset) wenn der Datensatz wechselt
// aber die Spalte gleich bleibt
procedure TPauschleistStapel_F.DSET_StapelAfterScroll(DataSet: TDataSet);
begin
  if DBG_Stapel.SelectedField <> nil // nil ist immer readonly
  then begin
    // wenn nur bestimmte Spalten betroffen sind
    if ((DBG_Stapel.SelectedField.Name = 'DSET_StapelSTART_KW')
    or (DBG_Stapel.SelectedField.Name = 'DSET_StapelSTART_JAHR'))
    then begin
      // wenn von einem Wert des aktuellen Datenzeile abhängig
      if (DSET_StapelANZAHL.AsInteger > 0)
      then DBG_Stapel.SelectedField.ReadOnly := true
      else DBG_Stapel.SelectedField.ReadOnly := false;
    end;
  end;  
end;

// für das Grid wenn der Datensatz gleich bleibt aber die Spalte gewechselt wird
procedure TPauschleistStapel_F.DBG_StapelColEnter(Sender: TObject);
begin
  if DBG_Stapel.SelectedField <> nil
  then begin
    if ((DBG_Stapel.SelectedField.Name = 'DSET_StapelSTART_KW')
    or (DBG_Stapel.SelectedField.Name = 'DSET_StapelSTART_JAHR'))
    then begin
      if (DSET_StapelANZAHL.AsInteger > 0)
      then DBG_Stapel.SelectedField.ReadOnly := true
      else DBG_Stapel.SelectedField.ReadOnly := false;
    end;
  end;
end;