![]() |
Textbox das Click ereignis hinzufügen.
Wie man einer Textbox ein Click ereignis zur Laufzeit hinzufügt, ist mir bekannt. Doch da es sich um viele viele Textboxen handelt, möchte ich gerne eine eigene Komponente schreiben, wo man dies bereits über den Objectinspektor machen kann. Wie mache ich das?
Das ich dieses Erben muß ist mir klar, aber er findet angeblich nie etwas in der Basisklasse. Hier mein bisheriger Versuch
Delphi-Quellcode:
unit CTalasTextBox;
interface uses System.Windows.Forms, System.Drawing, System.Collections, System.ComponentModel; type TalasTextBox = class(System.Windows.Forms.Textbox) {$REGION 'Vom Designer verwalteter Code'} strict private /// <summary> /// Erforderliche Designervariable. /// </summary> Components: System.ComponentModel.Container; /// <summary> /// Erforderliche Methode zur Unterstützung des Designers - /// ändern Sie die Methode nicht mit dem Quelltext-Editor /// </summary> procedure InitializeComponent; {$ENDREGION} strict protected /// <summary> /// Ressourcen nach der Verwendung bereinigen /// </summary> procedure Dispose(Disposing: Boolean); override; procedure OnClick(sender: System.Object; e: System.EventArgs); override; private { Private-Deklarationen } public constructor Create; overload; constructor Create(Container: System.ComponentModel.IContainer); overload; published Property Click : OnClick; end; implementation uses System.Globalization; {$AUTOBOX ON} {$REGION 'Vom Windows Form-Designer erzeugter Code'} /// <summary> /// Erforderliche Methode zur Unterstützung des Designers - /// ändern Sie die Methode nicht mit dem Quelltext-Editor /// </summary> procedure TalasTextBox.InitializeComponent; begin Self.Components := System.ComponentModel.Container.Create; end; {$ENDREGION} constructor TalasTextBox.Create; begin inherited Create; // // Erforderlich für die Unterstützung des Windows Forms-Designers // InitializeComponent; // // TODO: Fügen Sie nach dem Aufruf von InitializeComponent Konstruktorcode hinzu. // end; constructor TalasTextBox.Create(Container: System.ComponentModel.IContainer); begin inherited Create; // // Erforderlich für die Unterstützung des Windows Forms-Designers // Container.Add(Self); InitializeComponent; // // TODO: Fügen Sie nach dem Aufruf von InitializeComponent Konstruktorcode hinzu. // end; procedure TalasTextBox.Dispose(Disposing: Boolean); begin if Disposing then begin if Components <> nil then Components.Dispose(); end; inherited Dispose(Disposing); end; end. |
Re: Textbox das Click ereignis hinzufügen.
Mir ist nicht wirklich klar, was du machen willst. Man kann doch Events schon im OI zuweisen und wozu willst du Click redefinieren?
Click ist in TextBoxBase so definiert:
Code:
[EditorBrowsable(EditorBrowsableState.Always), Browsable(true)]
public event EventHandler Click; // von Control.Click |
Re: Textbox das Click ereignis hinzufügen.
Richtig. Aber bei einer TextBox gibt es das Event Click im Objectinspekotor nicht. Dort gibt es nur DoubleClick, aber kein Click. Zuordnen kann man jedoch ein Click verhalten wärend der Laufzeit für eine Textbox. Warum zeigt der OI dieses Event nicht an?
|
Re: Textbox das Click ereignis hinzufügen.
Zitat:
Delphi-Quellcode:
das müsste wenn ich mich nicht irre ohne Probleme gehen... (und erspart viel Code :D)
published
property OnClick; EDIT: Ich habe grad das Gefühl das ich ziemlich sicher Mist geredet hab :oops: :mrgreen: |
Re: Textbox das Click ereignis hinzufügen.
Bekomme zwei Fehlermeldungen.
'OnClick' wurde vorher nicht als Property deklariert Read und Write-Klausel erwartet, aber 'end' gefunden |
Re: Textbox das Click ereignis hinzufügen.
Zitat:
Zitat:
|
Re: Textbox das Click ereignis hinzufügen.
Liste der Anhänge anzeigen (Anzahl: 1)
Hmmm ganz schön viel Code um einfach ein Event mit epnem anderen Attribut zu versehen.... :gruebel:
Code:
Es gibt übrigens einen guten Grund, warum das Event für TextBox im Designer versteckt wurde:
public class ClickableTextBox : TextBox
{ [Browsable(true)] public new event EventHandler Click { add { base.Click += value; } remove { base.Click -= value; } } } Es gibt nämlich kaum gute Gründe, warum man das Event für TextBox im Designer besetzen sollte. (Mir fällt nichtmal ein einziger ein... :gruebel: ) btw: Dass es wirklich so easy geht sieht du wenn das Li.. äh wenn du auf den screenie schaust. ;) |
Re: Textbox das Click ereignis hinzufügen.
Also so leid es mir tut, aber ich verstehe den Sinn darin nicht.
Ich habe auch bei einer System.Windows.Forms.TextBox ein Click - Event. @Elvis: Wie hast du das gemacht, dass du den Code in Zeile 9 bekommst, ohne dass dir der Designer entgegen springt? Eine zweite Datei angelegt? Habs gerade im Reiter gesehen: ClickableTextBox.cs Grüße Faux |
Re: Textbox das Click ereignis hinzufügen.
Zitat:
|
Re: Textbox das Click ereignis hinzufügen.
Zitat:
Edit: Nur um sicher zugehen habe ich mir gerade nochmal das alte #d gesaugt und es damit probiert: Es klappt natürlich. ;) Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:20 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 by Thomas Breitkreuz