![]() |
Form-Felder in eigene Procedure integrieren
Hallo Forum,
ich versuche gerade einen Taschenrechner zu programmieren, bei dem man auch die Zahlen über Buttons eingeben soll, da man natürlich auch mehrere Zahlen hintereinander reihen muss, ist die Procedure pro Zahl nicht wirklich kurz und deshalb dachte ich mir, ich kann ja einfach eine Procedure mit einer Variable für die jeweiligen Zahlen(0-9) schreiben und dann bei jeder Zahl soll einfach nur die Procedure mit dem jeweiligen Wert(0-9) durchlaufen. So weit bin ich auch schon, jetzt zu meinem Problem: Ich überprüfe in dieser genannten Procedure, ob in dem Edit-Feld, über das die Zahlen angezeigt werden, ob dort eine "0" steht und wenn ja, wird sie ja überschrieben, wenn dort nicht "0" steht, wird die nächste Zahl angereiht. Wir kann ich die "Form" in meine Procedure integrieren, damit ich auf das Edit-Feld zugreifen kann? Bis jetzt kommt nur eine Fehlermeldung: Undefinierter Bezeichner: "Edit"; :( Und wo genau muss ich die Procedure schreiben? Bei Public oder Private oder einfach dort, wo auch die anderen Proceduren sind? Danke schon im voraus für die Antworten. Grüße Florian |
Re: Form-Felder in eigene Procedure integrieren
Versuch mal den Button über eine Prozedur zu ermitteln. Etwa so:
Delphi-Quellcode:
Verknüpfe im Objektinspektor alle OnClick Ereignisse der Buttons mit der Button1Click Methode.
procedure TForm1.Button1.Click(Sender: TObject);
var bt: TButton; begin bt:= TButton(Sender); case StrToInt(bt.Caption) of ... end; end; |
Re: Form-Felder in eigene Procedure integrieren
Ich verstehe nicht so genau, was ich machen soll (Ich programmiere noch nicht lange mit Delphi).
Das wäre das Grundgerüst meiner Procedure:
Delphi-Quellcode:
kannst du mir vllt mit meinem Grundgerüst genauer zeigen, wie du es meinst?
procedure ZahlEingabe(y: Integer);
begin if Edit.Text = '0' then begin Edit.Text := y; end else begin Edit.Text := Edit.Text + y; end; end; Danke |
Re: Form-Felder in eigene Procedure integrieren
Delphi-Quellcode:
reicht dir das so als erklärung ??? :gruebel:
procedure TForm1.Button1.Click(Sender: TObject);
var bt: TButton; begin bt:= TButton(Sender); // ermittelt auf welchen Button geklickt wurde if bt.Text = '0' then // wenn du auf "0" geklickt hast begin Edit1.Text := '0'; // dann überschreiben end else begin Edit1.Text := Edit1.Text + bt.Text; // sonst Zeichen anhängen end; end; |
Re: Form-Felder in eigene Procedure integrieren
Danke für die Antwort, so grob tuts jetzt, ist aber immer noch ein Fehler drin :(
Delphi-Quellcode:
bei Buttons heißts net .Text, sondern .Caption, des hab ich geändert und mein Edit-Feld heißt einfach nur Edit, aber des tut ja nicht viel zur Sache, habs dementsprechend umgeändert.
procedure TForm1.Button1.Click(Sender: TObject);
var bt: TButton; begin bt:= TButton(Sender); // ermittelt auf welchen Button geklickt wurde if bt.Caption = '0' then // wenn du auf "0" geklickt hast begin Edit.Text := '0'; // dann überschreiben end else begin Edit.Text := Edit.Text + bt.Caption; // sonst Zeichen anhängen end; end; Wenn ich auf "0" klicke, steht in meinem Edit-Feld unabhängig, was davor drin stand "0" drin, wenn ich auf eine andere Zahl klicke, wird sie angehängt, aber die "0" bleibt davor stehen :( Hab den Fehler jetzt gefunden:
Delphi-Quellcode:
ich weiß nicht, ob du mich falsch verstanden hast oder obs nen Fehler war, ist ja auch egal, trotzdem danke, für deine Hilfe!
procedure TForm1.Bu0Click(Sender: TObject);
var bt: TButton; begin bt:= TButton(Sender); // ermittelt auf welchen Button geklickt wurde if Edit.Text = '0' then // wenn im Edit-Feld "0" begin Edit.Text := bt.Caption; // dann überschreiben end else begin Edit.Text := Edit.Text + bt.Caption; // sonst Zeichen anhängen end; end; Ich würde trotzdem noch gerne wissen, ob ich das Problem auch so lösen kann, wie ichs ursprünglich machen wollte, würd mich über weitere Antworten freuen. Gruß Florian |
Re: Form-Felder in eigene Procedure integrieren
Zitat:
Man könnte das ganze zwar auch über eine externe Methode machen, ich persönlich find aber die Lösung besser. Und wenns funktioniert, dann ist's doch gut, oder? :coder: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:06 Uhr. |
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