TabControl OnChange wird nicht aufgerufen.

Rund um die LCL und andere Komponenten
Antworten
siro
Beiträge: 730
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

TabControl OnChange wird nicht aufgerufen.

Beitrag von siro »

Hallo zusammen,

Ich habe ein TabControl aus der Rubrik Common Controls auf meinem Formular.
Dann habe ich eine Ereignis Procedure für OnChange geschrieben.
Wenn ich jetzt das Tab anklicke bzw. wechsele, dann wird auch ordnungsgemäß OnChange aufgerufen.

Aber wenn ich im Programm TabIndex setze, dann wird NICHT OnChange aufgerufen.
Es springt zwar oben der Reiter optisch um, aber OnChange wird nicht ausgeführt.

Siro

Code: Alles auswählen

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ComCtrls, StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    TabControl1: TTabControl;
    procedure Button1Click(Sender: TObject);
    procedure TabControl1Change(Sender: TObject);
  private

  public

  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.TabControl1Change(Sender: TObject);
begin
  caption:=IntToStr(TabControl1.TabIndex);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  TabControl1.TabIndex:=2;   // Reiter springt um, aber TabControl1Change wird NICHT aufgerufen
end;

end.
project1.zip
(126.63 KiB) 63-mal heruntergeladen
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: TabControl OnChange wird nicht aufgerufen.

Beitrag von theo »

Steht in den Lazarus 1.8.0 release notes
https://wiki.freepascal.org/Lazarus_1.8 ... ex_by_code

siro
Beiträge: 730
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Re: TabControl OnChange wird nicht aufgerufen.

Beitrag von siro »

Ich danke Dir Theo,

man muss also selber Hand anlegen. Wenns man es dann weis ist es ja gut.
Für mich sah das eindeutig nach einem Fehler aus mit "erheblichen Nebenwirkungen" für mein Programm....
Also selbst OnChange aufrufen.

Siro
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: TabControl OnChange wird nicht aufgerufen.

Beitrag von Winni »

Hi!

Nein - in dem Link von Theo waren sie zu geizig für zweimal "or":

Entweder Du setzt nboDoChangeOnSetIndex in den Options ODER Du rufst selber onChange ODER ... Native speakers verstehen das anscheinend auch so.

Setze einfach nboDoChangeOnSetIndex in den Options und Du erhälst das alte Verhalten wieder zurück - Bevor es Delphi-compatible wurde.

Den gleichen Ärger hatte ich mit TPageControl.

Und ansonsten: Immer wenn es unlogisch wird, ist es Delphi kompatible.

Winni

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: TabControl OnChange wird nicht aufgerufen.

Beitrag von fliegermichl »

Winni hat geschrieben:
Mi 10. Mär 2021, 11:19
Und ansonsten: Immer wenn es unlogisch wird, ist es Delphi kompatible.
Jo. Das ist wie ne Dampflok an den ICE hängen damit das rückwärtskompatibel ist.

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: TabControl OnChange wird nicht aufgerufen.

Beitrag von PascalDragon »

fliegermichl hat geschrieben:
Mi 10. Mär 2021, 11:32
Winni hat geschrieben:
Mi 10. Mär 2021, 11:19
Und ansonsten: Immer wenn es unlogisch wird, ist es Delphi kompatible.
Jo. Das ist wie ne Dampflok an den ICE hängen damit das rückwärtskompatibel ist.
Aber es schaut toll aus. :lol:
FPC Compiler Entwickler

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: TabControl OnChange wird nicht aufgerufen.

Beitrag von Winni »

PascalDragon hat geschrieben:
Mi 10. Mär 2021, 13:37

Aber es schaut toll aus. :lol:
Hi!

Ja - sieht klasse aus!
Ist aber leider nur eine fake, weil die Bahn sich beim ICE nicht an ihre eigenen Speifikationen gehalten hat und inkompatible Kupplungen eingebaut hat. Darüber haben Mitte der 80er schon alle mit dem Kopft geschüttelt.

Winni
der mit 8 Jahren bereits "Eisenbahnminister" war

siro
Beiträge: 730
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Re: TabControl OnChange wird nicht aufgerufen.

Beitrag von siro »

Problem gelöst :mrgreen:
Delphi_Comp.jpg
Delphi_Comp.jpg (12.31 KiB) 1377 mal betrachtet
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: TabControl OnChange wird nicht aufgerufen.

Beitrag von PascalDragon »

Winni hat geschrieben:
Mi 10. Mär 2021, 13:48
Ja - sieht klasse aus!
Ist aber leider nur eine fake, weil die Bahn sich beim ICE nicht an ihre eigenen Speifikationen gehalten hat und inkompatible Kupplungen eingebaut hat. Darüber haben Mitte der 80er schon alle mit dem Kopft geschüttelt.
Ja, ich weiß, leider... :cry:
FPC Compiler Entwickler

Antworten