Einzelnen Beitrag anzeigen

Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#1

Modalresult bringt riesige Werte hervor! (21786000

  Alt 14. Apr 2007, 14:05
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.
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat