![]() |
Matrix-Effekt
Hi
Ich wusste es schon mal aber ich habs wieder vergessen... :oops: Wie kann ich in einem Label die Buachstaben hintereinander erscheinen lassen, also so wie bei der Stelle in Matrix wo auf Neos Monitor ''Wake up Neo...'' kommt. :gruebel: MITTERNACHTSFALKE |
Re: Matrix-Effekt
Hi!
Ich würde jetzt die Delay-Funktion von Luckie nehmen und dann einfach
Delphi-Quellcode:
schreiben
label1.Caption:='H';delay(1000);
label1.Caption:='Ha';delay(1000); label1.Caption:='Hal';delay(1000); label1.Caption:='Hall';delay(1000); label1.Caption:='Hallo'; Gruß Manuel P.S.: Juhu, mein erster Beitrag :wink: |
Re: Matrix-Effekt
HI
Ich weiß nicht ob es da eine bestimmte function gibt die dieses erledigt, aber man könnte dies mit einem Timer erledigen. Immer wenn eine bestimmte Zeit abgelaufen ist kann dann ein Buchstabe hinzugefügt werden. PS. Der Titel "Matrix-Effekt" ist etwas unpassend, weil man nicht sofort weiß um was es sich handelt. |
Re: Matrix-Effekt
Bei MähTricks-Effekt denke ich eher an diese kryptischen zeichen die vertikal über den Bildschirm rasseln bzw. die Neo sieht.
|
Re: Matrix-Effekt
Das geht auch:
Delphi-Quellcode:
procedure Buchstabieren(Text: string);
var i: integer; begin Label1.Caption := ''; for i := 1 to length(Text) do begin Label1.Caption := Label1.Caption + Text[i]; sleep(100); end; end; |
Re: Matrix-Effekt
Viel schönere Methode, wollt auch grad posten :-D
Leider lässt sich dieser coole "Matrix-Buchstaben-fallen-von-oben-runter-Effekt" nur mit einer Imagekomponente realisieren, ODER?! :?: |
Re: Matrix-Effekt
Hallo,
wie wäre es mit einer Komponente.
Delphi-Quellcode:
Ein Problem habe ich aber entdeckt und noch nicht gelöst. Wenn zur Designzeit Run auf True
unit JsMatrixLabel;
interface uses SysUtils, Classes, Controls, StdCtrls, ExtCtrls; type TJsMatrixLabel = class(TCustomLabel) private { Private-Deklarationen } FTimer : TTimer; FRun : Boolean; FInnerCaption : TCaption; FTimerEventCounter : Integer; function GetInterval: Integer; procedure SetInterval(const Value: Integer); procedure SetRun(const Value: Boolean); function GetCaption: TCaption; procedure SetCaption(const Value: TCaption); procedure TimerEvent(Sender : TObject); protected { Protected-Deklarationen } public { Public-Deklarationen } constructor Create(AOwner : TComponent); override; destructor Destroy; override; published { Published-Deklarationen } property Autosize; property Caption : TCaption read GetCaption write SetCaption; property Interval : Integer read GetInterval write SetInterval; property Run : Boolean read FRun write SetRun; end; procedure Register; implementation procedure Register; begin RegisterComponents('MyComps', [TJsMatrixLabel]); end; { TJsMatrixLabel } constructor TJsMatrixLabel.Create(AOwner: TComponent); begin inherited Create(AOwner); FTimer:=TTimer.Create(Self); FTimer.Enabled:=False; FTimer.OnTimer:=TimerEvent; FTimer.Interval:=500; end; destructor TJsMatrixLabel.Destroy; begin FTimer.Free; inherited Destroy; end; function TJsMatrixLabel.GetCaption: TCaption; begin Result:=inherited Caption; end; function TJsMatrixLabel.GetInterval: Integer; begin Result:=FTimer.Interval; end; procedure TJsMatrixLabel.SetCaption(const Value: TCaption); begin FInnerCaption:=Value; If (csDesigning in ComponentState) then inherited Caption:=Value else inherited Caption:=''; end; procedure TJsMatrixLabel.SetInterval(const Value: Integer); begin FTimer.Interval:=Value; end; procedure TJsMatrixLabel.SetRun(const Value: Boolean); begin If FRun<>Value then begin FRun:=Value; FTimer.Enabled:=FRun; FTimerEventCounter:=0; If FRun then inherited Caption:=''; If (csDesigning in ComponentState) and (Not FRun) then inherited Caption:=FInnerCaption end; end; procedure TJsMatrixLabel.TimerEvent(Sender: TObject); begin Inc(FTimerEventCounter); If FTimerEventCounter<=Length(FInnerCaption) then inherited Caption:=inherited Caption + FInnerCaption[FTimerEventCounter] else Run:=False; end; end. gesetzt wird zeigt das Label den gewünschten Effekt. Wenn der Effekt durchgelaufen ist, wird Run im Code wieder auf False gesetzt. Aber im OI bleibt True stehen. Erst wenn man eine andere Eigenschaft anwählt wird wird die Run Eigenschaft im OI aktualisiert. Das gilt analog für die Caption Eiegenschaft. Das Problem habe ich unter D5 Pro und D7 Pro.Weiß evt jemand warum das so ist ? |
Re: Matrix-Effekt
wozu das ganze tamtam?
du könnetst folgendes machen: Meine prozedur umbauen:
Delphi-Quellcode:
procedure Buchstabieren(Text: string; Wohin: TLabel; verz: integer;);
var i: integer; begin Wohin.Caption := ''; for i := 1 to length(Text) do begin Wohin.Caption := Wohin.Caption + Text[i]; sleep(verz); end; end; |
Re: Matrix-Effekt
Zitat:
P.S. mit sleep friert die Anwendung ein. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:25 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