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 Enter-Taste bei SpinEdit (https://www.delphipraxis.net/18956-enter-taste-bei-spinedit.html)

alcaeus 26. Mär 2004 16:12


Enter-Taste bei SpinEdit
 
Hi! Ich habe in einer Formular ein Spinedit und einen Button, welcher als Default gesetzt wurde. Wenn ich jetzt im SpinEdit die Enter-Taste drücke, so wird nicht auf den Button reagiert. Ich habe probeweise ein Edit-Feld mit ins Formular gegeben, dort hat es anstandslos funktioniert. Weiß jemand worauf das Problem zurückzuführen ist?

toms 26. Mär 2004 17:15

Re: Enter-Taste bei SpinEdit
 
Zitat:

Weiß jemand worauf das Problem zurückzuführen ist?
Das liegt daran, dass das TSpinedit den Style ES_MULTILINE hat.

alcaeus 26. Mär 2004 17:18

Re: Enter-Taste bei SpinEdit
 
Toms, ich weiß nicht wo du diese Eigenschaft beim Spinedit gefunden hast, aber bei meinem D7 Ent gibs die irgendwie nicht...

toms 26. Mär 2004 17:29

Re: Enter-Taste bei SpinEdit
 
Dazu musst du schon im Source Code von TSpinEdit nachschauen.

---> TSpinEdit.CreateParams


Delphi-Quellcode:
procedure TSpinEdit.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.Style := Params.Style or ES_MULTILINE or WS_CLIPCHILDREN;
end;

alcaeus 26. Mär 2004 17:30

Re: Enter-Taste bei SpinEdit
 
Achso, danke. Kann ich das Multiline irgendwie auch abschalten?

Xeno-Sebi 26. Mär 2004 17:32

Re: Enter-Taste bei SpinEdit
 
hm...das ist zwar nicht eine antwort auf deine frage, aber vielleicht kannst du bei einem onKeyUp ereignis des spinedits sagen:
Delphi-Quellcode:
if(Key=13)then
  Button1.Click();
damit umgehst du das prob

alcaeus 26. Mär 2004 17:33

Re: Enter-Taste bei SpinEdit
 
:wall: :wall: :wall: Darn hätte ich eigentlich auch denken können...naja, auch Profis machen Fehler ;)

toms 26. Mär 2004 17:34

Re: Enter-Taste bei SpinEdit
 
Zitat:

Kann ich das Multiline irgendwie auch abschalten?
Würde ich lieber nicht, sonst verändert das TSpinEdit etwas sein Aussehen (Hab's eben ausprobiert)
Mach's lieber so, wie's Xeno-Sebi vorgeschlagen hat.

alcaeus 26. Mär 2004 17:38

Re: Enter-Taste bei SpinEdit
 
Die Lösung von Xeno-Sebi funktioniert eigentlich gut, doch da gibt es gleich wieder ein Folgeproblem: In der Click-Routine des Buttons überprüfe ich den Wert des Edits. Wenn ich die evtl. aufkommende Fehlermeldung mit der Enter-Taste bestätige, so erscheint das Fehlerfenster wieder. Hat jemand auch dagegen ein Heilrezept oder ist wieder ein neuer Thread fällig?

Xeno-Sebi 26. Mär 2004 18:26

Re: Enter-Taste bei SpinEdit
 
Was für ne Fehlermeldung ist das denn? Schon mal mit try...except probiert?
also ich hab mal ein simples prog nachgebaut:
1 edit; 1 spinedit; 1 button(default)
Delphi-Quellcode:
procedure TForm1.SpinEdit1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if(Key=13)then
 Button1.Click;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(Edit1.Text+IntToStr(SpinEdit1.Value));
end;
da gabs keine fehler, deshalb glaube ich nciht, das der fehler aus der keyup methode, sondern aus deiner weiterverarbeitung kommt... ansonsten kannst du vor dem button1.click mal button1.setfocus machen, dann ist es identisch mit nem echten mausklick

alcaeus 26. Mär 2004 18:28

Re: Enter-Taste bei SpinEdit
 
nö, eine selpst generierte Fehlermeldung. Ich geb bei einem ungültigen Port (kleiner als 1 etc.) eine Fehlermeldung mit MessageDlg aus. Ich hab mich vielleicht vorher nicht deutlich genug ausgedrückt...

Xeno-Sebi 26. Mär 2004 18:30

Re: Enter-Taste bei SpinEdit
 
Zitat:

Zitat von alcaeus
Ich hab mich vielleicht vorher nicht deutlich genug ausgedrückt...

yo stimmt. wie wärs, wenn du mal den code postest?

alcaeus 26. Mär 2004 18:35

Re: Enter-Taste bei SpinEdit
 
Logo, hier:
Delphi-Quellcode:
procedure Tf_PokerServer.b_StartServerClick(Sender: TObject);
begin
//DONE:Handle start listening
  if (se_Port.Value >= se_Port.MinValue) and (se_Port.Value <= se_Port.MaxValue) then
  begin
//....
  end //if (se_Port.Value >= se_Port.MinValue) and (se_Port.Value <= se_Port.MaxValue)
  else
    MessageDlg('Invalid port',mtError,[mbOk],0);
end; //procedure Tf_PokerServer.b_StartServerClick

procedure Tf_PokerServer.se_PortKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
//DONE: React to RETURN-Key
  if (Key = 13) then
    b_StarServerClick(Sender);
end; //procedure Tf_PokerServer.se_PortKeyUp
Ich hoffe der erklärt sich von selbst

Xeno-Sebi 26. Mär 2004 19:01

Re: Enter-Taste bei SpinEdit
 
ahja ist logisch:
wenn du mit space die meldung schließt kommt sie nciht nochmal, oda???
das liegt daran, dass das(oder der???) spinedit imma noch markiert ist. Der dialog wird mit keydown geschlossen. Aber "Tf_PokerServer.se_PortKeyUp" ist keyup! also reicht eine taste für beides. also musst du das so machen:
Delphi-Quellcode:
if(Key=13)then
begin
Button1.setfocus;
b_StarServerClick(Sender);
end;
end;
dadurch wird das spinedit feld verlassen, und onkeyUP funzt nicht mehr, wenn es ncith markiert ist
logisch?

P.S.: statt Button1 kannste auch ein xbelibiges anderes objekt nehmen, welches nciht auf keyup reagiert^^

alcaeus 26. Mär 2004 19:05

Re: Enter-Taste bei SpinEdit
 
Ok, das werde ich gleichmal probieren, danke einmal


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:31 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-2025 by Thomas Breitkreuz