Prosze o pomoc Zczytać roznice czasu i otworzyć tyle Edito

0

Witam mam taki problem Chodzi o to ze musze zczytać roznice czasu z dwóch takich komponentów do wybierania czasu (TimerPicker) czy jakoś tak i pozniej utworzyć lub uwidocznić tyle np LebeledEdit ile wynosi ta roznica czasu I mam z tym problem na razie wykombinowałem to procedure

TForm1.eCzasDoChange(Sender: TObject);
Var
Result:extended;
 Begin
   if eCzasDo.Checked = True then
    Begin
      Result := eCzasDo.Date - eCzasOd.Date;

    End;
end;

Zrobiłem to zeby mi to liczył jesli zajdzie jakaś zmiana :) z tym ze mam 2 te wybierania czasu to musze to napisać w obydwóch ????????? (zeby jak rouszy jednym to liczyl lub jak ruyszy drugim to tez liczył )

w ogóle moze to tak być ?? jak teraz utworzyc tyle tych np LabeledEdit?? (moze być cos innego)

Przykład
ktos wybiera czas od 20 do 22 czyli roznica w godzinach jest 2h (TYLKO GODZINY SIE LICZA) no to ja zrobić tak zeby mi sie wyświetliły 2 TlabeledEdit podpisane : "20-21" i "21-22" zebym w nich mogl cos wpisać ??

Troche namieszalem ale mam nadzieje ze mnie ktos zrozumie i mi pomoze :)

0

Na formie masz 2 TlabeledEdit'y o nazwach jeden (jak widzę na podstawie kodu) eCzasDo a drugi pewnie eCzasOd
Tylko nie wiem jak taki komponent wygląda i nie wiem jakie może mieć właściwości, chodzi mi o to czy rzeczywiście ma "możliwość" Checked?
Ale mniejsza o to.

Ustaw więc w onChange obydwu tych komponentów tą samą procedurę np eCzasDoChange
Sprawdź warunek czy cokolwiek zostało wpisane do komponentów Od i Do tzn jeżeli wpisana jest data do obydwu to liczy a jeżeli nie to nic nie robi i np.

var wCzasOd, wCzasDo, wGodzOd, wGodzDo, wMin, wSec, wMSec : Cardinal;
    i, roznicza : Integer;
if ((Length(eCzasDo.Text) > 0) and (Length(eCzasOd.Text)) then
    begin
           //teraz tutaj podajesz co ma zrobić jeżeli oba pola są wypełnione
           
           //jeżeli podajesz czas w formacie czasu to możesz tutaj sprawdzić np
           //czy podany format jest prawidłowy itd.
 
          //jeżeli wszystko jest OK przechodzimy do obliczania i
          //możesz rozdzielić wprowadzony czas na składniki podstawowe
          //używając funkcji

          DecodeTime(wCzasOd, wGodzOd, wMin, wSec, wMSec);

          //gdzie wCzasOd - to wprowadzony czas
          //a wGodzOd to liczba godzyn wyciągnięta przez funkcję z wprowadzonego czasu

          DecodeTime(wCzasDo, wGodzDo, wMin, wSec, wMSec);
          //dekodowanie powtarzasz 2 razy raz dla jednego potem dla drugiego edita

          
          //teraz odejmujesz czasy, może się zdarzyć że różnica wyjdzie ujemna więc
          //wyciągasz wartość bezwzględną z odjętych czasów
          roznica := abs(wGodzDo - wGodzOd);

          //i tworzysz tyle elementow ile Ci potrzeba przy pomocy pętli for
          for i:=1 to roznica do
             begin
                    //tutaj tworzysz obiekty które mają się pojawiać na formie i reprezentować jak
                    //przypuszczam zdarzenia o określonej godzinie a dokładniej między godzinami
                    //Caption takiego komponentu będzie
                    Caption = '"' + IntToStr(wGodzOd+i-1) + ' - ' + IntToStr(wGodzOd+i) + '"';
             end;

    end
 else
    begin
           //a jeżeli pola są puste lub jedno z nich przynajmniej jest puste to 
           //możesz np. wyświetlić jakiś komunikat
           //lub deaktywować jakieś inne komponenty
    end;

Potem sprubój jak to nie pomoże konwertować czas na Integer albo normalnie odejmować czasy i tworzyć względem tego odpowiednią liczbę komponentów

Text jest pisany bez testu na Delphi więc może zawierać błędy za co przepraszam

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