theo hat geschrieben: Sa 27. Jan 2024, 12:58
Was ist "Status"?
 
Status ist eine Variable vom Typ 
Integer.
MmVisual hat geschrieben: Sa 27. Jan 2024, 13:05
Normalerweise gibt es für modale Formulare den "ModalResult".
Wenn man ein TButton drückt kann man in den Eigenschaften vom Button direkt einstellen mit welchem Rückgabewert das Formular geschlossen werden soll.
Es braucht dazu genu 0 Codezeilen.
 
Ungeachtet dessen, und da wirst du mit zustimmen, muß man eine Form mit der Anweisung 
Formxy.Close; oder ähnliches schließen. Und selbst wenn ich zB die Form 
User Schließe, welche aus der Main aufgerufen wird, muß ich in der *User* irgendwo bei Klick auf einen Button, den Rückgabewert für den 
ModalResult definieren.
Ich weiß ja nicht, ob deine Kristallkugel weiß, mit welchem Rückgabewert dein Form arbeitet, wenn in selbst gebauten keine Rückgabe definierst.
Meine kann es auf jedenfall nicht außer ich verwende MessageDLG und/oder TTaskDLG  
  
 
 Ich hoffe du verstehst die Ironie in diesem Vergleich 
wennerer hat geschrieben: Sa 27. Jan 2024, 13:47
Hallo Maik,
zu ModalResult ist hier ein schönes Beispiel:
viewtopic.php?p=68128#p68128
Wichtig ist du musst im OI beim TButton das Ergebnis für ModalResult einstellen.
Viele Grüße
Bernd
 
Im Kern genau das, mit dem ich ja auch arbeite.
Hier mal das Form.
Code: Alles auswählen
unit _user;
{$mode objfpc}{$H+}
interface
uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  StdCtrls, Menus, registry,
  uconst, udata, ufunction, uvar;
type
  { TUserForm }
  TUserForm                                      = class(TForm)
    button1                                      : tbutton;
    button2                                      : tbutton;
    button3                                      : tbutton;
    checkbox1                                    : tcheckbox;
    ComboBox1                                    : TComboBox;
    Label1                                       : TLabel;
    procedure button1click(sender :tobject);
    procedure button2click(sender :tobject);
    procedure checkbox1change(sender :tobject);
    procedure formcreate(sender :tobject);
    procedure formshow(sender :tobject);
  private
    { private declarations }
  public
    { public declarations }
    // Klassenaufrufe
    Benutzer                                     : TUser;
end;
var
  UserForm                                       : TUserForm;
implementation
{$R *.lfm}
uses main, _user_setting;
{ TUserForm }
procedure tuserform.formcreate(sender :tobject);
begin
  benutzer                                       := TUser.Create;
end;
procedure tuserform.formshow(sender :tobject);
var
  a                                              : Byte;
  Count                                          : Integer = 0;
  Reg                                            : TRegistry;
begin
  Reg                                            := TRegistry.Create;
  Status                                         := 0;
  try
    Reg.RootKey                                  := HKeyUser;
    Reg.OpenKeyReadOnly(ListKey);
    repeat
      Inc(Count);
      until Reg.ValueExists('Benutzer: ' + IntToStr(Count)) = False;
    for a := 0 to Count-1 do
      if (ComboBox1.Items[a] <> Benutzer.fUserList[a]) then
        ComboBox1.Items.Add(Benutzer.fUserList[a]);
    finally
      Reg.Free;
  end;
end;
procedure tuserform.button1click(sender :tobject);
var
  Reg                                            : TRegistry;
begin
  Benutzer.fUsed                                 := ComboBox1.Text;
  UserCount                                      := IntToStr(ComboBox1.Items.IndexOf(ComboBox1.Text));
  Form1.User.User;
  if DefaultUser then begin
    Reg                                          := TRegistry.Create;
    try
      Reg.RootKey                                := HKeyUser;
      Reg.OpenKey(ProgKey + PathDelim + 'Mastersettings', True);
      Reg.WriteString('User:', UserCount);
    finally
      reg.Free;
      end;
    end;
  LoadUser;
  CloseWithOK(UserForm);
end;
procedure tuserform.button2click(sender :tobject);
begin
  Close;
end;
procedure tuserform.checkbox1change(sender :tobject);
begin
  if Checkbox1.Checked then DefaultUser              := True
  else DefaultUser                                   := False;
end;
end.