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 TStringgrid Zellen sperren (https://www.delphipraxis.net/89635-tstringgrid-zellen-sperren.html)

Z32 3. Apr 2007 13:50


TStringgrid Zellen sperren
 
Hallo,

ich habe eine Frage zu der Komponete TStringgrid:

Ist es möglich einzelne Zellen zu sperren, also das die nicht mehr selectiert werden können?

So in der Art stringggrid1.cells[x,y].enabled:=false; //geht natürlich nicht :wink:

marabu 3. Apr 2007 13:53

Re: TStringgrid Zellen sperren
 
Hallo,

du kannst im Ereignis OnSelectCell() verhindern, dass eine Zelle besucht wird.

Grüße vom marabu

Z32 3. Apr 2007 13:57

Re: TStringgrid Zellen sperren
 
Zitat:

Zitat von marabu
Hallo,

du kannst im Ereignis OnSelectCell() verhindern, dass eine Zelle besucht wird.

Grüße vom marabu

aha...und wie genau?

hat das was mit der variablen CanSelect zu tun? aber wie kann ich die einsetzen?

marabu 3. Apr 2007 14:07

Re: TStringgrid Zellen sperren
 
Vielleicht so?

Delphi-Quellcode:
procedure TDemoForm.StringGridSelectCell(Sender: TObject; Col, Row: Longint; var CanSelect: Boolean);
begin
  CanSelect := not ((Col = x) and (Row = y));
end;

Z32 3. Apr 2007 14:13

Re: TStringgrid Zellen sperren
 
Also so richtig klappen tut das noch nicht. Mein Code:

Delphi-Quellcode:
CanSelect := not (stringgrid1.Col = 1);
Ich möchte, dass man in der Spalte 1 keine Zelle anwählen kann. Wie lässt sich das realisieren?

Klaus01 3. Apr 2007 14:32

Re: TStringgrid Zellen sperren
 
Hat Achim doch geschrieben:
Delphi-Quellcode:
procedure TDemoForm.StringGridSelectCell(Sender: TObject; Col, Row: Longint; var CanSelect: Boolean);
begin
  CanSelect := not (Col = 1);
end;
Grüße
Klaus

Z32 3. Apr 2007 14:44

Re: TStringgrid Zellen sperren
 
Zitat:

Zitat von Klaus01
Hat Achim doch geschrieben:
Delphi-Quellcode:
procedure TDemoForm.StringGridSelectCell(Sender: TObject; Col, Row: Longint; var CanSelect: Boolean);
begin
  CanSelect := not (Col = 1);
end;
Grüße
Klaus

Hab ich gesehen, aber da bekomme ich eine Fehlermeldung:

[Pascal Fehler] Unit1.pas(96): E2003 Undefinierter Bezeichner: 'Col'

Zacherl 3. Apr 2007 14:46

Re: TStringgrid Zellen sperren
 
Kann aber nicht sein, da Col ganz klar einer der Methodenparameter ist ..

Z32 3. Apr 2007 14:50

Re: TStringgrid Zellen sperren
 
Zitat:

Zitat von Florian Bernd
Kann aber nicht sein, da Col ganz klar einer der Methodenparameter ist ..

Ja aber komischerweise nicht bei mir :gruebel:

Delphi-Quellcode:
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
  var CanSelect: Boolean);
begin
//
CanSelect := not (Col = 1);
//
end;
Was kann ich denn jetzt machen..einfach dazuschreiben oder wie... :wiejetzt:

Klaus01 3. Apr 2007 15:02

Re: TStringgrid Zellen sperren
 
Schreib das anstatt Col ACol dann sollte es gehen.

Grüße
Klaus

Z32 3. Apr 2007 15:11

Re: TStringgrid Zellen sperren
 
OK jetzt kann ich das Programm compelieren, aber ich kann trotztem noch die Zelen in Spalte 1 anwählen.

Irgentwas stimmt da noch nicht so ganz, oder ich mache was falsch. Hier nochmal der Code:

Delphi-Quellcode:
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
  var CanSelect: Boolean);
begin
//
CanSelect := not (ACol = 1);
//
end;
Ich möchte ereichen, das man die Zellen in Spalte 1 nicht anwählen kann, aber ist es dann nicht eigentlich ein bisschen spät den Code im OnCellSelect zu schreiben ,denn dann ist ja schon eine Zelle ausgewählt , oder?

Christian Seehase 3. Apr 2007 15:20

Re: TStringgrid Zellen sperren
 
Moin Marvin,

Dir ist aber klar, dass die Nummerierung der Spalten bei 0 anfängt? ;-)
Ich habe nämlich den Verdacht, dass das, was Du als 1. Spalte ansiehst intern den Index 0 hat.

Z32 3. Apr 2007 15:32

Re: TStringgrid Zellen sperren
 
Zitat:

Zitat von Christian Seehase
Moin Marvin,

Dir ist aber klar, dass die Nummerierung der Spalten bei 0 anfängt? ;-)
Ich habe nämlich den Verdacht, dass das, was Du als 1. Spalte ansiehst intern den Index 0 hat.

nene, ich meine schon 1 :wink:

Christian Seehase 3. Apr 2007 16:11

Re: TStringgrid Zellen sperren
 
Moin Marvin,

kann es sein, dass Du FixedCols auf 1 stehen hast?
Dann kann man nämlich beim Programmstart die standardmässig ausgewählte Zelle bearbeiten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz