Delphi-PRAXiS
Seite 1 von 2  1 2      

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 seltsames Phänomen im stringgrid ?!? (https://www.delphipraxis.net/24771-seltsames-phaenomen-im-stringgrid.html)

richard_boderich 25. Jun 2004 21:50


seltsames Phänomen im stringgrid ?!?
 
ok leute,habe ein stringgrid in dem ich mehrere Spalten gesperrt hab. 9 , 18 und 27
die folgende routine hab ich erstellt um die gesperrten spalten zu ueberspringen.
funktioniert auch super, der cursor macht genau das was er soll kann von 1 bis 32
mit pfeil tasten "rechts /links" durchgehen und die gesperrten werden uebersprungen.
nun zu meinem eigentlichen problem

also ich berechne aus col und row-wert einen indexwert fuer ein normales array

z.B.

colcount=10
rowcount=10

col=5
row=5

indexwert=50

dazu muss ich den col und rowwert abfragen, habe zum test die labelanweiseung drin
das komische ist, das die angezeigten col werte manchmal nich mit den positionen
des gridcursors uebereinstimmen z.b. wenn ich bei celle 1 1x pfeil rechts druecke geht zwar der cursor eine zelle
nach rechts, aber der col wert bleibt 1, wenn ich dann 1x pfeil nach links druecke, so geht der cursor 1 schritt nach links,
aber der colwert ist dann 2 bzw wird als 2 im label angezeigt, finde das sehr seltsam, weil ich dachte gridcursor und
col und row wert staenden in direkter abhaengikeit zueinander. und normalerweise muesste er bei "pfeil links" kleiner werden
und nich groesser

Delphi-Quellcode:
procedure TForm1.StringGrid5SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
begin
CanSelect:=Not ((ACol=9) or (Acol=18) or (Acol=27) and (ARow=stringgrid5.row));
if (canselect=false) and (stringgrid5.col>acol) then stringgrid5.col:=Stringgrid5.col-4;
if (canselect=false) and (stringgrid5.col<acol) then stringgrid5.col:=Stringgrid5.col+2;
label1.Caption:=inttostr(stringgrid5.col);
end;

Sharky 27. Jun 2004 18:15

Re: seltsames Phänomen im stringgrid ?!?
 
Delphi-Quellcode:
procedure TForm1.StringGrid5SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
begin
  CanSelect:=Not ((ACol=9) or (Acol=18) or (Acol=27) and (ARow=stringgrid5.row));
  if (canselect=false) and (stringgrid5.col>acol) then stringgrid5.col:=Stringgrid5.col-4;
  if (canselect=false) and (stringgrid5.col<acol) then stringgrid5.col:=Stringgrid5.col+2;
  label1.Caption:=inttostr(Acol); // <- hier habe ich mal ACol genommen.
end;

Sharky 27. Jun 2004 18:42

Re: seltsames Phänomen im stringgrid ?!?
 
Neue Version:

Delphi-Quellcode:
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
var
  myACol : Integer;
begin
  myAcol := Acol;
  CanSelect:=Not ((ACol=9) or (Acol=18) or (Acol=27));
  if not (CanSelect) then
  begin
    if (stringgrid1.col>acol) then
    begin
     stringgrid1.col:=Stringgrid1.col-2;
     DEC (myACol);
    end
    else
    begin
      stringgrid1.col:=Stringgrid1.col+2;
      Inc (myACol);
    end;
  end;
  label1.Caption:=inttostr(myacol);
end;

richard_boderich 27. Jun 2004 19:41

Re: seltsames Phänomen im stringgrid ?!?
 
Liste der Anhänge anzeigen (Anzahl: 1)
hab mal mein testproject angehaengt, besteht nur aus grid, label und deiner routine
macht die selbe exeption,

PS: bewege mal nich die maus, wenn du linke taste gedrueckt hälts

Mirilin 27. Jun 2004 20:02

Re: seltsames Phänomen im stringgrid ?!?
 
:hi:


Ich kann den Fehler nur bestätigen (Stackoverflow) :(

mfg Tobias

Matze 27. Jun 2004 20:09

Re: seltsames Phänomen im stringgrid ?!?
 
Versuche mal das, kommt dann noch der Fehler:

Delphi-Quellcode:
procedure TForm1.StringGrid5SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);

var
  myACol : Integer;
begin
  myAcol := Acol;
  CanSelect:=Not ((ACol=9) or (Acol=18) or (Acol=27));
  if not (CanSelect) then
  begin
    if (stringgrid5.col>acol) then
    begin
      if not (stringgrid5.col <= stringgrid5.ColCount - 2) then //hier
      stringgrid5.col:=Stringgrid5.col-2;
      DEC (myACol);
    end
    else
    begin
      if not (stringgrid5.col <= stringgrid5.ColCount + 2) then //hier
      stringgrid5.col:=Stringgrid5.col+2;
      Inc (myACol);
    end;
  end;
  label1.Caption:=inttostr(myacol);
end;

richard_boderich 27. Jun 2004 20:27

Re: seltsames Phänomen im stringgrid ?!?
 
ne, aber er ueberspringt die gesperrten zellen nich mehr

Matze 27. Jun 2004 20:28

Re: seltsames Phänomen im stringgrid ?!?
 
Mist, hab das mit den gesperrten SPalten übersehen, probiere mal das hier:

Delphi-Quellcode:
procedure TForm1.StringGrid5SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);

var
  myACol : Integer;
begin
  myAcol := Acol;
  CanSelect:=Not ((myACol=9) or (myAcol=18) or (myAcol=27));
  if not (CanSelect) then
  begin
    if (stringgrid5.col>acol) then
    begin
      stringgrid5.col:=myAcol-1;
      DEC (myACol);
    end
    else
    begin
      stringgrid5.col := myACol+1;
      Inc (myACol);
    end;
  end;
  label1.Caption:=inttostr(myacol);
end;

Sharky 27. Jun 2004 20:32

Re: seltsames Phänomen im stringgrid ?!?
 
Zitat:

Zitat von Mirilin
...Ich kann den Fehler nur bestätigen (Stackoverflow) ...

Ich verstehe es einfach nicht. Wann kommt da bei euch ein Fehler?

Mirilin 27. Jun 2004 20:34

Re: seltsames Phänomen im stringgrid ?!?
 
:hi: Sharky

Maustaste drücken und halten und wie wild damit umherfahren...

mfg Tobias


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:36 Uhr.
Seite 1 von 2  1 2      

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