| Autor |
Beitrag |
muellema
Hält's aus hier
Beiträge: 4
|
Verfasst: Mo 07.06.10 09:18
Hallo Experten, ich bin totaler Neuling mit Delphi.
Ich bin gerade dabei einen Taschenrechner zu programmieren, und bin dabei auf folgendes Problem gestoßen.
Ich möchte meine Eingabe via Mausklick auf einer Tastatur bestimmen.
Es dabei kein Problem eine Eingabe in ein bestimmtes Edit-Feld zu tätigen. Wie aber lege ich fest, dass ich bei einem Klick die Caption des Buttons im Edit1 haben möchte und beim nächsten Klick im Edit2?!
Natürlich wäre es möglich 2 Tastaturen bzw für jedes Edit eine zu erstellen. Doch wil ich alle Edits mit einer Tastatur steuern können.
Hat jemand eine Lösung für mich?!
Ich würde mich über schnelle Antwort freuen.
Lieber Gruß Moderiert von Narses: Topic aus Programmierwerkzeuge verschoben am Mo 07.06.2010 um 11:25
|
|
Horschdware
      
Beiträge: 744
Erhaltene Danke: 54
Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
|
Verfasst: Mo 07.06.10 09:43
Mit einer Hilfsvariable die beim Klicken gesetzt wird. Ist die Variable A, tue X, ist sie B, tue Y.
_________________ Delphi: XE - OS: Windows 7 Professional x64
|
|
jaenicke
      
Beiträge: 19345
Erhaltene Danke: 1753
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 07.06.10 10:04
Oder ganz einfach so: Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| private FCurrentEdit: TEdit; procedure TfrmMain.EditClick(Sender: ...); begin FCurrentEdit := Sender as TEdit; end; if Assigned(FCurrentEdit) then FCurrentEdit.Text := FCurrentEdit.Text + '1'; | Dadurch, dass direkt das Editfeld gespeichert wird, ist das ganze sehr flexibel, da man beim Eintragen gar nicht wissen muss was es für Edits gibt. 
|
|
martin300
      
Beiträge: 186
Erhaltene Danke: 2
|
Verfasst: Mo 07.06.10 10:10
Hi,
du kannst das Edit-Feld öfters verwenden. Zb könnte es so funktionieren:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.btn1Click(Sender: TObject); begin edt1.Text := edt1.Text + TEdit(Sender).Text; end;
procedure TForm1.btn2Click(Sender: TObject); begin edt1.Text := edt1.Text + TEdit(Sender).Text; end; |
Das Edit-Feld hat den Namen edt1, zwei Buttons mit der Caption 1 + 2 (für die Ziffern - kann noch erweitert werden). Nun wird im Ereignis die Caption vom Button übertragen und immer in das gleiche Editfeld eingefügt.
|
|
muellema 
Hält's aus hier
Beiträge: 4
|
Verfasst: Di 08.06.10 20:52
Danke für eure Zahlreichen Antworten.
Aber so, betonen will ich nochmals, dass ich echter Neueinsteiger bin.
Ich habe nun zwei Edit-Felder und eine Tastatur.
Was muss ich nun tuen?
Ich würde mich über weitere Hilfe freuen.
|
|
MaPsTaR
      
Beiträge: 90
Erhaltene Danke: 4
Win XP
Delphi 7 Enterprise
|
Verfasst: Di 08.06.10 23:26
Hallo, hast du den Beitrag von jaenicke eigentlich gelesen?
-> Erstelle eine private-Variable FCurrentEdit, in der gespeichert wird, welches Edit angeklickt wurde (1-2).
-> Schreibe in deinen Code die procedure TfrmMain.EditClick(Sender: TObjects) (4-8 ).
-> Markiere alle betroffenen Edits im Objektinspektor und weise ihnen EditClick als OnClick-Ereignis zu.
-> Schreibe eine procedure TfrmMain.KeyboardClick(Sender: TObject) (10-12).
(Zeile 12 änderst du so ab, dass statt '1', TButton(Sender).Caption da steht)
-> Markiere alle Buttons deiner "Tastatur" und weise ihnen KeyBoardClick als OnClick-Ereignis zu.
Wenn noch weitere Fragen sind, dann geh bitte mehr ins Detail.
Meine Lust, zu raten, was genau du nicht verstehst, hält sich eher in Grenzen.
btw:
-> Eine fertige Lösung wird dir hier kaum jemand präsentieren, u.a. weil dir damit längerfristig nicht geholfen wäre.
-> Eventuell wäre dein bisheriger Code ganz hilfreich, um zu sehen, dass du dir schon Gedanken gemacht hast.
@martin300
Dein Code kommt zwar der üblichen Verwendung eines Taschenrechners am nächsten, beantwortet aber nicht die Frage von muellema...
_________________ Liebe Kinder, es stimmt ... solnage auch nur der ertse und lezte Bchutsabe rihctig ist und alle andreen Bcuhsatben irgendwie vorahnden sind,
dann knan man es dennonch lesen, also macht nur weiter so, wir verstehen euch schon
|
|
muellema 
Hält's aus hier
Beiträge: 4
|
Verfasst: Di 08.06.10 23:50
Danke, dass ihr euch meinem Problem annehmt. UNd sicher hält sich der langfristige Erfolg durch das "Vorsagen" in Grenzen.
Daher meine Versuche:
Also um die Caption eines bestimmten Button in ein bestimmtes Edit-Fenster zu bekommen
Delphi-Quelltext 1:
| Edit1.text := Edit1.Text + Button1.Caption; | und das halt für jeden Button. Das klappt auch.
Nun verstehe ich aberJaenicke´s Ansatz nicht ganz.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| private FCurrentEdit: TEdit; procedure TfrmMain.EditClick(Sender: ...); begin FCurrentEdit := Sender as TEdit; end; if Assigned(FCurrentEdit) then FCurrentEdit.Text := FCurrentEdit.Text + '1'; |
Moderiert von Narses: Delphi-Tags hinzugefügt
|
|
MaPsTaR
      
Beiträge: 90
Erhaltene Danke: 4
Win XP
Delphi 7 Enterprise
|
Verfasst: Mi 09.06.10 00:26
Soll heißen, du hast das für jeden Button einzeln geschrieben?
Das kannst du in einer Prozedur zusammenfassen, da Delphi beim Aufruf eines Ereignisses (z.B. OnClick) einen Sender übergibt (afaik die aufrufende Komponente).
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| procedure TForm1.KeyboardClick(Sender: TObject); begin if Sender is TButton then Edit1.SelText := Button(Sender).Caption; end; |
Diese weist du dann einfach allen Buttons über den Objektinspektor zu.
In meinem letzten Beitrag habe ich versucht dir zu erklären, was der Code von jaenicke macht und wie du ihn verwendest.
Verstehst du davon etwas nicht -> fragen? Die Zahlen in Klammern sind die Zeilen im Code von jaenicke.
Setze deinen Code bitte in [delphi] -Tags (unter Bereiche), damit man ihn besser lesen kann.
_________________ Liebe Kinder, es stimmt ... solnage auch nur der ertse und lezte Bchutsabe rihctig ist und alle andreen Bcuhsatben irgendwie vorahnden sind,
dann knan man es dennonch lesen, also macht nur weiter so, wir verstehen euch schon
|
|
muellema 
Hält's aus hier
Beiträge: 4
|
Verfasst: Do 10.06.10 01:43
ISt mein Anliegen vielleicht falsch rübergekommen?
Also vereinfacht:
Ich ahbe einen Button und zwei Edit_Felder.
Wie kann ich entscheiden inwelches Edit-Feld die Caption des Buttons übernommen wird?
WIe gesagt.. Für ein Edit-Feld ist das für mich gar kein Problem (s.o.)
Es tut mir leid, dass ich wahrscheinlich so peinlich Frage.. aber ich bin eben noch ein total Anfänger.
Ich freue mich auf weitere Hilfe.
Lieber Gruß
|
|
jaenicke
      
Beiträge: 19345
Erhaltene Danke: 1753
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 10.06.10 02:07
muellema hat folgendes geschrieben : | | ISt mein Anliegen vielleicht falsch rübergekommen? |
Nein, aber meine Antwort offenbar.
Im Anhang der Code eingebaut in ein Testprojekt. Wirklich fast nur der schon gepostete (und der hätte so auch funktioniert), ich dachte das könntest du auch selbst ausprobieren...
Einloggen, um Attachments anzusehen!
|
|
MaPsTaR
      
Beiträge: 90
Erhaltene Danke: 4
Win XP
Delphi 7 Enterprise
|
Verfasst: Do 10.06.10 10:22
Hallo,
dein Problem habe ich schon verstanden. Da du aber offenbar den Code von jaenicke nicht verstanden hast, wollte ich ihn mit dir Schritt für Schritt durchgehen, damit du nachher auch weißt, was du eigentlich in deinem Code stehen hast.
Meinen letzten Code hätten wir im nächsten Schritt so geändert, dass in das ausgewählte Edit geschrieben wird.
muellema hat folgendes geschrieben : | | Für ein Edit-Feld ist das für mich gar kein Problem (s.o.) |
Deswegen war meine Frage, ob du das für jeden Button einzeln geschrieben hast.
Dann müsstest du die Bedingung zur Auswahl des Edit x-mal schreiben.
Daher mein Code der von allen Buttons aufgerufen werden kann.
_________________ Liebe Kinder, es stimmt ... solnage auch nur der ertse und lezte Bchutsabe rihctig ist und alle andreen Bcuhsatben irgendwie vorahnden sind,
dann knan man es dennonch lesen, also macht nur weiter so, wir verstehen euch schon
|
|