AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Zur Laufzeit erzeugten Button das OnClick-Ereignis ausführen
Thema durchsuchen
Ansicht
Themen-Optionen

Zur Laufzeit erzeugten Button das OnClick-Ereignis ausführen

Ein Thema von NoName1 · begonnen am 27. Apr 2024 · letzter Beitrag vom 27. Apr 2024
Antwort Antwort
NoName1

Registriert seit: 8. Mär 2018
194 Beiträge
 
Delphi 11 Alexandria
 
#1

Zur Laufzeit erzeugten Button das OnClick-Ereignis ausführen

  Alt 27. Apr 2024, 08:23
Guten Tag,
Mit dem untenstehenden Code wird ein Panel mit einem Eingabefeld für die Erfassung eines Passwortes erstellt.
Die Anzeige des Passwortes soll durch einen Klick auf den Button sichtbar sein.
Wie kann dem Button pBPW die Procedure …ZeigePasswort zugewiesen werden?
Hat jemand einen Codeschnipsel aus dem dies ersichtbar ist?

Code:
var
  pPanel: TAdvPanel;
  pTop: Integer;
  pEdtPW: TAdvEdit;
  pBPW: TAdvGlowButton;
begin
  Result := '';
  pTop := 16;
  pPanel := TAdvPanel.Create(Self);
  try
    pPanel.Width := 393;
    pPanel.Height := 56;
    pPanel.Color := TAppConstants.GetAppliFarbe;
    pPanel.BorderStyle := VCL.Forms.bsSingle;
   
   // EditField ----
    pEdtPW := TAdvEdit.Create(pPanel);
    pEdtPW.Top := pTop;
    pEdtPW.Width := 256;
    pEdtPW.Left := 80;
    pEdtPW.Font.Size := 12;
    pEdtPW.Font.Style := [fsBold];
    pEdtPW.EditType := etPassword;
    pEdtPW.LabelCaption := 'Passwort';
    pEdtPW.LabelTransparent := True;
    pEdtPW.LabelPosition := lpLeftCenter;
    pEdtPW.LabelFont.Size := 10;
    pEdtPW.LabelFont.Style := [fsBold];
    pEdtPW.Parent := pPanel;

    // Button ---
    pBPW := TAdvGlowButton.Create(pPanel);
    pBPW.Top := 16;
    pBPW.Height := pEdtPW.Height;
    pBPW.Width := pEdtPW.Height;
    pBPW.Left := pEdtPW.Left + pEdtPW.Width + 1;
    pBPW.Caption := '...';
    pBPW.Parent := pPanel;
    pBPW.Tag := 1;
    pBPW.OnClick // wie geht es hier weiter??
   
--------------------------------------------------------   
procedure TfrmFNCSchriftverkehr.ZeigePasswort(aEdit: TAdvEdit);
begin
    if aEdit.EditType = etPassword then
      aEdit.EditType := etString
    else
      aEdit.EditType := etPassword;
end;
Vielen Dank für Eure Hilfen im Voraus.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.177 Beiträge
 
Delphi 12 Athens
 
#2

AW: Zur Laufzeit erzeugten Button das OnClick-Ereignis ausführen

  Alt 27. Apr 2024, 09:06
pBPW.OnClick := NameDeinerMethodeOderKlassenMethode; , welche zu z.B. in TfrmFNCSchriftverkehr deklariert hast.
Delphi-Quellcode:
type
  TfrmFNCSchriftverkehr = class(TForm)
  ...
  private
    procedure MeinClickEreigniss(Sender: TObject);
  end;
Und per Code Ausführen
pBPW.Click;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (27. Apr 2024 um 09:08 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.544 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Zur Laufzeit erzeugten Button das OnClick-Ereignis ausführen

  Alt 27. Apr 2024, 09:10
Spendiere Deinem Formular eine Methode mit der Signatur des OnClick-Events des Buttons. Diese kannst Du dann zuweisen. Ich vermute mal, dass das ein normaler TNotifyEvent ist, also könnte das so aussehen:
Delphi-Quellcode:
type
  TDeinForm = class(TForm)
  …
    procedure DoShowPassword(Sender: TObject);
  …
  end;



procedure TDeinForm.DoShowPassword(Sender: TObject);
begin
  // Code
end;


  
  DeinButton.OnClick := DoShowPassword;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
EdAdvokat

Registriert seit: 1. Mai 2016
Ort: Berlin
415 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Zur Laufzeit erzeugten Button das OnClick-Ereignis ausführen

  Alt 27. Apr 2024, 09:33
Delphi-Quellcode:
procedure TForm1.btnKeylockClick(Sender: TObject);
begin
  if (edtKey.PasswordChar='*') then
  begin
   (edtKey.PasswordChar:=#0)end else
    edtKey.PasswordChar:='*';
end;
sicher nicht die hochprofessionellste Lösung
Norbert
  Mit Zitat antworten Zitat
mmw

Registriert seit: 10. Sep 2019
Ort: OWL
324 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Zur Laufzeit erzeugten Button das OnClick-Ereignis ausführen

  Alt 27. Apr 2024, 09:34
Hallo,

noch eine Möglichkeit.

Delphi-Quellcode:
type
  TmypBPW = class
    private
    procedure OnClick(Sender: TObject);
  end;

var
   mypBPW:TmypBPW;

procedure TmypBPW.OnClick(Sender: TObject);

begin
 if advEdit1.EditType = etPassword then
      advEdit1.EditType := etString
    else
      advEdit1.EditType := etPassword;
end;


var
  pPanel: TAdvPanel;
  pTop: Integer;
  pEdtPW: TAdvEdit;
  pBPW: TAdvGlowButton;
 
begin
 .....
 .....
 pBPW.OnClick:=mypBPW.OnClick; // wie geht es hier weiter??

Gruß

Geändert von mmw (27. Apr 2024 um 14:50 Uhr) Grund: kopierfehler behoben
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.177 Beiträge
 
Delphi 12 Athens
 
#6

AW: Zur Laufzeit erzeugten Button das OnClick-Ereignis ausführen

  Alt 27. Apr 2024, 09:54
Was soll das doppelte := darstellen?

NEIN, jedenfalls nicht, wenn es in mypBPW keine Instanz gibt (abgesehn von der den beiden blöden globalen Variablen),
aber für gibt es ja was von Ratiopharm vom Hersteller.

Delphi-Quellcode:
type
  TmypBPW = class
  private
    class procedure DoClick(Sender: TObject);
  end;

pBPW.OnClick := TmypBPW.DoClick;
Und OnClick würde ich solche Prozeduren sowieso nicht.
Bezeichner für Event-Handler vs. Bezeichner für Event-Methoden.

Da hier Button und Edit in der Form liegen, gehört das Event dafür auch in diese Klasse rein.
Wenn aber dennoch in einer anderen Klasse, dann werden NIEMALS die globalen Variablen verwendet, sondern diese Instanz bekommt Zeiger auf diese Komponenten übergeben und/oder Ereignisse für den Rückruf.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
mmw

Registriert seit: 10. Sep 2019
Ort: OWL
324 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Zur Laufzeit erzeugten Button das OnClick-Ereignis ausführen

  Alt 27. Apr 2024, 10:00
Was soll das doppelte := darstellen?

NEIN, jedenfalls nicht, wenn es in mypBPW keine Instanz gibt (abgesehn von der den beiden blöden globalen Variablen),
aber für gibt es ja was von Ratiopharm vom Hersteller.

Delphi-Quellcode:
type
  TmypBPW = class
  private
    class procedure DoClick(Sender: TObject);
  end;

pBPW.OnClick := TmypBPW.DoClick;
Und OnClick würde ich solche Prozeduren sowieso nicht.
Bezeichner für Event-Handler vs. Bezeichner für Event-Methoden.

Da hier Button und Edit in der Form liegen, gehört das Event dafür auch in diese Klasse rein.
Wenn aber dennoch in einer anderen Klasse, dann werden NIEMALS die globalen Variablen verwendet, sondern diese Instanz bekommt Zeiger auf diese Komponenten übergeben und/oder Ereignisse für den Rückruf.


hallo,
das war ein Fehler beim kopieren.

der code muss natürlich entsprechend dem Programm angepasst werden.

Gruß
  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 00:06 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