![]() |
Möchte meinen Script verkürzen bzw. function erstellen
...
|
AW: Möchte meinen Script verkürzen bzw. function erstellen
Zumindest die eigentliche Berechnung könntest Du in Funktionen auslagern und statt der If-Abfragen eine case-Abfrage verwenden.
Delphi-Quellcode:
function Kathete(AndereKathete, Hypotenuse: double): double;
begin Result := Sqrt(Sqr(Hypotenuse) - Sqr(AndereKathete)); end; function Hypotenuse(Ankathete, Gegenkathete: double): double; begin Result := Sqrt(Sqr(Ankathete) + Sqr(Gegenkathete)); end; ... case Art of 1: ... 2: ... 3: ... end; |
AW: Möchte meinen Script verkürzen bzw. function erstellen
schonmal danke, ich hatte iwie mehr daran gedacht die ifkeypressfunktionen in eine zu packen aber kein plan wie..
|
AW: Möchte meinen Script verkürzen bzw. function erstellen
Du kannst den einzelnen Edit's im Objektinspektor jeweils die gleiche KeyPress-Procedure zuweisen. Damit hättest du nur noch eine KeyPress-Procedure die du ggf. anpasssen musst.
|
AW: Möchte meinen Script verkürzen bzw. function erstellen
Delphi-Quellcode:
Geht aber noch kürzer (Der 'Sender' ist jeweils das TEdit-Control, in dem eine Taste gedrückt wurde).
procedure DoKeyPress (aEdit : TEdit; Var aKey : Char);
Begin if not (aKey in [#48..#57,#8,#44]) then aKey:=#0; if (aKey in[',']) and (aEdit.Text='') then begin aEdit.Text:= '0,'; aEdit.Selstart:=Length(aEdit.Text); end; if (Key in[',']) and (pos(',',aAdit.Text)>0) then aKey:=#0; End; procedure TSatzdesPytagoras.Edit1KeyPress(Sender: TObject; var Key: Char); begin DoKeyPress(Edit1, Key); end; procedure TSatzdesPytagoras.Edit2KeyPress(Sender: TObject; var Key: Char); begin DoKeyPress(Edit2, Key); end; procedure TSatzdesPytagoras.Edit3KeyPress(Sender: TObject; var Key: Char); begin DoKeyPress(Edit3, Key); end; |
AW: Möchte meinen Script verkürzen bzw. function erstellen
Dann musst Du aber auch den Sender auswerten.
|
AW: Möchte meinen Script verkürzen bzw. function erstellen
Zitat:
|
AW: Möchte meinen Script verkürzen bzw. function erstellen
Ich hätte nie gedacht, dass ich auch einmal mit so etwas langeweile, aber ich glaube, wichtiger als ein paar Buchstaben einzusparen wäre erst einmal
Was soll ein
Delphi-Quellcode:
wirklich bewirken? Bei der Einrückung und begin/end-Benutzung weiß ich nicht, ob man wirklich verstanden hat, was man da tut.
if Art=3 then
c:= Sqrt(Strtofloat(Edit1.text)*Strtofloat(Edit1.text) + Strtofloat(Edit2.text) * Strtofloat(Edit2.text)); showmessage ('C ist: ' + floattostr(c)); begin end; Ich bin heute in Spaßbremsen-Stimmung. 8-) |
AW: Möchte meinen Script verkürzen bzw. function erstellen
Zitat:
Delphi-Quellcode:
Das kann man dann allen Edits als OnKeyPress-Handler zuweisen (der Code ist allerdings ungetestet).
procedure DoOnKeyPress(Sender: TObject; var Key: char);
const KEY_BACKSPACE = #8; var TheEdit: TEdit; begin TheEdit := Sender as TEdit; case Key of '0'..'9', KEY_BACKSPACE: Key := #0; ',': if Pos(',', TheEdit.Text) > 0 then Key := #0 else if TheEdit.Text = '' then begin TheEdit.Text := '0,'; TheEdit.Selstart := Length(TheEdit.Text); end; end; end; |
AW: Möchte meinen Script verkürzen bzw. function erstellen
Danke für die nützlichen Antworten :)
|
AW: Möchte meinen Script verkürzen bzw. function erstellen
Zitat:
Der Code ist leider 'Müll'. Hier sollen einfach nur Ziffern erlaubt sein, bei einem Komma gibt es eine kleine Sonderbehandlung. So geht's.
Delphi-Quellcode:
procedure DoOnKeyPress(Sender: TObject; var Key: char);
const BACKSPACE = #8; var TheEdit: TEdit; begin TheEdit := Sender as TEdit; If Key = ',' then if Pos(',', TheEdit.Text) > 0 then Key := #0 else if TheEdit.Text = '' then begin TheEdit.Text := '0,'; TheEdit.Selstart := Length(TheEdit.Text); end else if Not (Key in ['0'..'9', BACKSPACE]) then Key := #0; end; |
AW: Möchte meinen Script verkürzen bzw. function erstellen
Selber Müll, an begin und end gespart, so sind auch Buchstaben zulässig :tongue:
Delphi-Quellcode:
const
BACKSPACE = #8; var TheEdit: TEdit; begin TheEdit := Sender as TEdit; If Key = ',' then begin //<-- darf nicht fehlen if Pos(',', TheEdit.Text) > 0 then Key := #0 else if TheEdit.Text = '' then begin TheEdit.Text := '0,'; TheEdit.Selstart := Length(TheEdit.Text); end end //<-- auch nicht else if Not (Key in ['0'..'9', BACKSPACE]) then Key := #0; |
AW: Möchte meinen Script verkürzen bzw. function erstellen
@DeddyH: gib mal als erstes ein Komma ein.
Warum nicht einfach so:
Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
const BACKSPACE = #8; begin if not (Key in ['0'..'9', DecimalSeparator, BACKSPACE]) then Key := #0; end; procedure TForm1.Edit1Exit(Sender: TObject); begin try Edit1.Text := FormatFloat('0.00', StrToFloat(Edit1.Text)); except Edit1.Text := FormatFloat('0.00', 0);; end; end; |
AW: Möchte meinen Script verkürzen bzw. function erstellen
Wieso sollte ich, ist ja nicht mein Code (obwohl man in dem Fall auch nur den Key entwerten oder das Komma aus der Vorlage entfernen müsste)?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:54 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