Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
Delphi 7 Enterprise
|
Re: im Stringgrid Zellen total sperren
15. Nov 2004, 22:08
Zitat von Hansa:
Hi,
in einem StringGrid muß ich verhindern, daß mit der Maus auf Zellen, die nicht mehr verändert werden sollen, zugegriffen wird. Die Tastatur habe ich hierfür voll im Griff, aber mit der Maus könnte noch Unheil angerichtet werden, indem Zellen angeklickt werden, die nicht mehr editiert werden sollen.
Ich kann es am besten anhand des angehängten Screenshots erklären :
das rot eingekreiste "a" ist der momentane Standort des Cursors. Sofern das Grid so aussieht, sollen die grün umrandeten Zellen oben nicht mehr editiert werden können. Am besten wäre es, gar nicht mehr zuzulassen, daß eine der grünen Zellen überhaupt selektiert werden kann.
Aber irgendwie gelingt mir das nicht vollständig. Das Hauptproblem liegt wohl darin, daß ich nicht weiß, wo Col und Row zugeswiesen werden, um dann gezielt zu reagieren. Wie mache ich das am besten ?
Hi Hansa,
so gehts:
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
function IsRowComplete(ARow : integer) : boolean;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function TForm1.IsRowComplete(ARow: integer): boolean;
var
iCol : integer;
begin
result := true;
for iCol := StringGrid1.FixedCols to StringGrid1.ColCount-1 do
begin
if trim(StringGrid1.Cells[iCol, ARow]) = ' ' then
begin
result := false;
break;
end;
end;
end;
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
// Wenn reihe komplett ausgefüllt ist, nicht mehr
// anwählen lassen
Canselect := not IsRowComplete(ARow)
end;
end.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
|
|
Zitat
|