actionlist, action Erstellung automatisch/individuell

Rund um die LCL und andere Komponenten
Antworten
arturx
Beiträge: 140
Registriert: Fr 21. Nov 2008, 11:29
OS, Lazarus, FPC: Winux (L 1.0.6.xy FPC 2.6.z)
CPU-Target: 32/64Bit

actionlist, action Erstellung automatisch/individuell

Beitrag von arturx »

Ich möchte eine individualisierte actionlist erstellen mit einigen festinstallierten actions,
damit ich diese nicht immer wieder neu erstellen muss:
Also habe ich den constructor überschrieben :

Code: Alles auswählen

constructor tActionlist_indiv.create(aowner: tcomponent);
var vact : taction;
begin
  inherited create(aowner);
  name            := 'actlist_indiv';
  vact            := taction.Create(self);
  vact.name       := 'ok_act';
  vact.caption    := 'Ok';
  AddAction(vact);
end;
Nach Registrierung und installieren mittels eines Packages
wird die neue Action nach doppelclick der Actionlist auch brav im Obj-Inspector angezeigt.
Aber : will man diese Action z.B. einem Button zuweisen, dann "sieht" dieser sie nicht
(gemeint ist die Zuweisung der Action im Obj-Inspector des Buttons)
Was fehlt noch ?
kann man das überhaupt zur Designtime nutzbar machen ?

arturx
Beiträge: 140
Registriert: Fr 21. Nov 2008, 11:29
OS, Lazarus, FPC: Winux (L 1.0.6.xy FPC 2.6.z)
CPU-Target: 32/64Bit

Re: actionlist, action Erstellung automatisch/individuell

Beitrag von arturx »

Mittlerweile denke ich, dass das Problem besser zu lösen wäre durch
neue Standardactions
Aber : wie macht man das ?
wie kann man sie registrieren ?
Gibt es darüber Infos oder gar ein Tutorial ?

Socke
Lazarusforum e. V.
Beiträge: 3178
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: actionlist, action Erstellung automatisch/individuell

Beitrag von Socke »

arturx hat geschrieben:Aber : wie macht man das ?
wie kann man sie registrieren ?
Gibt es darüber Infos oder gar ein Tutorial ?
Ein Tutorial gibt es soweit ich weiß nicht. Ich hab mich damit vor einiger Zeit mal beschäftigt, kann zur Zeit aber keinen Quelltext dazu finden.
Am besten schaust du in den Quelltext der vorhandenen Actions rein und suchst auch mal nach irgendwelchen Funktionen, die zum Registrieren geeignet sein könnten (bspw. RegisterAction?)
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

arturx
Beiträge: 140
Registriert: Fr 21. Nov 2008, 11:29
OS, Lazarus, FPC: Winux (L 1.0.6.xy FPC 2.6.z)
CPU-Target: 32/64Bit

Re: actionlist, action Erstellung automatisch/individuell

Beitrag von arturx »

Mittlerweile habe ich rausbekommen, wie man Actions definiert :

Code: Alles auswählen

1. type txyaction = class(taction)
      protected
          function    HandlesTarget(Target: TObject): Boolean; override; // meist: result := (target is ....) and (target.focused)
          procedure   ExecuteTarget(Target: TObject); override; //   dosomething...
          procedure   updatetarget(target : tobject); override; // z.B.  target.enabled := ..., je nach Context
    end;
 
2.  registeractions   ('blahblah'{category},[txyaction],nil); // in der  registrierunit  {uses unit actnlist}
----------------------------------------------------------------

Leider gibt es einen actionlist-Bug in Lazarus, der u.a. in http://62.166.198.202/view.php?id=17969" onclick="window.open(this.href);return false; beschrieben ist.

In Zusammenhang mit diesem habe ich 2 Fragen :

1.In welcher release ist dieser Bug behoben ? oder,
. falls es noch keine passende release gibt, wer kennt die "hässliche" Stelle, die zu korrigieren ist ?

2.Wie bekommt man eine Stack-Trace (wie in dem link zu sehen) zur designtime ?

u-boot
Beiträge: 308
Registriert: Do 9. Apr 2009, 10:10
OS, Lazarus, FPC: Ubuntu 9.10 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 785..

Re: actionlist, action Erstellung automatisch/individuell

Beitrag von u-boot »

1.In welcher release ist dieser Bug behoben ?
steht im Bugtracker:

Code: Alles auswählen

2010-11-18 19:39 	Mattias Gaertner 	Fixed in Revision 	=> 28324
2.Wie bekommt man eine Stack-Trace (wie in dem link zu sehen) zur designtime ?
gibts automatisch wenn man von Konsole aus startet und lazarus dann abstürzt
Ubuntu 9.10 (L 0.9.28 FPC 2.4.x)

arturx
Beiträge: 140
Registriert: Fr 21. Nov 2008, 11:29
OS, Lazarus, FPC: Winux (L 1.0.6.xy FPC 2.6.z)
CPU-Target: 32/64Bit

Re: actionlist, action Erstellung automatisch/individuell

Beitrag von arturx »

u-boot hat geschrieben: 2.Wie bekommt man eine Stack-Trace (wie in dem link zu sehen) zur designtime ?
gibts automatisch wenn man von Konsole aus startet und lazarus dann abstürzt
Danke für die Antworten !!
Nun habe ich halt doch noch eine dumme Frage zum Schluss :
Wie startet man Lazarus denn von der Konsole aus ?

Socke
Lazarusforum e. V.
Beiträge: 3178
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: actionlist, action Erstellung automatisch/individuell

Beitrag von Socke »

arturx hat geschrieben:Wie startet man Lazarus denn von der Konsole aus ?
Unter Windows:
  • Startmenü -> Ausführen (geht auch üer Tastatur: Windows-Taste+R)
  • cmd als Befehl eingeben und bestätigen
  • Jetzt hast du eine Konsole; Im Konsolenfenster:
  • cd C:\pfad\zu\lazarus\ (Installationsverzeichnis, wo die lazarus.exe liegt) eingeben, Enter drücken
  • lazarus.exe eingeben und enter drücken
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

arturx
Beiträge: 140
Registriert: Fr 21. Nov 2008, 11:29
OS, Lazarus, FPC: Winux (L 1.0.6.xy FPC 2.6.z)
CPU-Target: 32/64Bit

Re: actionlist, action Erstellung automatisch/individuell

Beitrag von arturx »

Alles klar ! Danke für den Tip " Lazarus.exe im cmd-Fenster ausführen"
Darauf bin ich nicht gekommen ? !

Das cmd Fenster sorgt dafür, dass die errormeldung nicht gleich wieder weg ist.....
Ich werd mir für diese Fälle eine kleine batch Datei anlegen, die das noch etwas komfortabler macht
(und per Mausklick aktivierbar ist ) :

c:
cd \programme\lazarus
lazarus.exe
pause

Antworten