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 Stringgrid mit Enter ? (https://www.delphipraxis.net/8269-stringgrid-mit-enter.html)

Hansa 1. Sep 2003 12:37


Stringgrid mit Enter ?
 
Hi,

ich stecke mal wieder fest. :mrgreen: Dieses mal habe ich ein StringGrid, wo ich von Zelle zu Zelle mit Enter weiter möchte. Das hat auch schon funktioniert, tut es im Moment aber nicht mehr. Ich habe EnterTab verwendet:

http://www.delphipraxis.net/topic147...light=entertab

Vorsicht, langer Thread ! Auf der Form geht das schon so, aber nicht im StringGrid.

Tpercon 1. Sep 2003 13:13

Re: Stringgrid mit Enter ?
 
Wenn du doch nur von Zelle zu Zelle senkrecht möchtest, dann schreib doch einfach im OnkeyDown des StringGrid's:
Delphi-Quellcode:
if key = vk_return then
 key := VK_DOWN;

Hansa 1. Sep 2003 13:31

Re: Stringgrid mit Enter ?
 
Zuerst muß ich mal von links nach rechts. Hier ist noch der Code aus dem alten Thread:

Delphi-Quellcode:
procedure EnterTab(Sender: TObject; var Key: Word; Shift: TShiftState;
  ClassAus: array of TClass; ObjectAus: array of TObject;
  bESC_Close: Boolean = True);
var
  Mgs: TMsg;

function ClassObjectAusschliessen: Boolean;
   var Index: Integer;
  begin
    Result := True;
    with Sender as TForm do
    begin
      for Index := Low(ClassAus) to High(ClassAus) do
        if ActiveControl is ClassAus[Index] then // Diese Classe ausschliessen
          Exit;
      for Index := Low(ObjectAus) to High(ObjectAus) do
        if ActiveControl = ObjectAus[Index] then // Dieses Object ausschliessen
          Exit;
    end;
    Result := False;
  end;

begin
  if Sender is TForm then
    with Sender as TForm do
    begin
      case Key of
        VK_RETURN, VK_TAB: if not ClassObjectAusschliessen then
        begin
          Key := 0;
          Perform(WM_NextDlgCtl, ord(Shift = [ssShift]), 0);
          PeekMessage(Mgs, 0, WM_CHAR, WM_CHAR, PM_REMOVE); // Beep-Ton ausschalten
        end;
        VK_ESCAPE: if bESC_Close and (Shift <> [ssShift]) then
        begin
          Key := 0;
          Close;
          PeekMessage(Mgs, 0, WM_CHAR, WM_CHAR, PM_REMOVE); // Beep-Ton ausschalten
        end;
      end // case
    end; // für WITH Sender As TForm DO
end;

Tpercon 1. Sep 2003 13:44

Re: Stringgrid mit Enter ?
 
Und wie wäre es damit:
Delphi-Quellcode:
  private
    Col: integer;
    { Private-Deklarationen }

...

procedure TForm1.StringGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if key = vk_return then begin
  if Col = StringGrid1.ColCount - 1 then begin
    StringGrid1.Col := 1;
    key := VK_DOWN
  end
  else key := VK_RIGHT;
end;
end;

procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,
  ARow: Integer; const Value: String);
begin
  Col := ACol;
end;


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