AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi StringGrid: Nach Eingabe eines Zeichens weiterspringen
Thema durchsuchen
Ansicht
Themen-Optionen

StringGrid: Nach Eingabe eines Zeichens weiterspringen

Ein Thema von Helmi · begonnen am 18. Jan 2007 · letzter Beitrag vom 19. Jan 2007
Antwort Antwort
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#1

StringGrid: Nach Eingabe eines Zeichens weiterspringen

  Alt 18. Jan 2007, 22:39
Hallo,

ich brauch mal wieder eure Hilfe.

Ich habe eine StringGrid, bei der in jede Zelle nur ein Zeichen eingegeben werden kann.
Delphi-Quellcode:
procedure TForm2.StringGridSetEditText(Sender: TObject; ACol,
  ARow: Integer; const Value: String);
begin
  If length(Value) > 1 then
    StringGrid.Cells[ACol, ARow] := Value[1];
end;
Nun würd ich aber gerne eines machen, wenn man auf eine Zelle klickt, so dass man etwas eingeben kann, man etwas reinschreibt, das länger als ein Zeichen ist, dass dann die anderen Zeichen auf die folgenden Zellen geschrieben wird.

z. B. ich schreib in die Zelle [0, 0] das Wort "Hallo" rein, dann soll in der Zelle
[0, 0] ein H
[1, 0] ein a
[2, 0] ein l
[3, 0] ein l
[4, 0] ein o

stehen.

Wie kann ich das realisieren?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: StringGrid: Nach Eingabe eines Zeichens weiterspringen

  Alt 19. Jan 2007, 08:48
Hallo Helmi,

ich würde in deinem Fall gar nicht mit dem Inplace-Editor (ohne Option goEditing) arbeiten, sondern die Zeicheneingabe selbst verarbeiten:

Delphi-Quellcode:
procedure TDemoForm.StringGridKeyPress(Sender: TObject; var Key: Char);
begin
  with Sender as TStringGrid do
  begin
    Cells[Col, Row] := Key;
    Col := FixedCols + Succ(Col - FixedCols) mod (ColCount - FixedCols);
    if Col = FixedCols then
      Row := FixedRows + Succ(Row - FixedRows) mod (RowCount - FixedRows);
  end;
  Key := #0;
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#3

Re: StringGrid: Nach Eingabe eines Zeichens weiterspringen

  Alt 19. Jan 2007, 08:56
Hallo,

ich hab mich gestern noch an dieses Problem gewagt und hab folgendes gemacht:
Delphi-Quellcode:
procedure TForm2.StringGridKeyPress(Sender: TObject; var Key: Char);
var
  Zeile : Integer;
  Spalte: Integer;

begin
  with StringGrid do
    begin
      //
      Zeile := Selection.Top;
      Spalte := Selection.Left;

      If not (Key in ['a'..'z', 'A'..'Z', '0'..'9', #8, #32]) then
        exit;

      If Key = #8 then
        begin
          If (Pred(Spalte) > 0) then
            Spalte := Spalte - 1
          else
            If (Spalte = 1) and (Zeile > 1) then
              begin
                Zeile := Zeile - 1;
                Spalte := 40;
              end;

          StringGrid.Cells[Spalte, Zeile] := '';
          StringGrid.Col := Spalte;

          StringGrid.Row := Zeile;

          exit;
        end;

      If (Zeile > 0) and (Spalte > 0) then
        begin
          StringGrid.Cells[Spalte, Zeile] := Key;

          If Spalte < 40 then
            StringGrid.Col := Spalte + 1
          else
            If Zeile <= 3 then
              begin
                StringGrid.Col := 1;
                StringGrid.Row := Zeile + 1;
              end;
        end;
    end;
end;
Die Option "goEditing" hab ich wieder auf false gesetzt - brauch ich ja jetzt nicht mehr!
Jetzt hab ich nur noch das Problem, dass ich auf die "Entf"-Taste u. a. reagieren muss, aber dazu siehe meinen anderen Thrad
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  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 16:06 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