AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi eine zelle im stringgrid mit tab überspringen?
Thema durchsuchen
Ansicht
Themen-Optionen

eine zelle im stringgrid mit tab überspringen?

Ein Thema von herrentor · begonnen am 30. Mai 2004 · letzter Beitrag vom 31. Mai 2004
Antwort Antwort
herrentor

Registriert seit: 29. Mai 2004
Ort: Emden
158 Beiträge
 
#1

eine zelle im stringgrid mit tab überspringen?

  Alt 30. Mai 2004, 20:59
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:

  begin
   CanSelect:=Not ((ACol=4) and (ARow=i));
  end;
danke im voraus.
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: eine zelle im stringgrid mit tab überspringen?

  Alt 30. Mai 2004, 21:20
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

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
herrentor

Registriert seit: 29. Mai 2004
Ort: Emden
158 Beiträge
 
#3

Re: eine zelle im stringgrid mit tab überspringen?

  Alt 30. Mai 2004, 21:41
ehrlich gesagt, bin ich nicht so der held in delphi und kann deshalb nur teilweise was mit deiner hilfe anfangen.
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

Re: eine zelle im stringgrid mit tab überspringen?

  Alt 30. Mai 2004, 22:01
naja, wenn ich dir den code jetzt reinstelle, wird dir das aber auch nicht wirklich was bringen

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;

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
herrentor

Registriert seit: 29. Mai 2004
Ort: Emden
158 Beiträge
 
#5

Re: eine zelle im stringgrid mit tab überspringen?

  Alt 30. Mai 2004, 22:04
besten dank, ich denke das wird mir aber weiterhelfen.
  Mit Zitat antworten Zitat
herrentor

Registriert seit: 29. Mai 2004
Ort: Emden
158 Beiträge
 
#6

Re: eine zelle im stringgrid mit tab überspringen?

  Alt 31. Mai 2004, 01:21
super, läuft.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:00 Uhr.
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