![]() |
Abfragen welche Action ausgelöst wurde
habe auf meiner Hauptform eine TActionList mit 2 Actions
1. Bearbeiten 2. Hinzufügen ich möchte dies in einer nebenform abfragen. welche action ausgelöst wurde. nur so springt er mir über meine if-abfrage und gibt an das in sender nichts drin steht.
Delphi-Quellcode:
im vorraus vielen dank
if Sender = fMain.TAEinfuegen then
begin if fMain.TB1.Locate('Seriennummer', EdtSerial.Text, []) = False then begin EString := 'INSERT INTO ....'; end else begin ShowMessage('Seriennummer ist schon vorhanden!'); ModalResult := mrNone; Exit; end; end else if Sender = fMain.TABearbeiten then begin EString := 'UPDATE ....'; end; fMain.DBCom.CommandText := EString; fMain.DBCom.Execute; lg missi |
Re: Abfragen welche Action ausgelöst wurde
Hi missi,
wenn du deine Actions einem MenuItem oder Button zuweist, dann wird dort im Ereignis OnClick() deine Action ausgeführt - der Sender ist dann die Komponente, deren OnClick-Handler getriggert wurde. Wenn du eine Art Command-Log schreiben willst, dann mache das doch gleich im Action-Code. Grüße vom marabu |
Re: Abfragen welche Action ausgelöst wurde
:wiejetzt:
also *verpeiltschaut* ich rufe durch die actionlist die gleiche nebenform auf und die form soll abfragen woher der klick kam wenn man im nebenform auf ok klickt. versteh nicht ganz wie ich das in die actionlist integrieren soll bzw im source. |
Re: Abfragen welche Action ausgelöst wurde
Durch deine ActionList rufst du gar nichts auf - du hast Actions, und die werden normalerweise von einer Benutzerin ausgelöst, indem die irgendwelche Bedien-Elementen deiner Programmoberfläche mit der Maus traktiert.
Im Action-Code, der bei dir wahrscheinlich auf fMain beheimatet ist, erledigst du was zu erledigen ist. Wie wird denn der von dir gezeigte Code auf der NebenForm aktiviert? marabu |
Re: Abfragen welche Action ausgelöst wurde
durch meine ok button von der nebenform
Delphi-Quellcode:
procedure TfmAddSNr.BtnAddSerialClick(Sender: TObject);
var EString: String; begin if (EdtSerial.Text <> '') and (EdtDescription.Text <> '') then begin if MEdtDate.Text <> ' . . ' then begin try StrToDate(MEdtDate.Text); except ShowMessage('Ungültiges Datum wurde angegeben!'); ModalResult := mrNone; Exit; end; if Sender = fMain.TAEinfuegen then begin if fMain.TB1.Locate('Seriennummer', EdtSerial.Text, []) = False then . . . end; |
Re: Abfragen welche Action ausgelöst wurde
Wenn ich das richtig erkenne, dann hast du ein Hauptfenster fMain mit einer ActionList und Actions, sowie einen Dialog fmAddSNr mit Eingabefeldern und zwei Buttons zum Hinzufügen und Ändern eines Datensatzes.
Dem Schalter BtnAddSerial hast du per Object Inspector einen Handler für das Ereignis OnClick() zugewiesen. Wie soll da eine Beziehung zur Action fMain.TAEinfuegen existieren? Normalerweise entwirfst du deine Forms und Dialogfenster, packst deine Bedienelemente drauf und eine ActionList. Wenn du den Code für deine Actions geschrieben hast, dann ordnest du die Action den gewünschten Bedienelementen (Schalter, MenuItem, ...) zu. Du darfst dann keine OnClick-Handler erstellen. Eigentlich hätte ich erwartet, dass du TAEinfuegen der Eigenschaft BtnAddSerial.Action zuweist, aber ich sehe nur den OnClick-Handler. Du musst dich entscheiden, eines oder das andere, beides geht nicht. Die "bessere" Lösung ist auf jeden Fall die Action, und in deren Code brauchst du nicht zu fragen, ob sie getriggert wurde... marabu |
Re: Abfragen welche Action ausgelöst wurde
versteh zwar nur die hälfte aber habe eine lösung gefunden
Delphi-Quellcode:
ich übergebe einfach meiner funktion die id 1 || 0 und weiss daher woher er kam.
procedure TfMain.TABearbeitenExecute(Sender: TObject);
begin fmAddSNr.EdtSerial.Text := TB1.FieldByName('Seriennummer').AsString; fmAddSNr.EdtDescription.Text := TB1.FieldByName('Bezeichnung').AsString; fmAddSNr.MEdtDate.Text := TB1.FieldByName('Ablaufdatum').AsString; fmAddSNr.ShowModal; if fmAddSNr.ModalResult = mrOK then UpdateData(1) end; procedure TfMain.TAEinfuegenExecute(Sender: TObject); begin fmAddSNr.ShowModal; if fmAddSNr.ModalResult = mrOK then UpdateData(0) end; what für nen chaos lach thx nochmal für die schnelle antwort lg ela |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz