Autor Beitrag
muellema
Hält's aus hier
Beiträge: 4



BeitragVerfasst: 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 user profile iconNarses: Topic aus Programmierwerkzeuge verschoben am Mo 07.06.2010 um 11:25
Horschdware
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 744
Erhaltene Danke: 54

Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19345
Erhaltene Danke: 1753

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 07.06.10 10:04 
Oder ganz einfach so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
private
  FCurrentEdit: TEdit;
//...
// OnClick für alle Edits (um das angeklickte zu benutzen danach):
procedure TfrmMain.EditClick(Sender: ...);
begin
  FCurrentEdit := Sender as TEdit;
end;
//...
// Eintragen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 186
Erhaltene Danke: 2



BeitragVerfasst: Mo 07.06.10 10:10 
Hi,
du kannst das Edit-Feld öfters verwenden. Zb könnte es so funktionieren:

ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 90
Erhaltene Danke: 4

Win XP
Delphi 7 Enterprise
BeitragVerfasst: Di 08.06.10 23:26 
Hallo, hast du den Beitrag von user profile iconjaenicke 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 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: 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
ausblenden 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.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
private
  FCurrentEdit: TEdit;
//...
// OnClick für alle Edits (um das angeklickte zu benutzen danach):
procedure TfrmMain.EditClick(Sender: ...);
begin
  FCurrentEdit := Sender as TEdit;
end;
//...
// Eintragen:
if Assigned(FCurrentEdit) then
  FCurrentEdit.Text := FCurrentEdit.Text + '1';

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
MaPsTaR
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 90
Erhaltene Danke: 4

Win XP
Delphi 7 Enterprise
BeitragVerfasst: 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).

ausblenden 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 user profile iconjaenicke macht und wie du ihn verwendest.
Verstehst du davon etwas nicht -> fragen? Die Zahlen in Klammern sind die Zeilen im Code von user profile iconjaenicke.

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 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19345
Erhaltene Danke: 1753

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 10.06.10 02:07 
user profile iconmuellema hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 90
Erhaltene Danke: 4

Win XP
Delphi 7 Enterprise
BeitragVerfasst: 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.

user profile iconmuellema hat folgendes geschrieben Zum zitierten Posting springen:
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