Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Problem mit Sender (https://www.delphipraxis.net/179006-problem-mit-sender.html)

Natcree 8. Feb 2014 06:59

Problem mit Sender
 
Hallo

Ich drücke einen Button und öffne Form2. In Form2 ist edit Feld. Werte die ich dort eingebe sollen
die Caption des gedrückten Buttons auf form1 Ändern. Wie Kriege ich das hin? Innerhalb der Form ist es kein problem aber formübergreifend Bekomme ich es nicht hin.

Kann mir jemand helfen

Hab mal hier was gebastelt

Delphi-Quellcode:
procedure TForm4.Edit1KeyPress(Sender: TObject; var Key: Char);
var
Button:Tbutton;
begin
  Button:=TButton(sender);
  if Key = #13 then
    begin
    key := #0;//schalt sound ab
    Button.caption:=edit1.text;//Button <--Hier soll der Sender rein
    edit1.Text:='';
    edit2.Text:='';
    close;
    end;
  end;

Natcree 8. Feb 2014 07:41

AW: Problem mit Sender
 
Habe was gefunden

Delphi-Quellcode:
TColorbutton(form1.findcomponent(edit2.text)).caption:=edit1.text;

jaenicke 8. Feb 2014 09:35

AW: Problem mit Sender
 
Spendiere deiner Form2 besser ein entsprechendes Event.
Delphi-Quellcode:
type
  TMyTextChangeEvent = procedure(Sender: TObject; const ANewMyText: String) of object;

TForm2 = class(TForm)
private
  FOnMyTextChange: TMyTextChangeEvent;
public
  property OnMyTextChange: TMyTextChangeEvent read FOnMyTextChange write FOnMyTextChange;
end;

// da wo du das in Form2 an Form1 geben willst
if Assigned(FOnMyTextChange) then
  FOnMyTextChange(Self, DeinNeuerText);

// Form1

TForm1 = class(TForm)
private
  procedure MyTextChangeEvent(Sender: TObject; const ANewMyText: String);
end;

procedure TForm1.MyTextChangeEvent(Sender: TObject; const ANewMyText: String);
begin
  // mach was mit ANewMyText
end;

// beim Aufruf von Form2:
Form2.OnMyTextChange := MyTextChangeEvent;
Form2.Show; //bzw. ShowModal
Dann muss dein Form2 dein Form1 nicht kennen.

himitsu 8. Feb 2014 10:51

AW: Problem mit Sender
 
Jupp, Entweder man übergibt beim Aufrufen der Form2 (echt blöder Name) entweder die Referenz des Buttons, aber dann ist man praktisch an Buttons gebunden und kann den Code notfalls nur mit Buttons wiederverwenden,
(wie z.B. bei der Verbindung von TDataSet und TDataSource, oder zwischen TImageList und irgendeiner Komponente, mit diesen Images-Properties)

oder man nutzt ein Callback-Event, so wie schon vorgeschlagen, und kann dann im Event machen was man will, während die Form2 nichts übr den Button wissen muß.


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