![]() |
Label => "Change"
Hallo alle.
Ein Edit hat eine "Change" eingeschaft. Kann man soetwas "indirekt" auch irgentwie mit einem Label veranschaulichen? Ich habe einen Timer der überprüfen sollte ob das Caption eines Labels sich ändert. Nur habe ich keine Ahnung wie :? |
Re: Label => "Change"
Merke dir doch den Inhalt und überprüfe den mit dem aktuellen.
|
Re: Label => "Change"
mhh.. ich probiers grade mal
Edit: Hab nen kleinen Hänger, deswegen ist die Zeile X so doof:
Delphi-Quellcode:
if OldString = OldString then // Zeile X
begin // Zeile Y , nix tun weil OldString immernoch gleich OldString ist end else begin ListBox1.Items.Add(OldString) // Das hier könnte ja wenn Zeile X nicht doof wär bei zeile Y stehen end; |
Re: Label => "Change"
Zitat:
Delphi-Quellcode:
[...]
type TForm1 = class(TForm) [...] public { Public-Deklarationen } OldCaption : String; end; [...] procedure TForm1.TimerTimer(Sender: TObject); begin { Wenn Variable OldCaption noch nicht gesetzt } if OldCaption = '' Then OldCaption := Label1.Caption; { Neue Caption? } if Label1.Caption <> OldCaption Then Begin; ShowMessage('Label1.Caption wurde geändert!!!'); OldCaption := Label1.Caption; // Neue Caption der Variablen zuweisen... End; end; [...] end. |
Re: Label => "Change"
Hallo,
der Trick ist immer der gleiche - eine nachträgliche Erweiterung des betreffenden Controls:
Delphi-Quellcode:
Gruß Hawkeye
type
TLabel = class (StdCtrls.TLabel) private FOnChange : TNotifyEvent; procedure CMTextChanged (var Message: TMessage); message CM_TEXTCHANGED; public property OnChange: TNotifyEvent read FOnChange write FOnChange; end; TForm1 = class (TForm) {...} procedure FormCreate (Sender: TObject); private procedure LabelChanged (Sender: TObject); end; procedure TLabel.CMTextChanged (var Message: TMessage); begin inherited; if Assigned(FOnChange) then FOnChange (Self); end; procedure TForm1.FormCreate (Sender: TObject); begin Label1.OnChange := LabelChanged; end; procedure TForm1.LabelChanged (Sender: TObject); begin Self.Caption := (Sender as TLabel).Caption; end; |
Re: Label => "Change"
Delphi-Quellcode:
Ich blicke da nicht mehr durch..
procedure TForm1.Timer4Timer(Sender: TObject);
var a: Integer; begin // Wenn Variable OldSongTitel noch nicht gesetzt {if OldSongTitel = '' then begin }// OldSongTitel := InterpretTitel1.Caption; // end; // Neue Caption? if InterpretTitel1.Caption <> OldSongTitel then begin // ShowMessage('Titel wurde geändert!!!'); for a := 1 to 2 do begin ListBox1.Items.Add(OldSongTitel); end; // Neue Caption der Variablen zuweisen... OldSongTitel := InterpretTitel1.Caption; end; end; Der timer steht auf 1000 ms. Der Timer schreibt aber alle 1000ms OldSongTitel in die ListBox. Aber er soll das doch nur machen wenn InterpretTitel1.Caption sich geändert hat..... |
Re: Label => "Change"
Delphi-Quellcode:
procedure TForm1.Timer4Timer(Sender: TObject);
begin // Caption geändert? if InterpretTitel1.Caption <> OldSongTitel then ListBox1.Items.Add(OldSongTitel); // Caption merken OldSongTitel := InterpretTitel1.Caption; end; |
Re: Label => "Change"
ohne es auszuprobieren behaupte ich jetzt mal, dass er dann aber alle 500 ms (timerintrval) den Text ins listBox macht.
ich habs jetzt UMSTÄNDLICH aber anders gemacht: InterpretenText wird in ein edit gechrieben und wenn das edit 'gechanged' wird wid was in die listbox geschrieben.. so. umständlich, doof und blöd aber klappt. |
Re: Label => "Change"
Zitat:
|
Re: Label => "Change"
Was soll denn der Quatsch mit dem Timer :wall:
Hawkeye bietet doch die wunderbare Lösung. Also erstell dir eine neue Komponente, installier sie in ein Package und nutze diese neue Label. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 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