Autoupdate wartosci na komponencie

0

Jak zrobić aby wartość wyświetlana np. na TEdit aktualizowała się automatycznie?

0

Automatycznie, to znaczy po jakiej czynności? Samo z siebie nic się nie zaktualizuje.

0

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.

0

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.

0

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?

0

Gdy zmienia się LabeledEdit1.Caption chce aby rownież zmieniał się wizualnie.

LabeledEdit nie posiada właściwości Caption... Opisz dokładnie problem.

0

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.

0

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.

0

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

0

To nie jest wytłumaczenie problemu.

0

Problem jest taki, że odpalam program, timer tez sie odpala i powinny w TEdit zmieniac sie liczby?

0

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ć?

0

Chcę aby wartości w polu Tedit zmieniały się automatycznie co 1 sekunde

0

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.

0

Dzieki, dziala

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