Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Form-Felder in eigene Procedure integrieren (https://www.delphipraxis.net/147965-form-felder-eigene-procedure-integrieren.html)

Delphi Freak 19. Feb 2010 20:17


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

ap_computers 19. Feb 2010 20:25

Re: Form-Felder in eigene Procedure integrieren
 
Versuch mal den Button über eine Prozedur zu ermitteln. Etwa so:

Delphi-Quellcode:
procedure TForm1.Button1.Click(Sender: TObject);
var
  bt: TButton;
begin
  bt:= TButton(Sender);
  case StrToInt(bt.Caption) of
  ...
  end;
end;
Verknüpfe im Objektinspektor alle OnClick Ereignisse der Buttons mit der Button1Click Methode.

Delphi Freak 19. Feb 2010 20:30

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:
procedure ZahlEingabe(y: Integer);
begin
  if Edit.Text = '0' then
  begin
    Edit.Text := y;
  end
  else
  begin
    Edit.Text := Edit.Text + y;
  end;
end;
kannst du mir vllt mit meinem Grundgerüst genauer zeigen, wie du es meinst?

Danke

ap_computers 19. Feb 2010 20:50

Re: Form-Felder in eigene Procedure integrieren
 
Delphi-Quellcode:
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;
reicht dir das so als erklärung ??? :gruebel:

Delphi Freak 19. Feb 2010 21:28

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:
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;
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.

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:
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 weiß nicht, ob du mich falsch verstanden hast oder obs nen Fehler war, ist ja auch egal, trotzdem danke, für deine Hilfe!


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

ap_computers 20. Feb 2010 22:43

Re: Form-Felder in eigene Procedure integrieren
 
Zitat:

Zitat von ap_computers
Delphi-Quellcode:
if bt.Text = '0' then // wenn du auf "0" geklickt hast

hupps :oops: das kommt davon wenn man mal schnell was ohne Delphi tippt.

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