Frage zu Actionlist

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Benutzeravatar
kpmais
Beiträge: 42
Registriert: Di 26. Mai 2020, 08:51
OS, Lazarus, FPC: Winux (L 2.0.12, FPC 3.2.0; Debian/Win7)
CPU-Target: x86-64
Wohnort: Saarlouis/Saarland

Frage zu Actionlist

Beitrag von kpmais »

Wenn ich eine Actionlist dynamisch erstelle und damit arbeite, überprüft die Liste ob die vergebenen Namen eindeutig sind oder obliegt mir für die Eindeutigkeit zu sorgen?
Ich habe leider bei der Recherche keine Hinweise gefunden und möchte mich nicht alleine auf das Experiment verlassen.

Danke im voraus

Klaus Peter

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Frage zu Actionlist

Beitrag von Socke »

kpmais hat geschrieben:
Di 18. Mai 2021, 18:10
Wenn ich eine Actionlist dynamisch erstelle und damit arbeite, überprüft die Liste ob die vergebenen Namen eindeutig sind oder obliegt mir für die Eindeutigkeit zu sorgen?
Ich bau mir in solchen Fällen ganz kleine Beispielanwendungen um das Verhalten zu überprüfen.
Wenn du die Eigenschaft "Name" der einzelnen Actions meinst: lass den am besten leer. Er müsste ansonsten eindeutig sein. Wenn du die Frage so stellst, wirst du andere Referenzen auf die jeweiligen Actions haben um sie z.B. zuzuweisen.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

aro
Beiträge: 130
Registriert: Di 26. Jul 2011, 19:58
OS, Lazarus, FPC: Deepin 20.2; Lazarus 2.0.0 + dfsg-2
CPU-Target: 64Bit

Re: Frage zu Actionlist

Beitrag von aro »

Hallo,

von der Sache her ist es schon Unfug zu versuchen, zwei Aktionen mit dem gleichen Namen in die Liste aufzunehmen.

Du kannst ja versuchen in einem Testprogramm zwei mal den gleichen Namen einzugeben und dann über Breakpoints anschauen, was in der Liste wirklich gelandet ist.
Ich würde die Sache selbst so überwachen, das so eine Situation gar nicht erst auftreten kann.

Benutzeravatar
kpmais
Beiträge: 42
Registriert: Di 26. Mai 2020, 08:51
OS, Lazarus, FPC: Winux (L 2.0.12, FPC 3.2.0; Debian/Win7)
CPU-Target: x86-64
Wohnort: Saarlouis/Saarland

Re: Frage zu Actionlist

Beitrag von kpmais »

Natürlich ist das prinzipiell Unfug.
Es geht um dynamische Listen, die während der Laufzeit immer mal wieder ein Element zugewiesen bekommen.
Und da frage ich mich, ob die Liste das selber erkennt und mir im Vorfeld (also bevor etwas 'passiert') einen Hinweis gibt, oder ob ich mich konsequent darum kümmern muss.

aro
Beiträge: 130
Registriert: Di 26. Jul 2011, 19:58
OS, Lazarus, FPC: Deepin 20.2; Lazarus 2.0.0 + dfsg-2
CPU-Target: 64Bit

Re: Frage zu Actionlist

Beitrag von aro »

Hallo,

Du hast genau zwei Möglichkeiten :

1. weiter im Kaffeesatz rumstochern

oder

2. endlich ein kleines Testprogramm schreiben und sehen was passiert.

Ich bin für Variante 2

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Frage zu Actionlist

Beitrag von wp_xyz »

Die Eigenschaft "Name" braucht man eigentlich nur im Designmode für den Objektinspektor. Wenn du zur Laufzeit Actions erzeugst, lasse einfach "Name" leer, gib der Action aber einen Variablenname, so dass du immer auf sie zugreifen kannst. Zum Beispiel so:

Code: Alles auswählen

procedure TForm1.FormCreate(Sender: TObject);
var
  acLoad: TAction;  // oder evtl. sogar in Formularklasse deklarieren, wenn die du Action auch außerhalb dieser Routine brauchst.
begin
  acLoad := TAction.Create(ActionList1);
  acLoad.Caption := 'Laden';
  acLoad.Hint := 'Datei laden';
  acLoad.ImageIndex := 10;
  acLoad.OnExecute := @DateiLadenHandler;
  acLoad.Name := '';  // Keinen Namen vergeben
  acLoad.ActionList := ActionList1;

  ToolButton1.Action := acLoad;
  MenuItem1.Action := acLoad;
end;

Antworten