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 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

Sharky 27. Jun 2004 20:36

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

Zitat von Mirilin
:...und wie wild damit umherfahren...

Aaaahhhh.... jetzt kommt der Fehler.

Sharky 27. Jun 2004 20:40

Re: seltsames Phänomen im stringgrid ?!?
 
*blubb*

Delphi-Quellcode:
procedure TForm1.StringGrid5SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
var
  myACol : Integer;
begin
  StringGrid5.OnSelectCell := nil; // Nicht das unsere OnSelectCell mehrfach läuft ;-)
  myAcol := Acol;
  CanSelect:=Not ((ACol=9) or (Acol=18) or (Acol=27));
  if not (CanSelect) then
  begin
    if (stringgrid5.col>acol) then
    begin
     stringgrid5.col:=Stringgrid5.col-2;
     DEC (myACol);
    end
    else
    begin
      stringgrid5.col:=Stringgrid5.col+2;
      Inc (myACol);
    end;
  end;
  label1.Caption:=inttostr(myacol);
  Application.ProcessMessages;
  StringGrid5.OnSelectCell := StringGrid5SelectCell; // Fertig. Jetzt darf sie wieder aktiv werden
end;
Jetzt sollte es aber gehen :gruebel: :cyclops:

richard_boderich 27. Jun 2004 22:14

Re: seltsames Phänomen im stringgrid ?!?
 
also sharky letzter code von dir funktioniert doch nich
bei mehrfachem mausklick auf die gesperrte zelle stimmt
zwar der colwert, jedoch ist die verbotene zelle dann mit
den gridcursor selectiert
hab nochmal im forum gesuch, und ne loesung die funktioniert gefunden , code
is glaube ich von keldorn
hier der link dazu

Link

richard_boderich 27. Jun 2004 22:27

Re: seltsames Phänomen im stringgrid ?!?
 
ok sorry, mein fehler, hier der link nochmal


Link


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