Scroll Label

0

Cze. Piszę swój pierwszy komponent :)
To komponent typu scroll Label.

na razie mam tylko takie zawiązki w osobnym projekcie i kilka pytań:

  1. Czy instrukcja sleep umieszczona w kodzie komponentu zatrzymuje TYLKO jego pracę, czy pracę całego programu?
  2. Dlaczego nie działa mi procedura po kolei:
if length(t)=length(napis) then
        begin
         label1.Caption:=napis[1]+label1.Caption;
         sleep(1000);

zmienna t to pomocniczy string(to, co w danym momencie widać na ekranie), a napis to zmienna przechowująca tekst do scrollowania

I teraz jest tak. Gdy mają taką samą długość, nie dodawała się pierwsza literka ze zmiennej napis, a dodaję tak:

i:=i-1;
insert(napis[i], t, 1);

Więc umieściłem instrukcję, którą widać wyżej(label1.caption..blablabla)

Ale z tego, co zauważyłem, to najpierw wstrzymuje pracę program, a potem dodaje tą literkę... Dlaczego tak się dzieje?

0

Jestem na 90% pewien, że sleep zatrzymuje pracę całego programu, więc chyba lepiej użyc timera

0

Albo timera, albo w wątku umiścić i go z poziomu komponentu stworzyć :)

0

Jeśli dobrze zrozumiałem to, dzieję się tak dlatego, że procedura Sleep nie dość że zatrzymuje aplikację to jeszcze ją blokuje, tak , że żadne inne działania nie przynoszą działania (dopiero po zakończeniu sleep'a)
Pierwsza literka dodaje się bo "zdąża przed sleppem a następne już nie.
Radziłbym tu użyć jak juz powiedział mój poprzednik - Wątku. W artykułach masz ich opis. :-)

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