Autor Beitrag
Gagamba
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46



BeitragVerfasst: Do 08.09.05 15:46 
Ich möchte einige Zellen des Stringgrids für die "normale" Eingabe (also via Tastatur) sperren, aber den Doppelclick trotzdem zulassen, weil darauf ein toggle liegen soll (Ja/Nein- bzw. TRUE/FALSE-Umschaltung einer Variablen). Diese Variable wird dann als bitmap (grüner Haken bzw. rotes Kreuz) dargestellt (im OnDrawCell-Ereignis). Leider habe ich es noch nicht geschafft, NUR den doppelclick zu zu lassen, und gleichzeitig die normale eingabe zu unterdrücken. Geht das? Wenn ja - wie?

Danke.. :(

Moderiert von user profile iconTino: Überflüssige Zeilenumbrüche entfernt.
Moderiert von user profile iconTino: Topic aus Sonstiges verschoben am Do 08.09.2005 um 17:03
AG
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Do 08.09.05 16:30 
du kannst z.B. das key-down Ereignis der Tabelle abfangen, testen, ob du in einer gesperrten Zelle bist, und dann auf die Eingabe reagieren oder auch nicht...
DBR
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46



BeitragVerfasst: Do 08.09.05 20:36 
Vielleicht so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
const
  zelleX = 3;
  zelleY = 2;

procedure TForm1.StringGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  with TStringGrid(Sender) do begin
    if (Col = zelleX) and (Row = zelleY) then
      options := options - [goEditing]
    else options := options + [goEditing];
  end;
end;


Gruß DBR
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Do 08.09.05 22:06 
Hallo,

bei dieser Möglichkeit können die Spalten auch nicht markiert werden,
der Doppelklick auf die so gesperrten Zellen (in diesem Beispiel Spalten) ist aber noch möglich.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
//...
const
  ColSelNo = [0,4,8..20];
//...
procedure TForm1.StringGrid1SelectCell(Sender: TObject; Col, Row: Integer;
  var CanSelect: Boolean);
begin
  if Col in ColSelNo then
    CanSelect := False
    else
      CanSelect := True;
end;

Wenn Du dazu noch im OnKeyDown die Bewegungs-Tasten
geschickt abfängst hast Du eine benutzerfreundliche Eingabemaske.

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )