Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi ActionToolBar DataSet-Aktionen nächster,vorheriger (https://www.delphipraxis.net/86051-actiontoolbar-dataset-aktionen-naechster-vorheriger.html)

needatip 8. Feb 2007 10:42


ActionToolBar DataSet-Aktionen nächster,vorheriger
 
Hallo,
ich benutze auf einem Formular eine ActionToolbar, in der ich über einen Actionmanager Standaraktionen des DataSet einfüge.
Bei den Aktionen 'vorheriger' und 'nächster' kann man aber bei gedrückt gehaltener Maustaste jeweils nur einen Datensatz weiterspringen. Es findet kein Durchlaufen der Datenmenge statt.
Kann man das ändern wie bei einer TDBNavigator-Leiste, daß wenn man mit der Maustaste auf 'Pfeil rechts' draufbleibt, ein automatisches Weiterspringen der Datensätze gewährleistet ist?

marabu 8. Feb 2007 11:49

Re: ActionToolBar DataSet-Aktionen nächster,vorheriger
 
Hallo,

nicht direkt - denke ich. Macht das überhaupt Sinn?

Du benötigst dann eigentlich einen Zustandsschalter (Scrolling enabled) und keinen Aktionsschalter. Die Scroll-Funktion (Prior, Next) wird dann nicht im OnExecute der Action ausgeführt, sondern im OnUpdate. Zusätzlich musst du dann eine Verzögerung einbauen, damit das Auge folgen kann.

Grüße vom marabu

needatip 8. Feb 2007 14:26

Re: ActionToolBar DataSet-Aktionen nächster,vorheriger
 
Verstehe nicht ganz.
Ich brauch halt einfach in der Actiontoolbar zwei Aktionsbuttons mit weiter und zurück mit denen ich schnell durch die Datensätze scrollen kann!

marabu 9. Feb 2007 08:53

Re: ActionToolBar DataSet-Aktionen nächster,vorheriger
 
Hallo,

ich denke nach wie vor, dass ActionButtons keine geeignete Lösung für das Scrollen in einem Grid sind, aber technisch kannst du es so lösen: Den beiden ActionButtons für DatasetPrior und DataSetNext ordnest du diesen shared event handler zu:

Delphi-Quellcode:
procedure TDemoForm.DataSetScrollExecute(Sender: TObject);
begin
  Timer.Enabled := not Timer.Enabled;
  Timer.Tag := Integer(Sender);
end;
Timer.Enabled setzt du im OI auf False und das Intervall auf 50. Die Timer-Routine kann dann so aussehen:

Delphi-Quellcode:
procedure TDemoForm.TimerTimer(Sender: TObject);
begin
  if TObject(Timer.Tag) is TDataSetPrior
    then Table.Prior
    else Table.Next;
  with TAction(Timer.Tag) do
    Timer.Enabled := Enabled;
end;
So machst du aus den Schaltern im ActionToolBar Zustands-Schalter, die Aktionen sind in den Timer ausgelagert. Verstehst du mich jetzt?

Freundliche Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:07 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