Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi OnChange-Ereignis einer TStringliste abfangen!? (https://www.delphipraxis.net/25014-onchange-ereignis-einer-tstringliste-abfangen.html)

torud 29. Jun 2004 20:56


OnChange-Ereignis einer TStringliste abfangen!?
 
Hallo Wissende!

Ich befülle eine TStringliste und möchte nun das OnChange-Ereignis dieser Stringliste nutzen, weiss aber leider nicht wie ich das anstellen muss! In der Hilfe zu Delphi steht leider nicht wirklich etwas befriedgendes dazu. :twisted:

Ich würde mich über einen guten Tipp echt freuen!

Christian Seehase 29. Jun 2004 21:04

Re: OnChange-Ereignis einer TStringliste abfangen!?
 
Moin Tom,

Du kannst einfach der Eigenschaft OnChange eine Prozedur von Typ TNotifyEvent zuweisen:

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    //...
    procedure MyStringListChange(Sender: TObject);
    //...
  end;

implementation

// In welcher Methode das auch immer geschehen soll
  sl.OnChange := MyStringListChange;
//...

torud 29. Jun 2004 21:23

Re: OnChange-Ereignis einer TStringliste abfangen!?
 
Moin Moin Chris,

ich weiss, ich stell mich manchmal an, wie der erste Mensch, aber leider raff ich es nicht!

Also wenn sich die Stringliste ändert, möchte ich den gesamten Inhalt in eine Memo schreiben. Dein Tipp, zumidenst habe ich ihn so verstanden, löste aber nur ein OnChange-Ereignis bei einem anderen Control aus!?

Ich seh wohl den Wald vor lauter Bäumen nicht!?

Code:
type
  TCodemaker = class(TForm)
    //...
    procedure Memo1Change(Sender : TObject);
    //...

implementation

procedure TCodemaker.Memo1Change(Sender : TObject);
begin
   ShowMessage('hallo');
end;
Leider wird die MessageBox bisher nicht angezeigt, auch wenn sich der Inhalt der Stringliste 20 mal ändert und das passiert definitiv, da ich mir testhalber mal den Inhalt habe ausgeben lassen. Was mache ich also falsch!?

Christian Seehase 29. Jun 2004 21:28

Re: OnChange-Ereignis einer TStringliste abfangen!?
 
Moin Tom,

dann noch einmal ausführlicher:

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure MyStringListChange(Sender: TObject);
  private
    { Private-Deklarationen }
    sl  : TStringList;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
  sl.Add('Neue Zeile');
end;

procedure TForm1.MyStringListChange(Sender: TObject);
begin
  ShowMessage('Ich wurde verändert');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  sl := TStringList.Create;
  sl.OnChange := MyStringListChange;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  FreeAndNil(sl);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz