Jak zrobić aby wartość wyświetlana np. na TEdit aktualizowała się automatycznie?
Automatycznie, to znaczy po jakiej czynności? Samo z siebie nic się nie zaktualizuje.
Gdy zmienia się LabeledEdit1.Caption chce aby rownież zmieniał się wizualnie. Bez żadnych kliknięć, klawiszy itp.
Dokładnie to chodzi o to, żeby automatycznie zmieniały się liczby na komponencie, tak jak w zegarku.
Też coś może napiszę raz na kilka miesięcy tutaj :) Zatem na logikę w miejscu kodu gdzie zmieniasz LabeledEdit kodem to zmieniaj TEdit. Jak wiadomo komponenty te mają też zdarzenie OnChange i tam to można zrobić. A jeżeli to ma być zmiana cykliczna co jakiś odstęp czasu to powinien wystarczyć Tobie komponent TTimer (w zakładce System) i zdarzenie OnTimer.
Tylko z tego co zauważyłem żeby cokolwiek się zmieniło na TEdit to musze tam za każdym razem coś wpisać i np. takie coś
procedure TForm1.Timer1Timer(Sender: TObject);
begin
x:=x+1;
Edit1.Text := inttostr(x);
end;
Wywala błąd po uruchomieniu. Chyba, że źle coś robie?
Gdy zmienia się LabeledEdit1.Caption chce aby rownież zmieniał się wizualnie.
LabeledEdit
nie posiada właściwości Caption
... Opisz dokładnie problem.
Podałem to jako przykład. Chodzi o to, że np odpalam Timer i chce aby wartości wyświetlały sie na jakimś komponencie i aktualizował automatycznie.
Napiszesz w końcu konkretnie o co chodzi, czy mamy marnować czas przez Twoje przykłady?
Nic nie będzie się działo automatycznie - musisz napisać kod, żeby wykonywał to co chcesz aby wykonywał; Jeżeli po zmianie tekstu w komponencie TEdit
ma zostać wykonany jakiś kod to oprogramuj zdarzenie TEdit.OnChange
.
Mam
procedure TForm1.Edit1Change(Sender: TObject);
begin
Edit1.Text := inttostr(x);
end;
i żeby cokolwiek się tam zmieniło musze tam coś cały czas wpisywać, a ja chcę aby zmieniało się automatycznie
To nie jest wytłumaczenie problemu.
Problem jest taki, że odpalam program, timer tez sie odpala i powinny w TEdit zmieniac sie liczby?
Mnie pytasz? To Ty masz problem, a nie ja, więc opisz sensownie to co chcesz zrobić; Póki co nie wiem nawet w czym problem, więc jak mam Ci cokolwiek doradzić?
Chcę aby wartości w polu Tedit zmieniały się automatycznie co 1 sekunde
Trzeba było dwóch stron postów, żeby w końcu poznać problem...
Stwórz sobie timer (np. wybierz z palety komponentów kontrolkę TTimer
i postaw ją na formularz), sprawdź czy Interval
jest równy 1000
(domyślnie tyle on wynosi, liczony w milisekundach); Następnie wygeneruj zdarzenie OnTimer
i w nim wpisz kod, który będzie modyfikował właściwość Edit1.Text
;
Czyli na przykład:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Edit1.Text := Edit1.Text + 'x';
end;
Dzięki temu od momentu stworzenia obiektu formularza, do tekstu kontrolki Edit1
co sekundę dodawany będzie znak x
; Jak potrzebujesz co innego wpisywać do Edit1
to wpisz w tym zdarzeniu swój kod.
Dzieki, dziala