Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi [GELÖST] Key (z.B 'A' ) per Button an ein Editfeld senden (https://www.delphipraxis.net/183589-%5Bgeloest%5D-key-z-b-per-button-ein-editfeld-senden.html)

baumina 21. Jan 2015 14:41

AW: Key (z.B 'A' ) per Button an ein Editfeld senden
 
Zitat:

Zitat von Dexo (Beitrag 1287314)
Zitat:

Zitat von baumina (Beitrag 1287313)
Zitat:

Zitat von DeddyH (Beitrag 1287310)
@baumina: ActiveControl dürfte mit ziemlicher Sicherheit der auslösende Button sein, zumindest wenn es sich um einen Standard-Button (TWinControl) handelt.

Deswegen mein Hinweis oben besser SpeedButtons zu verwenden.

Also wenn ich SpeedButtons verwende bleibt ActiveControl bei den Edits?

-Daniel

Ja genau, SpeedButtons erhalten keinen Fokus.

DeddyH 21. Jan 2015 14:42

AW: Key (z.B 'A' ) per Button an ein Editfeld senden
 
Solange Du nicht vor dem Click in ein anderes Control wechselst, ja, denn SpeedButtons können keinen Fokus erhalten. Allerdings muss man sich darüber im Klaren sein, dass es ggf. nicht mehr funktioniert, wenn man doch mal andere Controls verwenden möchte, weil die z.B. cooler aussehen.

Dexo 21. Jan 2015 14:50

AW: Key (z.B 'A' ) per Button an ein Editfeld senden
 
@Baumina & DeddyH

Vielen Dank !!!:-D
Funktioniert endlich!!

Grüße,
Daniel

Sir Rufo 21. Jan 2015 16:23

AW: Key (z.B 'A' ) per Button an ein Editfeld senden
 
Warum kommt eigentlich niemand auf die Idee einfach eine Methode zu schreiben, die diesen String annimmt und an das Control sendet, was man meint?

Delphi-Quellcode:
procedure TForm1.Focus1ButtonClick( Sender : TObject );
begin
  FSelectedEdit := Edit1;
end;

// analog für Focus2Button und Edit2

// und jetzt die Magie
procedure TForm1.ProcessInput( const InputStr : string );
begin
  if not Assigned( FSelectedEdit ) then
    Exit; // wir verwerfen die Eingabe, denn wir wissen nicht wohin :o)

 FSelectedEdit.Text := FSelectedEdit.Text + InputStr;
end;

// was machen die Buttons?
procedure TForm1.BottonFooClick( Sender: TObject );
begin
  ProcessInput( '7' );
end;
So würde ich es als Minimal-Umsetzung machen ;)

Noch witziger wird das mit einem Dictionary, wo man den Sender und den zu sendenden String einträgt. Dann gibt es nur noch eine Methode für alle Buttons
Delphi-Quellcode:
procedure TForm1.AllButtonsClick( Sender : TObject );
var
  LInputStr : string;
begin
  if FInputLookup.TryGetValue( Sender, LInputStr ) then
    ProcessInput( LInputStr );
end;

procedure TForm1.ConfigureInputLookup;
begin
  FInputLookup.Clear;
  FInputLookup.Add( Button1, '42' );
  ... // usw.
end;
Schon hat man keine Tipporgie mehr sondern einen flexiblen Code

DeddyH 21. Jan 2015 17:27

AW: [GELÖST] Key (z.B 'A' ) per Button an ein Editfeld senden
 
Naja, schöner Code ist nicht immer der für "Nicht-Pros" verständliche, daher halte ich mich da gern etwas zurück.

Der schöne Günther 21. Jan 2015 17:54

AW: [GELÖST] Key (z.B 'A' ) per Button an ein Editfeld senden
 
Dass SpeedButtons keinen Fokus erhalten war mir jetzt neu. Cool.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:18 Uhr.
Seite 3 von 3     123   

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