AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Prism Mit der Enter Taste in die nächste TextBox navigieren!?
Thema durchsuchen
Ansicht
Themen-Optionen

Mit der Enter Taste in die nächste TextBox navigieren!?

Ein Thema von Mr_Rollercoaster · begonnen am 25. Mai 2007 · letzter Beitrag vom 26. Mai 2007
Antwort Antwort
Mr_Rollercoaster

Registriert seit: 25. Mai 2007
Ort: Mechernich
9 Beiträge
 
#1

Mit der Enter Taste in die nächste TextBox navigieren!?

  Alt 25. Mai 2007, 21:40
Guten Abend zusammen!

Ich bin neu hier im Forum, wahrscheinlich auch, weil ich erst seit relativ kurzer Zeit programmiere.

Nun habe ich Delphi 8 für das Microsoft .NET und schon ein bisschen von meinem ersten Programm geschafft.
Es fehlt noch besonders an den Feinheiten.

Da die Personen, die dieses Programm nutzen sollen es gewohnt sind, mit der Enter Taste am Ziffernblock durch die einzelnen Eingabefelder zu springen, wäre es natürlich sehr Vorteilhaft, wenn das neue Programm diese Funktion auch unterstützen würde.

Ich versuche seit zwei Tagen nun dies umzusetzen, komme aber zu keinem funktionierendem Ergebnis.
Wenn ich den Code nutzen möchte, den man als einer der Ersten im Netz findet, scheitert es schon an der ersten Zeile.

Zum Beispiel der Folgende:
Delphi-Quellcode:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
  begin
    Key := #0;
    { check if SHIFT - Key is pressed }
    if GetKeyState(VK_Shift) and $8000 <> 0 then
      PostMessage(Handle, WM_NEXTDLGCTL, 1, 0)
    else
      PostMessage(Handle, WM_NEXTDLGCTL, 0, 0);
  end;
end;
Diesen habe ich mir als Erstes auf meine TextBox5 angepasst, in der ich dieses als erstes ausprobieren wollte.
Dies sah dann so aus:
procedure TWinForm.TextBox5_KeyPress(sender: System.Object; var Key: Char; e: System.Windows.Forms.KeyPressEventArgs); Dann ist natürlich erst einmal die Frage, ob der erste Teil schon falsch ist.
Es scheitert auf jeden Fall spätestens bei "var Key: Char", da dies nicht automatisch eingefügt wird, wenn man im Objekt Inspektor auf KeyPress klickt, ist die Deklaration beim nachträglichen eintragen unterschiedlich als die eigentliche Deklaration von der TextBox5_KeyPress prozedure.

Eine zusätzliche Frage ist dann auch noch das setzten von KeyPreview auf true.
Woe muss ich dann die zeile TextBox5.KeyPreview := True, wenn sie so korrekt ist einfügen?


Ich bin leider wirklich noch ziemlicher Anfänger.
Ich habe zwar jetzt schon einige Tutorials durch, allerdings fehlen trotzdem auch noch Grundlagen.

Würde mich sehr freuen, wenn mir trotzdem jemand helfen würde!



Viele Grüße,
by Michael
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.859 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Mit der Enter Taste in die nächste TextBox navigieren!?

  Alt 26. Mai 2007, 07:51
Hallo Michael,

zuerst einmal: Herzlich Willkommen in der Delphi-PRAXiS.

Es muss im Form1 die Eigenschaft: KeyPreview auf TRUE gesetzt werden.

Mit folgendem Code kann man sich dann, mit der ENTER- oder TAB- Taste zu den Eingabe-Felder weiter bewegen.

Delphi-Quellcode:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if key = #13 then
    Self.Perform(WM_NEXTDLGCTL, 0, 0);
end;
Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#3

Re: Mit der Enter Taste in die nächste TextBox navigieren!?

  Alt 26. Mai 2007, 11:26
Zitat von Mr_Rollercoaster:
Nun habe ich Delphi 8 für das Microsoft .NET und schon ein bisschen von meinem ersten Programm geschafft.
Hallo Michael,

in Deiner Situation möchte ich Dich Off-Topic auf ein paar Punkte hinweisen.
  • Delphi 8 ist für NET die am wenigsten geeignete Version.
  • Wenn überhaupt Delphi für NET, dann solltest Du Dir eine der aktuelleren Versionen holen.
  • Dazu bietet sich Turbo Delphi for .NET an, entweder in der Explorer-Version (umsonst, keine kommerzielle Nutzung) oder in der Professional-Version (ggf. zuerst trial).
  • Delphi für NET ist immer noch auf NET 1.1 beschränkt; und VCL.NET ist nur eine Krücke. Gerade wer anfängt, sollte mit "echten" WinForms arbeiten, eine aktuelle Version holen und sofort mit NET 2.0 anfangen. Deshalb (nur deshalb!) ist nicht Delphi, sondern C# oder VB.NET die Sprache der Wahl.
  • Dafür gibt es Express-Versionen von Visual Studio 2005 (von MS) sowie die OpenSource-Entwicklung SharpDevelop.
Gruß Jürgen

PS an alle Delphianer: Für Win32-Anwendungen ist Delphi (trotz aller Unklarheiten) offensichtlich weiterhin hochaktuell und geeignet. Aber für NET scheinen mir eine solche Warnung und Empfehlung zum Wechsel leider angebracht.
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Mr_Rollercoaster

Registriert seit: 25. Mai 2007
Ort: Mechernich
9 Beiträge
 
#4

Re: Mit der Enter Taste in die nächste TextBox navigieren!?

  Alt 26. Mai 2007, 12:06
Guten Morgen!

Danke erstmal für eure Antworten!


Leider funktioniert die Methode von Chemiker auch nicht.
Ich habe in der Form1 KeyPreview auf true gestellt.
Aber bei den Code kommen trotzdem noch vier Fehlermeldungen.

Liegt es vielleicht daran, dass sich die Eingabefelder in einem TabControl befinden?
Muss man dann etwas spezielleres machen?


@ Jürgen:
Das Problem ist, dass wir Delphi komerziell Nutzen. Mein Chef hat mit Delphi angefangen. Daher haben wir nun auch Borland Delphi 8 für das Microsoft .NET Framework.
Es ist dann nicht so einfach alles auf C# umzustellen. Für mich als Anfänger ist das natürlich noch praktisch, allerdings wird eher darauf bestanden bei Delphi zu bleiben.
Mein Chef hat zwar noch nicht mit WinForms gearbeitet, möchte allerdings, auch sein Programm irgendwann in solche implementieren, wofür er auch eigentlich Delphi 8 gekauft hat.

Was ich damit sagen will ist, dass ich alles dafür tun sollte, dass ich das Programm in Delphi ans laufen bekomme.
trotzdem danke für den gut gemeinten Tip!



Viele Grüße
Michael N.
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Mit der Enter Taste in die nächste TextBox navigieren!?

  Alt 26. Mai 2007, 12:16
Zitat:
Aber bei den Code kommen trotzdem noch vier Fehlermeldungen.
Welche denn?
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#6

Re: Mit der Enter Taste in die nächste TextBox navigieren!?

  Alt 26. Mai 2007, 13:07
Hallo Michael,

nun ja, wenn man von solchen Kriterien abhängig ist, dann geht es natürlich nicht anders. Aber auch dann bleibt meine dringende Empfehlung (an den Chef), wenigstens auf Delphi 2006 zu wechseln (oder 2007, bitte nach Informationen im Forum oder bei CodeGear suchen): Delphi 8 kann für NET meines Wissens nach nicht mit der IDE arbeiten; und die IDE ist doch eine große Arbeitserleichterung.

Zum eigentlichen Thema: In der Tat fehlen die Fehlermeldungen; denn eigentlich ist die Antwort von Chemiker korrekt. Ich möchte sie aber wie folgt ergänzen:
Delphi-Quellcode:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if key = #13
  then begin
    // "normale" Delphi-Methode verwenden ohne Windows-Konstante:
    SelectNext(ActiveControl, true, true);
    // anstelle von Self.Perform(WM_NEXTDLGCTL, 0, 0);
    // Eingabe zurücksetzen, damit sie nicht weiter bearbeitet wird
    key := #0;
  end;
end;
Delphi-Referenz durchsuchenSelectNext()
Zitat:
Verschiebt den Eingabefokus vom aktuellen untergeordneten Steuerelement zum nächsten untergeordneten Steuerelement in der Tabulatorreihenfolge.
Gruß Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Mit der Enter Taste in die nächste TextBox navigieren!?

  Alt 26. Mai 2007, 13:40
Zitat von Jürgen Thomas:
Dazu bietet sich Turbo Delphi for .NET an, entweder in der Explorer-Version (umsonst, keine kommerzielle Nutzung) oder in der Professional-Version (ggf. zuerst trial).
Das stimmt nicht! Auch mit der Explorerversion darf man kommerzielle Programme entwickeln. Anders ist das z.B. bei Delphi 2005 Personal.

edit: 300. Beitrag
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.859 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Mit der Enter Taste in die nächste TextBox navigieren!?

  Alt 26. Mai 2007, 15:08
Hallo Michael,

Ich habe Deinen Beitrag leider nicht sorgfältig genug durchgelesen. Währ lesen kann ist klar im Vorteil. Habe leider übersehen das du mit Delphi.NET programmierst.

Vielleicht hilft Dir das weiter:

Delphi-Quellcode:
procedure TWinForm.TWinForm_KeyPress(sender: System.Object; e: System.Windows.Forms.KeyPressEventArgs);
begin
  if e.KeyChar = #13 then
    begin
      e.Handled:= true;
      SelectNextControl(ActiveControl,TRUE,TRUE,TRUE,TRUE);
    end;
end;
Ob das unter Delphi 8 funktioniert kann ich leider nicht prüfen.

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Mr_Rollercoaster

Registriert seit: 25. Mai 2007
Ort: Mechernich
9 Beiträge
 
#9

Re: Mit der Enter Taste in die nächste TextBox navigieren!?

  Alt 26. Mai 2007, 15:47
Hallo nochmal zusammen,

finde es wirklich super, das ihr euch dem Problem antut und mir helfen möchtet, echt Klasse! Findet man lange nicht in jedem Forum, dass Anfängern geholfen wird.

ich habe es jetzt nochmal mit der Version von Jürgen versucht dabei treten Folgende Fehler auf, welche bei den Messages angezeigt werden:

Undeklarierter Bezeichner: 'ActiveControl'

Delphi-Quellcode:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
             //';' erwartet aber '.' gefunden ';' erwartet aber ')' gefunden
begin
  if key = #13
  then begin
    SelectNext(ActiveControl, true, true);
    //undefinierter Bezeichner: 'SelectNext' Undefinierter Bezeichner: 'ActiveControl'
    key := #0;
  end;
end;

Ich bin bisher immer davon ausgegangen, dass ich "TForm1" in den Namen der TextBox ändern muss, glaube aber jetzt verstanden zu haben, dass dieser Code nur für die "Hauptform" eingebracht werden muss, und dieser dann für alle TextBoxen auf der Form gilt.
Ist das richtig?
Müsste ich dann "TForm1" in "TWinForm" umändern, da das Fenster so heißt, oder muss ich es vielleicht in den Namen des TabControls ändern, da sich alle textboxen ja eigentlich in dem Tabcontrol befinden?

Ich weiß, das sind wohl eher Fragen zu erweiterten Grundlagen, allerdings muss man auch diese ertsmal kennenlernen. Habe leider in den bisherigen Tutorials, die ich gemacht habe keine Antwort darauf gefunden.


Ich werde bei nächster Gelegenheit mal meinen Chef darauf ansprechen, für das nächste Projekt dann doch eher eine der neueren Delphiversionen von Codegear nutzen zu können.

Noch eine Korrektur meines vorhergehenden Postings. Wir nutzen Delphi nicht um komerzielle Programme zu schreiben, möchten diese also nicht verkaufen, sie sollen jedoch in einem Unternehmen genuzt werden. Wie sieht das dabei mit den Rechten aus?


P.S.: Glückwunsch zum 300.!



Grüße aus der halbsonnigen Eifel,
by Michael
  Mit Zitat antworten Zitat
Mr_Rollercoaster

Registriert seit: 25. Mai 2007
Ort: Mechernich
9 Beiträge
 
#10

Re: Mit der Enter Taste in die nächste TextBox navigieren!?

  Alt 26. Mai 2007, 15:53
Hups, jetzt hab ich das Alte doch abgeschickt..
Sorry für das Doppelposting! Aber ich denke so bleibts Übersichtlicher.

Chemiker!?
Ich nenn dich Gott!

Vielen vielen lieben Dank!!

Es funktioniert einwandfrei!

Echt super!


Auch nochmal vielen Dank an die Anderen! Habt mir alle sehr geholfen!
Wirklich ein Klasse Forum, habe mich ja auch schon durch andere Probleme mit der Forensuche gesucht.




Hierbleibende Grüße
by Michael
  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 21:45 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