AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Löschen Button nur einmal implementieren

Ein Thema von delphicoder123 · begonnen am 6. Mär 2019 · letzter Beitrag vom 8. Mär 2019
Antwort Antwort
Seite 1 von 2  1 2   
delphicoder123

Registriert seit: 14. Feb 2019
71 Beiträge
 
#1

Löschen Button nur einmal implementieren

  Alt 6. Mär 2019, 23:04
Hallo,
ich habe mehrere Editfelder mit dazugehörigem Löschen Button.
Wenn auf Button1 geklickt wird, dann soll Edit1 gelöscht werden etc.
Das Formular sieht so aus:

https://www.delphipraxis.net/attachm...1&d=1551913338

Ich möchte aber nicht 4 Mal, den Löschen Button implementieren sondern nur einmal.
Ist das irgendwie möglich?

Vielen Dank
Miniaturansicht angehängter Grafiken
1.png  
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
910 Beiträge
 
#2

AW: Löschen Button nur einmal implementieren

  Alt 6. Mär 2019, 23:09
Auf die Schnelle würde ich sowas hier vielleicht machen. Ungetestet. Kommt alles in eine Procedure oder in "einen button click event" den alle Buttons bekommen

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
 if Sender = Button1 then
  Edit1.Clear
 else if Sender = Button2 then
  Edit2.Clear;
end;
Mit Tags würde ich gar nicht erst anfangen wenn dir das in den Sinn kommt.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
6.773 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Löschen Button nur einmal implementieren

  Alt 7. Mär 2019, 00:28
Wenn die Namensgebung so oder zumindest prinzipiell so bleibt:
Delphi-Quellcode:
procedure TForm1.AllButtonsClick(Sender: TObject);
begin
  (FindComponent('Edit' + Copy((Sender as TButton).Name, 7, MaxInt)) as TEdit).Clear;
end;
Ist aber halt alles sehr unschön.

Alternative, wenn auch optisch anders, wäre die Buttons rauszunehmen und mehrere TButtonedEdit Controls, deren linker oder rechter Button (mit passendem Bildchen) zum Löschen verwendet wird:
Delphi-Quellcode:
procedure TForm1.AllButtonedEditsRightButtonClick(Sender: TObject);
begin
  (Sender as TButtonedEdit).Clear;
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
EmWieMichael

Registriert seit: 28. Mär 2012
59 Beiträge
 
#4

AW: Löschen Button nur einmal implementieren

  Alt 7. Mär 2019, 06:38
...
Mit Tags würde ich gar nicht erst anfangen wenn dir das in den Sinn kommt.
Weil?
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
509 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Löschen Button nur einmal implementieren

  Alt 7. Mär 2019, 07:02
* Ein Frame - je einer für ein Edit+Löschbutton
* Erzeugung von Edit+Button im Code und 4x geeignet aufrufen
* Im OnEnter des TEdits einen Button erzeugen + im OnExit wieder zerstören
* Einen Button unsichtbar anlegen, Im OnEnter des TEdits passend verschieben + sichtbar machen, im OnExit unsichtbar machen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.300 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#6

AW: Löschen Button nur einmal implementieren

  Alt 7. Mär 2019, 07:11
Zitat:
Alternative, wenn auch optisch anders, wäre die Buttons rauszunehmen und mehrere TButtonedEdit Controls, deren linker oder rechter Button (mit passendem Bildchen) zum Löschen verwendet wird:
Dann würde ich aber auf Nummer sicher gehen:
Delphi-Quellcode:
procedure TForm1.AllButtonedEditsRightButtonClick(Sender: TObject);
begin
  if Sender is TButtonedEdit then
    TButtonedEdit(Sender).Clear;
end;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
6.773 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Löschen Button nur einmal implementieren

  Alt 7. Mär 2019, 07:46
Dann würde ich aber auf Nummer sicher gehen:
Na ja, damit wird ein etwaiger Fehler einfach ignoriert. Mit dem as Konstrukt kommt wenigstens eine Exception, wenn sowas unerwartet passiert. Das ist dann ein Zeichen, daß das Programm sich nicht so verhält, wie beabsichtigt - und das will ich in der Regel wissen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
4.147 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8

AW: Löschen Button nur einmal implementieren

  Alt 7. Mär 2019, 08:06
Zitat:
nicht so verhält, wie beabsichtigt - und das will ich in der Regel wissen
  Mit Zitat antworten Zitat
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
338 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#9

AW: Löschen Button nur einmal implementieren

  Alt 7. Mär 2019, 11:21
Beim erstellen der Komponente (mglw. im FormCreate-Event):

Delphi-Quellcode:
Edit1.Tag := Integer(Button1);
Edit2.Tag := Integer(Button2);
Edit3.Tag := Integer(Button3);
Dann die Löschbuttons im OnClick alle hiermit verknüpfen:

Delphi-Quellcode:
procedure TForm1.AllButtonedEditsRightButtonClick(Sender: TObject);
begin
  TEdit((Sender as TButton).Tag).Clear;
end;
Auch nicht die beste Lösung, aber eine. Das beste und einzig saubere wäre aber, entweder 3 Events (so würd ich es meistens machen), oder ein von TButton abgeleitetes Control, das selber eine "Edit"-Property besitzt und diese dann leert.
Auch wäre eine TObjectDictionary<TButton, TEdit> denkbar.
Dennis
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.548 Beiträge
 
Delphi 6 Enterprise
 
#10

AW: Löschen Button nur einmal implementieren

  Alt 7. Mär 2019, 11:28
Das passt aber irgendwie nicht, müsste das nicht umgekehrt sein:

Button1.Tag := Integer(Edit1);
usw.
Ralph
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 05:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf