AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Eine Action für alle Forms

Ein Thema von Int3g3r · begonnen am 25. Jan 2019 · letzter Beitrag vom 25. Jan 2019
Antwort Antwort
Int3g3r

Registriert seit: 28. Nov 2018
Ort: Schweiz
118 Beiträge
 
Delphi 10.3 Rio
 
#1

Eine Action für alle Forms

  Alt 25. Jan 2019, 09:46
Guten Tag,

Ich habe folgende Ausgangslage:

Ein Datenmodul namens actions
in diesem habe ich eine Actions-List draufgeknallt und eine Action namens "Schliessen" definiert.

Ein Formular namens Main
Ein Formular namens Mitarbeiter

Nun möchte ich mit der Action "Schliessen" sowohl das Formular Mitarbeiter als auch das Formular Main schliessen können.

Lässt sich dies Bewerkstelligen ? Wenn ja wie ?
Ist dies auch mit einem Create möglich ? Wenn ja wie ?

Ich muss ja den Formularnamen dem Close voranstellen somit müsste ich für jeden Button eine einzelne Routine machen die genau das selbe ausführen.
Das Ziel ist es eine Close Action zu haben aber diese für alle Buttons benutzen zu können.

Delphi-Quellcode:
mitarbeiter.close;
VARIABLE.close;
Gruss,
Int3g3r
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#2

AW: Eine Action für alle Forms

  Alt 25. Jan 2019, 10:26
Versuch mal

Delphi-Quellcode:
  
  Screen.ActiveForm.Close;
Was meinst du mit
Ist dies auch mit einem Create möglich ?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Int3g3r

Registriert seit: 28. Nov 2018
Ort: Schweiz
118 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Eine Action für alle Forms

  Alt 25. Jan 2019, 10:42
Was meinst du mit
Ist dies auch mit einem Create möglich ?
Ich möchte auch eine Action "Öffnen" und diese erstellt mir das Formular Mitarbeiter oder das Formular ABCD oder Formular ABDEFF.

Einen solchen Block unabhänging vom "frm_Mitarbeiter" machen.

Delphi-Quellcode:
      frm_Mitarbeiter := Tfrm_Mitarbeiter.create(self);
   try
      frm_Mitarbeiter.ShowModal;
   finally
      frm_Mitarbeiter.Free;
   end;
Des weiteren wäre sowas auch für Qrys Hilfreich.
Ich möchte folgendes auch unabhänig vom frm_Mitarbeiter.

Delphi-Quellcode:
procedure Tdm_actions.dbMitarbeiterBearbeitenExecute(Sender: TObject);
begin
      frm_Mitarbeiter.qryMitarbeiter.Edit;
end;

Besten Dank

Zitat:
Screen.ActiveForm.Close;
Perfekt genau das was ich Suche ! Danke!

Geändert von Int3g3r (25. Jan 2019 um 10:47 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#4

AW: Eine Action für alle Forms

  Alt 25. Jan 2019, 11:40
Ich möchte auch eine Action "Öffnen" und diese erstellt mir das Formular Mitarbeiter oder das Formular ABCD oder Formular ABDEFF.
Solange die Action keine Information über die Form-Class hat, die erzeugt werden soll, kann das nichts werden. Das Screen.ActiveForm kann es ja in diesem Fall nun mal nicht sein.

Keine Ahnung, ob das in deinem Fall passt, aber so könnte es gehen:

Delphi-Quellcode:
procedure TForm369.Action1Execute(Sender: TObject);
var
  cmp: TComponent;
  frm: TForm;
  frmClass: TFormClass;
  mode: Integer;
begin
  mode := 0;
  cmp := (Sender as TBasicAction).ActionComponent;
  if cmp <> nil then begin
    mode := cmp.Tag;
  end;
  case mode of
    1: frmClass := Tfrm_Mitarbeiter;
    2: frmClass := Tfrm_ABCD;
    3: frmClass := Tfrm_ABDEFF;
  else
    raise Exception.Create('kein Mode gesetzt!');
  end;
  frm := frmClass.Create(Application);
  try
    frm.ShowModal;
  finally
    frm.Free;
  end;
end;
Bei den Buttons oder MenuItems, die mit der Action verknüpft sind, setzt du einfach den Tag entsprechend auf 1, 2 oder 3.

Zusätzlich würde ich noch die case-Anweisung auslagern und durch eine FormClass Registrierung ersetzen um das ganze etwas zu entkoppeln. Das ist aber ein separates Thema.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz