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.