![]() |
Modalresult bringt riesige Werte hervor! (21786000
Ich wollte über ShowModal und ModalResult ein Fenster steuern. Soweit die Theorie... Soweit gut...
Aber jetzt kommt die Umsetzung! Also lasse ich das Fenster anzeigen:
Delphi-Quellcode:
und bekomme für "b" folgendes ergebnis, wenn ich auf den Button mit der Eigenschaft ModalResult mrOk ( = 1)...
procedure TfrmSettings.FillVarIn(memo : TMemo);
var b : Integer; begin if memo is TMemo then begin frmVarsBox := TfrmVarsBox.Create(nil); try b := frmVarsBox.ShowModal(false); if b = mrOk then begin memo.Text := Copy(memo.Text, 1, memo.SelStart) + frmVarsBox.selectedVariable + Copy(memo.Text, memo.SelStart + memo.SelLength, Length(memo.Text) - memo.SelStart + memo.SelLength); end; Showmessage(IntToStr(b)); finally frmVarsBox.Free; end; end; end; Zitat:
Delphi-Quellcode:
unit uVarsBox;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; const helps : array [0..8] of string = ({...}); contents : array [0..8] of string = ({...}); type TfrmVarsBox = class(TForm) lbVars: TListBox; bOk: TButton; bClose: TButton; lHelp: TLabel; procedure FormShow(Sender: TObject); procedure lbVarsClick(Sender: TObject); private function getSelected: string; procedure SetHelp; public property selectedVariable : string read getSelected; function ShowModal(entryVars : Boolean) : Integer; end; var frmVarsBox: TfrmVarsBox; implementation {$R *.dfm} procedure TfrmVarsBox.FormShow(Sender: TObject); begin lbVars.ItemIndex := 0; SetFocusedControl(lbVars); SetHelp; end; function TfrmVarsBox.getSelected: string; begin Result := lbVars.Items[lbVars.ItemIndex]; end; procedure TfrmVarsBox.lbVarsClick(Sender: TObject); begin SetHelp; end; procedure TfrmVarsBox.SetHelp; begin lHelp.Caption := helps[lbVars.ItemIndex]; end; function TfrmVarsBox.ShowModal(entryVars: Boolean): Integer; begin ModalResult := 0; // <!--- Warum?! inherited ShowModal; end; end. |
Re: Modalresult bringt riesige Werte hervor! (21786000
Und der Compiler meldet sich wirklich nicht mit einem Hinweis, dass der Rückgabewert deines ShowModals undefiniert sein könnte -.- ?
|
Re: Modalresult bringt riesige Werte hervor! (21786000
Nein... Tut es nicht!
|
Re: Modalresult bringt riesige Werte hervor! (21786000
Dann habe ich es dir eben jetzt gesagt :stupid: . Ohne Zuweisung von Result läuft logischerweise überhaupt nüschts.
|
Re: Modalresult bringt riesige Werte hervor! (21786000
Die Buttons haben ja ein Result zugewiesen! Das reicht eigentlich...
|
Re: Modalresult bringt riesige Werte hervor! (21786000
Zitat:
dann hast du die Warnstufe vermutlich abgeschaltet. Result deines Showmodals wird kein Wert zugewiesen. Modalresult ergibt den Rückgabewert des ursprünglichen (inherited) ShowModals, aber den wertest du ja nicht aus. Hier ist tatsächlich die Zahl der Denkfehler grösser als die Zeilenzahl, und leider gleichen sie sich nicht gegenseitig aus. Mit Result := inherited ShowModal müsste es eigentlich wie beabsichtigt funktionieren, aber ich habe natürlich den Rest des Codes nicht untersucht. Gruss Reinhard |
Re: Modalresult bringt riesige Werte hervor! (21786000
Zitat:
Modalresult ergibt den Rückgabewert des ursprünglichen (inherited) ShowModals, aber den wertest du ja nicht aus. Hier ist tatsächlich die Zahl der Denkfehler grösser als die Zeilenzahl, und leider gleichen sie sich nicht gegenseitig aus. Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:38 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