Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wie Sender ermitteln ? (https://www.delphipraxis.net/7841-wie-sender-ermitteln.html)

Armageddon 23. Aug 2003 09:22

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.

kiar 23. Aug 2003 11:31

Re: Wie Sender ermitteln ?
 
dann gibst du jedem edit im tag einen wert an und ermittelst diesen über
Delphi-Quellcode:
(sender as Tedit).tag
raik

Niko 23. Aug 2003 17:29

Re: Wie Sender ermitteln ?
 
Delphi-Quellcode:
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;
Diese Prozedur weist du einfach jedem Edit als OnKeyPress-Ereignis zu - fertig.

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.

Armageddon 23. Aug 2003 18:16

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.
Seite 2 von 2     12   

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