![]() |
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; |
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; |
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; |
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 |
Re: seltsames Phänomen im stringgrid ?!?
:hi:
Ich kann den Fehler nur bestätigen (Stackoverflow) :( mfg Tobias |
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; |
Re: seltsames Phänomen im stringgrid ?!?
ne, aber er ueberspringt die gesperrten zellen nich mehr
|
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; |
Re: seltsames Phänomen im stringgrid ?!?
Zitat:
|
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 13:27 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-2025 by Thomas Breitkreuz