![]() |
Löschen Button nur einmal implementieren
Liste der Anhänge anzeigen (Anzahl: 1)
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: ![]() Ich möchte aber nicht 4 Mal, den Löschen Button implementieren sondern nur einmal. Ist das irgendwie möglich? Vielen Dank |
AW: Löschen Button nur einmal implementieren
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:
Mit Tags würde ich gar nicht erst anfangen wenn dir das in den Sinn kommt.
procedure TForm1.Button1Click(Sender: TObject);
begin if Sender = Button1 then Edit1.Clear else if Sender = Button2 then Edit2.Clear; end; |
AW: Löschen Button nur einmal implementieren
Wenn die Namensgebung so oder zumindest prinzipiell so bleibt:
Delphi-Quellcode:
Ist aber halt alles sehr unschön.
procedure TForm1.AllButtonsClick(Sender: TObject);
begin (FindComponent('Edit' + Copy((Sender as TButton).Name, 7, MaxInt)) as TEdit).Clear; end; 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; |
AW: Löschen Button nur einmal implementieren
Zitat:
|
AW: Löschen Button nur einmal implementieren
* 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 |
AW: Löschen Button nur einmal implementieren
Zitat:
Delphi-Quellcode:
procedure TForm1.AllButtonedEditsRightButtonClick(Sender: TObject);
begin if Sender is TButtonedEdit then TButtonedEdit(Sender).Clear; end; |
AW: Löschen Button nur einmal implementieren
Zitat:
Delphi-Quellcode:
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.
as
|
AW: Löschen Button nur einmal implementieren
Zitat:
|
AW: Löschen Button nur einmal implementieren
Beim erstellen der Komponente (mglw. im FormCreate-Event):
Delphi-Quellcode:
Dann die Löschbuttons im OnClick alle hiermit verknüpfen:
Edit1.Tag := Integer(Button1);
Edit2.Tag := Integer(Button2); Edit3.Tag := Integer(Button3);
Delphi-Quellcode:
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.
procedure TForm1.AllButtonedEditsRightButtonClick(Sender: TObject);
begin TEdit((Sender as TButton).Tag).Clear; end; Auch wäre eine
Delphi-Quellcode:
denkbar.
TObjectDictionary<TButton, TEdit>
|
AW: Löschen Button nur einmal implementieren
Das passt aber irgendwie nicht, müsste das nicht umgekehrt sein:
Button1.Tag := Integer(Edit1); usw. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:25 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