Einzelnen Beitrag anzeigen

mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
640 Beiträge
 
Delphi 10.1 Berlin Professional
 
#28

AW: dynamisch erzeugte Forms richtig freigeben

  Alt 3. Jul 2015, 11:27
Hallo,

es geht wieder zurück zur ursprünglichen Problematik und da hab ich in #7 schon geschrieben

Zitat:
Also weg mit allen BorderIcons und Alt+F4 abfangen, und gut isses. Dann wird auch sauberer Code daraus.
Damit ist es so was von egal, ob ich das Fenster modal anzeige, wobei in dem Fall vom ursprünglichen Programmierer modale Anzeige aus welchen Gründen auch immer nicht gewollt war, oder ob das Fenster normal angezeigt wird. Und wenn ich das Verhalten öfter brauche, vererbe ich das Fenster einfach. Ich hab noch keine Uni von innen gesehen, und mir das Programmieren selber beigebracht. Meine Kenntnisse sind daher mit Euren nicht vergleichbar, aber das wäre für mich - in diesem speziellen Fall - wiederverwendbarer, flexibler, leicht nachvollziehbarer und lesbarer Code. Wir wissen ja, Code wird öfter gelesen als geschrieben

Delphi-Quellcode:
unit Foo;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TFoo = class(TForm)
    ButtonSave: TButton;
    ButtonClose: TButton;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure ButtonSaveClick(Sender: TObject);
    procedure ButtonCloseClick(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

implementation

{$R *.dfm}

procedure TFoo.ButtonCloseClick(Sender: TObject);
begin
  // wenn Daten verändert, dann User fragen, ob er speichern möchte
  // und dann schließen
  Close;
end;

procedure TFoo.ButtonSaveClick(Sender: TObject);
begin
  // Daten speichern
end;

procedure TFoo.FormClose(Sender: TObject; var Action: TCloseAction);
begin // Formular freigeben
  Action := caFree;
end;

procedure TFoo.FormCreate(Sender: TObject);
begin // Formulareigenschaften vorbereiten
  BorderIcons := [];
  KeyPreview := true;
end;

procedure TFoo.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin // Schließen des Fensters mit [Alt] + [F4] verhindern
  if ((ssAlt in Shift) and (Key = VK_F4)) then Key := $0000;
end;

end.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  with TFoo.Create(Application) do ShowModal;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  with TFoo.Create(Application) do Show;
end;
Gruss Otto
Wenn du mit Gott reden willst, dann bete.
Wenn du ihn treffen willst, schreib bei Tempo 220 eine SMS
  Mit Zitat antworten Zitat