Dodawanie po znaku (string)

0

Chcę stworzyć animację w StatusBar rozszerzania się stringu po znaku.
Mam string1, z tekstem i chcę aby string2 przyjmował to znak po znaku, np. string1 = 'dom';
string2 ='d' --> string2 = 'do' --> string2 = 'dom'
Dodawani realizowane timerem. Ma coś takiego, ale to nie wyświetla znak po znaku tylko pokazuje kolejne (czyli mi nie pasuje):

procedure TForm1.Timer2Timer(Sender: TObject);
var
z     : string;
te    : string;
begin
Label15.Caption:=IntToStr(StrToInt(Label15.Caption)+1);
te:='Tekst do animacji';
z:= z + te[StrToInt(Label15.Caption)];
with StatusBar1 do
        Panels[Panels.Count-1].Text:=z;
end; 

Label15 ma stan startowy '0'.

Z góry dziękuję za pomoc

0

copy()

0

Aby kod zadziałał musisz na początku zmiennej "z" przypisać łańcuch pusty. Niestety nie możesz tego zrobić wewnątrz procedury zdarzenia OnTimer.

Trochę przebudowałem kod, więc dostosuj go do swoich potrzeb

var
  z, te: string;
  i, ile: Integer;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
  Inc(i);
  Label15.Caption:= IntToStr(i);
  z:= z + te[i];
  with StatusBar1 do Panels[Panels.Count-1].Text:= z;
  if i = ile then Timer2.Enabled:= false;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  z:= '';
  te:= 'Tekst do animacji';
  i:= 0;
  ile:= Length(te);
  Timer2.Enabled:= true;
end;
1

pod private dodaj

private
  FLetter: Integer;
  FText: string;

w OnCreate formy

begin
  FLetter := 1;
  FText := 'Tekst do animacji';
end;

w OnTimer

begin
  if FLetter > Length(FText) then
  begin
    FLetter := 1;
    Panels[Panels.Count-1].Text := '';
  end;
  Panels[Panels.Count-1].Text := Panels[Panels.Count-1].Text + FText[FLetter];
end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1