![]() |
eine zelle im stringgrid mit tab überspringen?
ich hab eine zelle im stringgrid nicht zur auswahl freigegeben, hab jetzt aber das problem, dass meine tabtaste vor dieser stelle stoppt und nicht mehr weiter geht. wie kann ich einstellen, dass die zelle bei drücken der tabtaste einfach übersprungen wird, oder was gibt es für alternativen?
Code:
danke im voraus.begin CanSelect:=Not ((ACol=4) and (ARow=i)); end; |
Re: eine zelle im stringgrid mit tab überspringen?
Hallo
-> Variable z.B. lastkey mit in den private-abschnitt der formaufnehmen -> bei onkeydown gedrückte taste in lastkey merken, außerdem in einere weiteren Variable merken, ob die eine Zelle per mous oder tastautr ausgewählt wurde. -> bei onselect und wenn Zelle nicht selektiert wurde, lastkey abfagen und die nächst mögliche Zelle auswählen probiers erstmal alleine, wenn du nicht klarkommst, meld dich nochmal, irgendwo hab ich auch ein bissel code. Mfg Frank |
Re: eine zelle im stringgrid mit tab überspringen?
ehrlich gesagt, bin ich nicht so der held in delphi und kann deshalb nur teilweise was mit deiner hilfe anfangen.
|
Re: eine zelle im stringgrid mit tab überspringen?
naja, wenn ich dir den code jetzt reinstelle, wird dir das aber auch nicht wirklich was bringen :roll:
der code ist aus einem meiner projekte, ich mußte was rausnehmen, er sollte aber funktionieren. Es können auch mehrere Splaten/Zeilen nicht selektierbar sein, das ist egal, es wird immer die nächste zelle selektiert. Die nicht selektierbare spalte darf aber nicht die letzte spalte des grids sein ... sonst gibts ne av. und shift+tab geht auch nicht.
Delphi-Quellcode:
type
TForm1 = class(TForm) .... private { Private-Deklarationen } Stgrid_key:boolean; //Zelle wurde per tastatur ausgewählt stgrid_lastkey:char; //letzte gedrückte Taste ... procedure TForm1.StringGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin //Selektion per tastatur, letzte taste merken Stgrid_key:=true; stgrid_lastkey:=char(key); end; procedure TForm1.StringGrid1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin //Selektion per mouse Stgrid_key:=false; stgrid_lastkey:=' '; end; procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); begin with (sender as Tstringgrid) do begin //spalte 4 immer überspringen CanSelect:=Not (ACol=4); //wenn Zelle durch key aktiviert wird-> nächste mögliche Zelle aktivieren, dann wird wieder selectCell aufgerufen und so weiter if (Stgrid_key=true) and (canselect=false) then begin if (stgrid_lastkey=chr(vk_down)) and (arow+1<rowcount) then row:=arow+1; if (stgrid_lastkey=chr(vk_up)) and (arow>1) then row:=arow-1; if (stgrid_lastkey=chr(vk_Right)) or (stgrid_lastkey=chr(vk_TAB)) then begin if acol>=colcount then begin if arow<rowcount then begin col:=2; row:=row+1; end; end else col:=acol+1; end; if stgrid_lastkey=chr(vk_left) then if acol=2 then begin col:=colcount; if row>1 then row:=row-1; end else col:=acol-1; stgrid_lastkey:=' '; end; end; end; |
Re: eine zelle im stringgrid mit tab überspringen?
besten dank, ich denke das wird mir aber weiterhelfen.
|
Re: eine zelle im stringgrid mit tab überspringen?
super, läuft.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:43 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