Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#24

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

  Alt 21. Jan 2015, 17:23
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
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat