Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Prism Textbox das Click ereignis hinzufügen. (https://www.delphipraxis.net/58524-textbox-das-click-ereignis-hinzufuegen.html)

Taladan 10. Dez 2005 15:46

Re: Textbox das Click ereignis hinzufügen.
 
Zitat:

Zitat von Elvis
Code:
public class ClickableTextBox : TextBox
{
   [Browsable(true)]
   public new event EventHandler Click
   {
      add { base.Click += value; }
      remove { base.Click -= value; }
   }
}

Kann mir jemand das mal für Pascal übersetzen. Ich bekomme das nicht hin :cry:

Ich habe das gemacht, funktioniert jedoch nicht, da das ereignis nirgends ausgelöst wird.
Delphi-Quellcode:
  OnClick = procedure(sender: System.Object; e: System.Windows.Forms.MouseEventArgs) of Object;

  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;
  private
    { Private-Deklarationen }
    FClick : OnClick;
  public
    constructor Create; overload;
    constructor Create(Container: System.ComponentModel.IContainer); overload;
  published
    [Category('Aktion'),
    Description('Tritt auf, wenn das Steuerelement geklickt wird'),
    Browsable(true)]
    property Click : OnClick add FClick remove FClick;
  end;

Elvis 10. Dez 2005 20:14

Re: Textbox das Click ereignis hinzufügen.
 
Zitat:

Kann mir jemand das mal für Pascal übersetzen. Ich bekomme das nicht hin :cry:
Ich habe das gemacht, funktioniert jedoch nicht, da das ereignis nirgends ausgelöst wird.
Bist du dir sicher, dass du weißt was du und vor allem was der designer da für dich macht?
Hast du irgendwo in meinem Code in Feld gesehen? (Soviel C# sollte man schon erwarten können ;) )
Nein. Warum _sollte_ eigentlich klar sein: Ich will den Event des Vorgängers nur mit einem Attribute versehen.
Ihn also durchschleifen, nicht verstecken! Da er nicht virtuell deklariert ist, musste ich ihn verpacken und, wie gesagt, alle Zugriffe auf Click des Vorgängers durchreichen.
Das hier könnte gehen:
Delphi-Quellcode:
ClickableTextBox = class(Textbox)
public
  Browsable(true)]
  property Click;
end;
Geht es nicht, bräuchte man eine 1:1 Umsetzung meines C# Codes zu D.Net:
Delphi-Quellcode:
ClickableTextBox = class(Textbox)
private
  procedure add_Click(value : EventHandler);
  procedure remove_Click(value : EventHandler);
public
  Browsable(true)]
  property Click : EventHandler add add_Click remove remove_Click; reintroduce;
end;
...
procedure ClickableTextBox.add_Click(value : EventHandler);
begin
  include(inherited Click, value);
end;

procedure ClickableTextBox.remove_Click(value : EventHandler);
begin
  exclude(inherited Click, value);
end;
Es kann sein, dass der Compiler am reintroduce abkackt. (habe keinen D.Net compiler und es auch ewig nicht angefast)
Wenn er es nicht kapiert, nimm es einfach weg.

Zu meiner Frage oben: Das war keine rocket science und auch keine architektonische Meisterleistung. Es scheiterte schon am Deklarieren eines einzigen Events...

Taladan 11. Dez 2005 13:34

Re: Textbox das Click ereignis hinzufügen.
 
Danke dafür. Wobei nach meinen Tests man nur folgendes machem muß

Delphi-Quellcode:
ClickableTextBox = class(System.Windows.Forms.Textbox)
public
    [Category('Aktion'),
    Browsable(true)]
    property Click;
end;
Wichtig ist das beides, also Category und Browsable angegeben wird. An sonnsten wird das Event immer noch versteckt :-)

Elvis 11. Dez 2005 15:24

Re: Textbox das Click ereignis hinzufügen.
 
Zitat:

Zitat von Taladan
Wichtig ist das beides, also Category und Browsable angegeben wird. An sonnsten wird das Event immer noch versteckt :-)

Schaue mal ganz unten unter "misc.".
Man nimmt auch generell niemals deutsche Namen für Kategorien. Generell nimmt eigentlich niemals deutsche Bezeichner, Kommentare,... (wer weiß, wer den Code später bearbeiten muss...)
Nimm den englischen und er wird in jeder Sprache richtig dargestellt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:43 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