![]() |
Re: Wie Sender ermitteln ?
Ok Niko,
ich Versuch mal ob ich es hinkriege. Das ich das Z_Position.Text durch (........ as TEdit).Text ersetzen kann habe ich mir auch schon gedacht. Bin nur noch nicht ganz sicher wegen dem Z_Position.SelStart ! Will die Procedure ja für mehrer Edit's verwenden. Querbohrdurchmesser.Text Z_Position.Text Y_Versatz.Text Wirkdurchmesser.Text Bohrdurchmesser.Text Das sind se. Aber damit ich nicht bei jedem den ganze Kladeradatsch schreiben muß dachte ich mir wie mach ich es kürzer. Ne Function oder so aber da ist mir dann nach ner Weile die Puste ausgegangen. :mrgreen: Nen Beispiel fänd ich fein. :coder: Gruß Arma. |
Re: Wie Sender ermitteln ?
dann gibst du jedem edit im tag einen wert an und ermittelst diesen über
Delphi-Quellcode:
raik
(sender as Tedit).tag
|
Re: Wie Sender ermitteln ?
Delphi-Quellcode:
Diese Prozedur weist du einfach jedem Edit als OnKeyPress-Ereignis zu - fertig.
procedure TForm1.EditsKeyPress(Sender: TObject; var Key: Char);
var Position: Integer; Stellenpuffer: String; Zeichenpuffer: String; Stellenanzahl: Integer; begin Komma := False; Zeichenpuffer := (Sender as TEdit).Text; if Pos(',', Zeichenpuffer) > 0 then Komma := True; if (Komma = True) and (Key = #44) then Key := #0; if (Komma = True) and (Key = #46) then Key := #0; if (Komma = False) and (Key = #46) then Key := ','; if (Sender as TEdit).SelStart < Pos(',', (Sender as TEdit).Text) then else if Pos(',', Zeichenpuffer) > 0 then begin Stellenanzahl := Length(Zeichenpuffer); Position := Pos(',', Zeichenpuffer); Stellenpuffer := Copy(Zeichenpuffer, Position+1, Stellenanzahl-Position); Stellenanzahl := Length(Stellenpuffer); if Stellenanzahl = 3 then begin if (Key in [#44, #46, #48..#57]) then Key := #0 end; end; if (Sender as TEdit).SelStart < Pos('-', (Sender as TEdit).Text) then begin if (Key in [#48..#57]) then Key := #0; end; if Key = #13 then Key := #0; if not (Key in [#8, #44..#46, #48..#57]) then Key := #0; if(Sender as TEdit).SelStart = 0 then begin if Key = #45 then Key := #45; end; if (Sender as TEdit).SelStart > 0 then begin if Key = #45 then Key := #0 end; if Pos('-', (Sender as TEdit).Text) > 0 then begin if Key = #45 then Key := #0 end; end; Erklärung: Sender verweist immer auf das Objekt, das die Ereignisprozedur aufgerufen hat - in diesem Fall ein Edit. Nach einer Typumwandlung mit "as TEdit", "as TLabel", etc. kannst du dann auf alle Eigenschaften und Methoden des aufrufenden Objekts zugreifen. |
Re: Wie Sender ermitteln ?
Cool,
danke Niko. Wie es der Zufall will habe ich genau das was Du geschrieben hast selber gemacht. :coder: Wollte nur nochmal wegen dem .tag hier reinschauen weil ich das nicht ganz nachvollziehen kann. Das mit dem Sender ist ja eigentlich logisch. Besten Dank Arma. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:12 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