![]() |
Delphi-Version: 5
OnChange Event Handler: wie muss die Procedure heissen und wie weise ich richtig zu?
Hallo Leute,
ich versuche mich gerade an einem Wiedereinstieg in die Materie der Pascal-Programmierung (unter Lazarus/fpc), bin aber offenbar mittlerweile komplett vernagelt/verkalkt. Ich moechte 5 nebeneinanderliegende ScrollBars ueber eine Array derselben erzeugen. Wie schreibe ich jetzt den Eventhandler for den OnChange Event ? Als Procedure TForm1.ScrollBarChange und wie weise ich korrekt zu ? In der Change Procedure soll mit den Min- und Max-Werte des Scrollbars gerechnet werden... Vielen Dank im voraus fuer die Hilfestellung.
Delphi-Quellcode:
unit Unit1;
{$mode objfpc}{$H+} interface uses Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls; type { TForm1 } TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private public end; var Form1: TForm1; scrbr: Array of TScrollBar; implementation {$R *.lfm} { TForm1 } procedure TForm1.FormCreate(Sender: TObject); var i: Integer; begin SetLength(scrbr,5); for i:=0 to 4 do begin scrbr[i]:=TScrollBar.Create(self); scrbr[i].Parent:=self; scrbr[i].Top:=90; scrbr[i].Width:=250; scrbr[i].Height:=30; scrbr[i].Left:=i*40; scrbr[i].Kind:=sbVertical; scrbr[i].Min:=0; scrbr[i].Max:=100; scrbr[i].OnChange:=ScrollBarChange; // <- da hake ich end; end; end. |
AW: OnChange Event Handler: wie muss die Procedure heissen und wie weise ich richtig
Wie die Methode heißt, ist völlig egal, wichtig ist, dass sie zum Event passt:
1. Es muss eine Methode sein, keine Prozedur. 2. Sie muss die passenden Parameter haben. Welche das sind, kannst Du in der Deklaration des Event-Typs nachsehen. Beispiel:
Delphi-Quellcode:
Zugewiesen wird sie einfach als
type
TNotifyEvent = procedure(Sender: TObject) of object;
Delphi-Quellcode:
Component.Event := Eventhandler;
EDIT: Ich sehe gerade, dass Du anscheinend Lazarus benutzt. Da ist das mit der Zuweisung anders:
Delphi-Quellcode:
Component.Event := @Eventhandler;
|
AW: OnChange Event Handler: wie muss die Procedure heissen und wie weise ich richtig
Danke, hat geholfen. Das mit dem Zuweisungsklammeraffen bei Lazarus war mir komplett entfallen. Da fall ich in 5 Jahren bestimmt wieder darauf rein :)
|
AW: OnChange Event Handler: wie muss die Procedure heissen und wie weise ich richtig
Wenn ich es richtig interpretiere hakt es beim Zuweisen verschiedener Events in der Schleife. Man kann ja nicht schreiben
Delphi-Quellcode:
Als Workaround könnte man in der for-Schleife mittels Case-Anweisung auf den Wert von i prüfen und ein entsprechendes Event zuweisen:
ComponentArray[i].Eventhandler := Eventhandler + [i]
Delphi-Quellcode:
Eine einfachere/universellere Lösung fällt mir gerade nicht ein.
CASE i of
1: ComponentArray[i].Eventhandler := EventHandler1; 2: ComponentArray[i].Eventhandler := EventHandler2; end; Frohe Weihnachten meinerseits, |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:53 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