![]() |
Name des Verursachers eines Events?
An alle Delphi-Profis:
Wie ist es möglich, in einer Prozedur an den Namen des Event-Verursachers zu kommen? Ich denke, ich werde diese recht unbeholfene Formulierung meiner Frage mit einem konkreten Beispiel verdeutlichen:
Delphi-Quellcode:
Soweit so gut.
{...}
// In einer Schleife werden mehrere TextBox-Elemente erstellt, // welche die Namen menge0, menge1, menge2, ... tragen. nMenge := System.Windows.Forms.TextBox.Create; nMenge.Location := System.Drawing.Point.Create(0, LineNumber * LineSpace); // Hier wird der Name der TextBox festgelegt, // den ich später wieder ermitteln möchte: nMenge.Name := 'menge'+LineNumber.ToString; nMenge.Size := System.Drawing.Size.Create(55, 21); nMenge.Text := ''; nMenge.TextAlign := System.Windows.Forms.HorizontalAlignment.Center; LinePanel.Controls.Add(nMenge); // Jetzt wird das TextChanged-Ereignis der Box // mit der Prozedur Menge_TextChanged verknüpft: Include(nMenge.TextChanged, Menge_TextChanged); {...} Inc(LineNumber); {...} // Die Ereignisprozedur: procedure fRechnung.Menge_TextChanged(sender: System.Object; e: EventArgs); begin TEXTBOXNAME.Text := 'Irgendein Text'; end; Logischerweise würde ich aber gerne statt TEXTBOXNAME den richtigen Namen der TextBox erhalten, also im konkreten Fall: menge0, menge1, menge2, ... Dieser Name nützt mir aber als String auch nicht viel: Wie kann ich das Steuerelement ansprechen, wenn ich z.B. nur einen String mit dem Namen der TextBox habe? Kann mir jemand bei diesen Problemen behilflich sein? Ich probier schon den ganzen Tag herum... Vielen Dank! |
Re: Name des Verursachers eines Events?
Sollte doch im Parameter e drinne stehen diese Information.
|
Re: Name des Verursachers eines Events?
Den Namen des Event-Verursachers bekommst du natürlich über Sender (wie der Name schon sagt)
Diesen musst du erstmal auf das Object casten, welches du benötigst, also Beispielsweise TEdit(Sender).Name René |
Re: Name des Verursachers eines Events?
Äh ja. Sender natürlich. :oops:
|
Re: Name des Verursachers eines Events?
Mit TEdit(sender).Name geht das? Allright danke, werd ich probieren...
:lol: Greetz |
Re: Name des Verursachers eines Events?
Zitat:
Irgendsoein TDing dürfte es wohl nicht mehr geben. ;) |
Re: Name des Verursachers eines Events?
Wie jetzt? Ich nix verstehen, ich Anfänger...
Kannst du mir ein konkretes Codebeispiel liefern!? Bitte ? :cyclops: |
Re: Name des Verursachers eines Events?
Zitat:
|
Re: Name des Verursachers eines Events?
Zitat:
Ein Beispiel bitte?! Wie komm ich jetzt konkret auf den Namen und wie kann ich ihn als Objekt weiterverwenden? Danke |
Re: Name des Verursachers eines Events?
Hallo gerald,
als Win32 würde es so aussehen
Delphi-Quellcode:
wie das bei .Net aussieht, weiss ich nicht.
(sender as TTextBox).Name
|
Re: Name des Verursachers eines Events?
Oh danke kalmi01, endlich mal ein konstruktiver beitrag...
Das hilft schon mal. Und jetzt meine schlussfolgernde Frage: Wie geht das in .NET ? Wenns wer weiß, bitte danke... :angel2: Stimmt das in etwa so:
Delphi-Quellcode:
:coder2:
(sender as System.Windows.Forms.TextBox).Name
|
Re: Name des Verursachers eines Events?
Probier es doch aus.
|
Re: Name des Verursachers eines Events?
Zitat:
Zweiters wird dir nicht sonderlich gefallen. Das zu vermeiden gibts dann 2 Möglichkeiten: Name ist bereits in der Hirarchie in Control deklariert, d.h. sowas würde auch schon helfen:
Delphi-Quellcode:
noch ne kleine Abfrage dazu, damits im ernstfall doch nicht kracht:
(sender as System.Windows.Forms.Control).Name
Delphi-Quellcode:
Und falls du wirklich Spaß mit eigenen Klassen hast, die nicht von Control abgeleitet sind und trotzden nen Name haben, gibts sowas wie Reflections:
if (sender is Control) then
irgendeinstring := (sender as System.Windows.Forms.Control).Name;
Delphi-Quellcode:
greetz
//Benötigter Namespace: System.Reflection;
PropertyInfo MyNameProperty := sender.GetType().GetProperty("Name"); if (MyNameProperty = nil) then irgendeinstring := MyNameProperty.GetValue(sender, nil); Mike |
Re: Name des Verursachers eines Events?
Vielen Dank, funzt! :wink:
|
Re: Name des Verursachers eines Events?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:47 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