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:
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;
und bekomme für "b" folgendes ergebnis, wenn ich auf den Button mit der Eigenschaft
ModalResult mrOk ( = 1)...
Zitat:
---------------------------
Devproject
---------------------------
21786000
---------------------------
OK
---------------------------
Hier der ganze (!) Code des anderen Fensters:
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.