AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Change nur bei Sender=?

Ein Thema von mandumoal · begonnen am 27. Okt 2003 · letzter Beitrag vom 28. Okt 2003
Antwort Antwort
mandumoal

Registriert seit: 20. Feb 2003
124 Beiträge
 
Delphi 5 Professional
 
#1

Change nur bei Sender=?

  Alt 27. Okt 2003, 18:23
Hi!
Der Titel ist etwas irreführend aber mir ist kein besserer eingefallen.

Mein Problem:

Ich habe Edits die alle das selbe OnChange Ereignis haben.
Jetzt will ich aber dieses Ereignis nur ausführen wenn es nicht durch ein bestimmtes Objekt ausgelöst wurde.
Sprich, Ich will im OnChange abfragen wer das Ereignis ausgelöst hat.
Geht das überhaupt?
Hat das was mit Sender : TObject zu tun?

Ich habs mal so probiert:

Delphi-Quellcode:
 procedure TForm.EditChange(Sender : TObject);
begin
 if sender = lala(name einer kompo) then begin;
  machnix;
 end
 else begin
  machwas;
 end;
aber das geht hinten und vorne nicht...

Was mache ich hier falsch oder geht das so garnicht?

mfg mandumoal
  Mit Zitat antworten Zitat
Niko

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

Re: Change nur bei Sender=?

  Alt 27. Okt 2003, 18:44
Wenn lala wirklich eine der aufrufenden Komponenten ist, stimmt der Code (bis auf den Strichpunkt hinter begin).
"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
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Change nur bei Sender=?

  Alt 27. Okt 2003, 18:50
Hi,

versuchs mal mit

Delphi-Quellcode:
procedure TForm.EditChange(Sender : TObject);
begin
  if sender = Edit1 then // oder wie auch immer das 'besondere' Edit heisst :-D
  begin
    machnix;
  end else
  begin
    machwas;
  end;
end;
mfG
mirage228
David F.
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#4

Re: Change nur bei Sender=?

  Alt 27. Okt 2003, 19:24
Servus!
Angenommen du hast 2 Editfelder (Edit1 und Edit2) auf der Form (Form1) und ein OnChange-Ereignis (ich nenne es pauschal Change). Dann sieht der Code wie folgt aus:
Delphi-Quellcode:
procedure TForm1.Change(Sender: TObject);
begin
  If (Sender as TEdit).Name = 'Edit1then
  begin
    //Das was passiert wenn Sender Edit1 ist, hier rein
  end else
  If (Sender as TEdit).Name = 'Edit2then
  begin
    //Das was passiert wenn Sender Edit2 ist, hier rein
  end;
end;
mfg phlux

Edit: allerdings funzt Mirage seine Variante auch
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
mandumoal

Registriert seit: 20. Feb 2003
124 Beiträge
 
Delphi 5 Professional
 
#5

Re: Change nur bei Sender=?

  Alt 28. Okt 2003, 13:27
Hi!

Ich weiss nicht ob ihr mich falsch verstanden habt oder es gar nichth geht, aber:

Der Sender in euren Beispielen ist immer einer der auch ein onChange Ereignis hat.
Also entweder Edit1 oder Edit2 (bei mirage)

Aber bei mir wird die Änderung praktisch durch ein TStringGrid.OnSelectCell verursacht.
also es verändert die Edit.Texte.
Jetzt möchte ich aber das das was in OnChange steht nur passiert wenn die Texte von Hand verändert wurden.
Ich könnte das auch mit KeyDown KeyPress.. der Edits machen müsste aber dann soviele Zeichen abfragen, bei denen nichtss passieren soll.

Ich hoffe ihr habt es jetzt so verstanden wie ich es "vermitteln" wollte...

mfg mandumoal
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Change nur bei Sender=?

  Alt 28. Okt 2003, 13:46
Hai mandumoal,

du könntest einfach das OnChange ereigniss beim "betreten" des Edits entfernen und beim verlassen wieder verbinden:

Delphi-Quellcode:
procedure TForm1.Edit1Change(Sender: TObject); //OnChange für das Edit
begin
 //Mache was
end;

procedure TForm1.Edit1Enter(Sender: TObject); //Edit erhält den Focus
begin
 (Sender As TEdit).OnChange := nil;
end;

procedure TForm1.Edit1Exit(Sender: TObject); //Edit verliert den Focus
begin
 (Sender As TEdit).OnChange := Edit1Change;
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Change nur bei Sender=?

  Alt 28. Okt 2003, 13:59
oder...

Delphi-Quellcode:
procedure EditChange(Sender: TObject);
begin
  if not (Sender is TEdit) then Exit;
  // ....
end;
Wenn die Prozedur von einem nicht-edit ausgelöst wird, dann wird die prozedur sofort verlassen

mfG
mirage228
David F.
  Mit Zitat antworten Zitat
mandumoal

Registriert seit: 20. Feb 2003
124 Beiträge
 
Delphi 5 Professional
 
#8

Re: Change nur bei Sender=?

  Alt 28. Okt 2003, 14:14
Danke @ all !!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz