![]() |
class function - Rückgabewert immer False
Mahlzeit,
ich habe eine Form die beim Start nicht automatisch erstellt wird. Diese Form hat folgende class function:
Delphi-Quellcode:
Auf der Form sind zwei Buttons:
class function TfrmEditStartupEntry.Execute(AItem: TStartupItem):Boolean;
begin with TfrmEditStartupEntry.Create(nil) do try FStartupItem := AItem; //ModalResult := mrCancel; <-- auch das hilft nicht Result := ShowModal = mrOK; finally Free; end; end;
Delphi-Quellcode:
Wenn der OK-Button gedrückt wird sollte das Ergebnis von Execute True sein, beim Cancel Button False. Soweit so theoretisch... :x
procedure TfrmEditStartupEntry.btnCancelClick(Sender: TObject);
begin Close; end; procedure TfrmEditStartupEntry.btnOKClick(Sender: TObject); begin ModalResult := mrOK; Close; end; Der Rückgabewert ist immer False (bzw. True wegen dem not). So rufe ich den Dialog auf:
Delphi-Quellcode:
lstStartupAddEntry ist ein Event einer modifizierten ListView. ACancel und AItem werden initialisiert (ACancel := False;, AItem := TStartupItem.Create;) bevor das Ereignis ausgelöst wird.
procedure TfrmManager.lstStartupAddEntry(AItem: TStartupItem;
var ACancel: Boolean); begin ACancel := not TfrmEditStartupEntry.Execute(AItem); ShowMessage(BoolToStr(ACancel, true)); //zum testen weil der Debugger ACancel wegoptimiert.... end;
Delphi-Quellcode:
Was mache ich falsch?
TStartupListViewAddEvent = procedure(AItem: TStartupItem; var ACancel: Boolean) of object;
... procedure TStartupListView.Add; var NewEntry: TStartupItem; DoCancel: Boolean; begin if Assigned(FOnAddEntry) then begin NewEntry := TStartupItem.Create; DoCancel := False; OnAddEntry(NewEntry, DoCancel); if not DoCancel then begin FStartupList.Add(NewEntry); Refresh; end; end; end; |
Re: class function - Rückgabewert immer False
Ein modales Fenster wird geschlossen wenn der Eigenschaft ModalResult des Formulars ein Wert ungleich mrNone zugewiesen wird. Dies kann manuell erreicht werden oder durch Konfiguration der Eigenschaft ModalResult der Buttons.
Warum du zusätzlich noch Close aufrufst entzieht sich vernünftigen Gedanken und macht hier dein Problem aus. Auch solltest du bedenken kein OnClick Ereignis zu zuweisen, wenn der jeweilige Button in seiner Eigenschaft ModalResult einen Wert <> mrNone enthält. Näheres dazu verrät die ausgiebige Hilfe zum Thema ![]() ![]() ![]() ![]() Ansonsten kann ich nur nochmals davon abraten with/do Blöcke zu verwenden. |
Re: class function - Rückgabewert immer False
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:32 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