Hej Witajcie!
Dziś nasunęło mi się pytanie, w jaki sposób wykonać ponowne wyliczenie, wykonując polecenia za pomocą buttona.
Sekwencja miałaby się wykonywać, powiedzmy co 1minutę - automatycznie.
Obliczenie wykonania planu w zależności od pozostałego czasu.
Czas całkowity to 12h tyle ile trwa cała zmiana. Plan to nic innego jak ilość sztuk do wykonania targetu.
Wyliczenie to nie problem ponieważ już się dokonuje, pozostała tylko kwestia wykonywania co interwał.
Interwał 1s to ponowne kliknięcie buttona. Główny mój problem.
Aby całość miała przejrzystą instrukcję musiałbym jeszcze wykonać automatyczne ustalanie początku zmiany:
jeżeli zegar systemowy uzyska godzinę** 06:00:00** to jest pierwsza zmiana natomiast jeżeli uzyska 18:00:00 to będzie zmiana druga.
Początki ustalenia odliczania.
Na zdjęciu zaznaczyłem :
- Początek zmiany - tu ustawiamy ręcznie, chciałbym aby automatycznie po przekroczeniu 06:00:00 oraz 18:00:00 samoczynnie pozostawał na wybranej godzinie. (DateTimePicker1)
- Button dzięki któremu liczymy prognozowany wynik na koniec zmiany tj. 12h (btn_przewidywany)
- To Aktualna godzina systemowa (dateTimePicker2)
A tak wygląda cały kod:
private void btn_przewidywany_Click(object sender, EventArgs e)
{
try
{
DateTime timeStart = dateTimePicker1.Value;
DateTime timeStop = dateTimePicker2.Value;
timeStop = DateTime.Now;
TimeSpan difference = timeStop - timeStart;
lab_czasACTUAL.Text = DateTime.Now.ToString();
double hour = difference.TotalHours;
lab_hour.Text = ((int)hour).ToString(); /* RZUTOWANIE DO INT */
lab_hour.Text = Math.Round(hour).ToString();
lab_hour.Text = hour.ToString("0" + " h");
//lab_szacowanyTarget.Text = (hour * 60 * 60).ToString();
double Szacowany = (hour * 60 * 60);
lab_szacowanyTarget.Text = ((int)Szacowany).ToString(); /* RZUTOWANIE DO INT */
lab_szacowanyTarget.Text = Szacowany.ToString("0" + " sek.");
lab_czasPozostaly.Text = (float.Parse(tb_czasDostepny.Text) - (hour * 60 * 60)).ToString();
double CzasPozostaly = (float.Parse(lab_czasPozostaly.Text) / 60);
lab_czasPozostalyMin.Text = ((int)CzasPozostaly).ToString(); /* RZUTOWANIE DO INT */
lab_czasPozostalyMin.Text = CzasPozostaly.ToString("0");
double praca = (float.Parse(tb_peelingAKT.Text) + (float.Parse(lab_czasPozostalyMin.Text) - float.Parse(tb_sumaPrzerw.Text)) * float.Parse(lab_target_01.Text));
lab_czasPracyGodz.Text = ((int)praca).ToString(); /* RZUTOWANIE DO INT */
lab_czasPracyGodz.Text = praca.ToString("0" + " szt.");
//Czas do końca uzyskany z przezbrojenia
//lab_PrzezbrojenieCzas.Text = (float.Parse(lab_czasPozostaly.Text) - (float.Parse(cb_przezbrojenia.Text) / 60)).ToString();
double PrzezbrojenieCzas = (float.Parse(lab_czasPozostaly.Text) - (float.Parse(cb_przezbrojenia.Text) / 60));
lab_PrzezbrojenieCzas.Text = ((int)PrzezbrojenieCzas).ToString(); /* RZUTOWANIE DO INT */
lab_PrzezbrojenieCzas.Text = Math.Round(PrzezbrojenieCzas).ToString();
lab_PrzezbrojenieCzas.Text = PrzezbrojenieCzas.ToString("0");
label87.Text = lab_czasPracyGodz.Text;
}
catch
{
MessageBox.Show("Pole nie może pozostać puste", "Uwaga", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
- Prognoza.GIF (38 KB) - ściągnięć: 127