Thema: Delphi Wie Sender ermitteln ?

Einzelnen Beitrag anzeigen

Niko

Registriert seit: 23. Jun 2003
416 Beiträge
 
Delphi 2006 Professional
 
#13

Re: Wie Sender ermitteln ?

  Alt 23. Aug 2003, 18:29
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.
"Electricity is actually made up of extremely tiny particles called electrons, that you cannot see with the naked eye unless you have been drinking." (Dave Barry)
  Mit Zitat antworten Zitat