Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Editmodus im StringGrid sperren (https://www.delphipraxis.net/11608-editmodus-im-stringgrid-sperren.html)

himitsu 10. Nov 2003 14:47


Editmodus im StringGrid sperren
 
Hi ihr,

hab auch mal wieder 'ne Frage.

Ich möchte den Editormodus für einzelne Zellen eines StringGrids verhindern, also so, dass der Zelleninhalt nicht bearbeitet werden kann.
Hab schon über OnKeyUp, OnKeyPress und OnKeyDown versucht Enter und F2 zu blockieren.
OnSelectCell hilft mir auch nichts, da die Zellen immer noch auswählbar sein soll.

Bei einigen der blockierten Zellen soll statt dessen ein neues Fenster zum bearbeiten geöffnet werden. Dieses kann ich aber auch über OnKeyUp erstellen.

Freue mich über eine Antwort, wenn ihr mal ein bissel Zeit habt. (LL) :mrgreen:

Daniel B 10. Nov 2003 15:36

Re: Editmodus im StringGrid sperren
 
Du könntest ja die Messages abfangen und nicht weiterleiten.

APP 10. Nov 2003 15:40

Re: Editmodus im StringGrid sperren
 
Hallo himitsu

ich weiß leider nicht was Du unter
Zitat:

Zitat von himitsu
...OnSelectCell hilft mir auch nichts, da die Zellen immer noch auswählbar sein soll...

verstehst, aber damit
Delphi-Quellcode:
PROCEDURE TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
   ARow: Integer; VAR CanSelect: Boolean);
BEGIN
   IF ACol IN [1, 2] THEN
      StringGrid1.Options := StringGrid1.Options + [goEditing]
   ELSE
      StringGrid1.Options := StringGrid1.Options - [goEditing];
END;
ist die Zelle mit der Maus anwählbar, aber der Text nicht selektierbar.

himitsu 10. Nov 2003 17:02

Re: Editmodus im StringGrid sperren
 
Danke APP,

das hilft.

Zitat:

Zitat von APP
ich weiß leider nicht was Du unter ... verstehst

In OnSelectCell wird doch mit CanSelect := False verhindert das die Zelle ausgewählt werden kann.


Da sich der Editmodus "ständig" ändert, bin ich nicht auf die Idee gekommen den auch noch mal einzeln für jede Zelle zu ändern.

Es gibt jetzt bei mir 3 verschiedene Zustände eines StringGrids:
  • Betrachtungsmodus [+goRangeSelect, +goRowSelect, -goEditing]
  • Editmodus 1 (Zelle ansehen):
    - Zelleninhalt änderbar [-goRangeSelect, -goRowSelect, +goEditing]
    - Zelleninhalt fest [-goRangeSelect, -goRowSelect, -goEditing]
  • Editmodus 2 (Zelleninhalt ändern) [-goRangeSelect, -goRowSelect, +goEditing]


    andere Zelle wird ausgewählt und kein [goRowSelect]:
    - Zelleninhalt änderbar [+goEditing]
    - Zelleninhalt fest [-goEditing]

:oops: So sah es vorher aus:
  • Betrachtungsmodus [+goRangeSelect, +goRowSelect, -goEditing]
  • Editmodus 1 (Zelle ansehen) [-goRangeSelect, -goRowSelect, +goEditing]
  • Editmodus 2 (Zelleninhalt ändern) > hier hing es


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:50 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