Entwickler-Ecke

Sonstiges (Delphi) - Enter Taste


NaRF - Do 21.11.02 19:36
Titel: Enter Taste
hallo,
ich habe eine Frage an euch:

Wie kann ich einem Button die Eigenschaft zuweisen (wenn möglich mit dem objektinspektor) beim Drücken der Entertate "geklickt" zu werden ? (wie z.B. bei Suchmaschinen. Man gibt einen Text ein, drückt Enter und die Suche wird gestartet)


Die Suche in der Delphihilfe brachte mir keine Ergebnisse.

Kann mir da jemand helfen ?


Funzi - Do 21.11.02 19:48

Das ist ganz einfach:

Man kommt zwar nicht gleich drauf, aber so müsste es gehen (bei mir zumindest hats geklappt):

Setze einfach die Eigenschaft Default von dem Button auf True

Dann muss eben nur Fokus auf dem Formular mit dem Button sein und dann gehts...

Hoffe das war das, was du gemeint hast. :wink:


hansa - Do 21.11.02 19:51

Hi,

bei mir kommt egal, ob mit der Maus geclickt oder Enter gedrückt immer die showmessage.


Quelltext
1:
2:
3:
4:
procedure TForm1.Button1Click(Sender: TObject);
begin
  showmessage ('ÖLKÖKÖ');
end;


Das mußt Du im OnClick-Event im Objektinspektor einstellen.

Gruß
Hansa


Funzi - Do 21.11.02 19:55
Titel: NEIN
Ich glaube, das war genau das, was er nicht wollte....

setz mal eine TMemo-Komponente auf dein Formular, schreibe einen Text darein und drücke dann Enter...


hansa - Do 21.11.02 19:59

Hi,

das habe ich zu spät gesehen :

Zitat:
Man gibt einen Text ein, drückt Enter und die Suche wird gestartet)


Willst Du einen Text in einen Button eingeben oder was ? Gehe mal davon aus, daß Du einen Text woanders eingeben willst und der Button soll "aktiv" werden, falls Enter gedrückt wird. Dann mußt Du nur den Fokus auf den Button setzen, ungefähr so :

Quelltext
1:
 Button1.SetFocus;[                    


Gruß
Hansa


wulfskin - Do 21.11.02 20:03

Hi NaRF!

Hier im Forum gab es schon viele ähnliche Postings -> Suchen hilft meistens! Hier ist zum Beispiel eins, dass dir weiterhelfen sollte: http://www.auq.de/viewtopic.php?t=1660&start=0&postdays=0&postorder=asc&highlight=onkeydown.

Gruß wulfskin!


hansa - Do 21.11.02 20:09

Hi Funzi,

Zitat:
setz mal eine TMemo-Komponente auf dein Formular


Um was geht es denn jetzt, um einen Button oder ein Memo ? Wenn ich Enter nicht für einen Zeilenumbruch benutzen will, sondern z.B. "z", dann wirds kompliziert. Vor allem, weil jeder dann beim Zeilenumbruch trotzdem Enter drückt und dadurch das Memo verläßt. :mrgreen:

Gruß
Hansa


Wolff68 - Do 21.11.02 20:12

Deshalb arbeiten wohl die Suchmaschinen nur mit einzeiligen Feldern? :?

Nee im Ernst. Bei einem TMemo ist es ja richtig, daß das Enter im Memo bleibt. Bei einem Edit funktioniert das mit dem Default wunderbar !

Wenn Du auch in einem Memo das Abfangen willst musst den anderen Weg gehen:
Zuerst Form1.KeyPreview := True setzen.
Somit wird jede Tastatureingabe zuerst vom Formular ausgewertet.
Dann kannst mit folgendem Code zB. beim Drücken von [CTRL]+[ENTER] den Button1 quasi drücken.

Quelltext
1:
2:
3:
4:
5:
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 IF (Key = 13) AND (Shift = [ssCtrl]) then Button1Click(self);
end;

Über das (self) kannst in Button1Click dann sogar über den Sender rausbekommen wo denn der Fokus war. :wink:


Funzi - Do 21.11.02 20:16

Zitat:
Nee im Ernst. Bei einem TMemo ist es ja richtig, daß das Enter im Memo bleibt. Bei einem Edit funktioniert das mit dem Default wunderbar !


sag ich doch :wink:


NaRF - Do 21.11.02 20:26
Titel: Danke !
@Funzi:

vielen dank für die hilfe. dein tip funktioniert.

@mod:

problem gelöst. thread kann geschlossen werden.