![]() |
Button einer anderen unit Enabled auf false setzen
Hallo und ein Frohes neues Jahr an alle
In der ersten Form benutze ich
Delphi-Quellcode:
und
var
Form1: Tform1; SenderForm1 : TObject;
Delphi-Quellcode:
procedure TForm1.Button(Sender: TObject);
begin SenderForm1 := TButton(sender); form2.ShowModal; end; In der zweiten Form
Delphi-Quellcode:
procedure TForm2.SchlieseForm2(sender : TObject);
begin if TButton(sender) = BOK then begin TButton(SenderForm1).Enabled := false; end; end; bekomme die Fehlermeldung Zugriffsverletzung TButton(SenderForm1).Enabled := false; mfg Winkelmesser |
Re: Button einer anderen unit Enabled auf false setzen
überprüf zuerst mal ob senderform1 überhaupt ein button ist:
Delphi-Quellcode:
procedure TForm2.SchlieseForm2(sender : TObject);
begin if TButton(sender) = BOK then begin if (SenderForm1 is TButton) then (SenderForm1 as TButton).Enabled := false else showmessage('nÖ!'); end; end; |
Re: Button einer anderen unit Enabled auf false setzen
Hallo,
erstmal: Warum nennst du eine Variable die hinterher wohl einen TButton enthalten soll SenderForm? Wenn ich das richtig verstehe dann soll wenn der Aufruf des zweiten Formulars mit OK beendet wurde der Button auf "Enabled = false" gesetzt werden, stimmts? Warum dann nicht einfach so:
Delphi-Quellcode:
Da "ShowModal" das Ergebnis liefert und auch nicht ohne Ergebnis zurückkehrt ist es nicht nötig den Button aus From2 heraus zu manipulieren.
procedure TForm1.Button(Sender: TObject);
var aButton: TButton; begin if Sender is TButton then begin aButton := TButton(sender); if form2.ShowModal = mrOK then begin aButton.Enabled := false; end; end; end; Ciao, Ralf |
Re: Button einer anderen unit Enabled auf false setzen
Danke dominikkv
Klappt super Hallo Alfi001 Die form1 besitzt 14 Buttons deren Caption je eine andere Maschinen Nummer enthalten Diese Caption wird in Form2 ausgelesen und mit weiteren Daten die in form2 zusammengetragen werden in eine DB gespeichert |
Re: Button einer anderen unit Enabled auf false setzen
Zitat:
Also in etwa so:
Delphi-Quellcode:
Auf diese Weise muss das Form2 nicht "wissen" dass die Nummer in der Caption eines TButtons gespeichert ist. Es ist immer schlecht, wenn ein Formular den Aufbau des jeweils aufrufenden Formulars kennen muss damit etwas funktioniert.
Form2 := TForm2.Create(Self);
Form2.MaschinenNummer := (Sedner as TButton).Caption; if Form2.ShowModal = mrOK then begin //... end; Form2.Free; Was ist, wenn du irgendwann entscheidest, dass kein TButton sondern ein TBitButton oder TSpeedButton benutzt wird? Dann musst du überall die Stellen im Source suchen, wo per Casting auf den "Sender" zugegriffen wird und mindestens eine Stelle wird meistens vergessen, was dann erst zur Laufzeit auffällt. Ciao, Ralf |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:10 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-2025 by Thomas Breitkreuz