Opened 12 years ago
Closed 12 years ago
#191 closed Fehler (fixed)
Trend: Löschen
| Reported by: | Melanie Hermann | Owned by: | Melanie Hermann |
|---|---|---|---|
| Priority: | kurzfristig | Milestone: | |
| Component: | Gesamtsystem | Version: | ALLE |
| Severity: | Fehler | Keywords: | |
| Cc: |
Description
Probleme mit Löschen des Trends.
- Löschen funktioniert nicht mehr, sobald der Ringspeicher anfängt sich zu überschreiben
- Trend-Fenster bleibt hängen
Change History (4)
comment:1 by , 12 years ago
comment:2 by , 12 years ago
Lösung:
2) Es gab Probleme wenn die Zeichenfunktion, ohne vorhanden Daten, aufgerufen wurde. Um dies zu verhindern wurde die Reihenfolge der Abprüfungen verändert:
Vorher:
void CTrend::Draw(CDC *dc)
{
...
if (-1 != CDlgTrend::sm_comboBoxValueSel)
{ // Wenn in der ComboBox ein Wert zur Anzeige ausgewählt wurde
bool dtOk = CheckDatatype(CTrendInterface::sm_trendvalues[CDlgTrend::sm_comboBoxValueSel].kooIdxOfValue);
if (-1 == CTrendInterface::sm_trendvalues[CDlgTrend::sm_comboBoxValueSel].isVisible)
{ // Hinweis ausgeben (Wert nicht verfügbar in aktuellem Profil)
ShowTrendHint(&memDC, 3);
}
else if (0 == CTrendInterface::sm_trendvalues[CDlgTrend::sm_comboBoxValueSel].starttime)
{ // Hinweis ausgeben (Keine Daten für Anzeige vorhanden)
ShowTrendHint(&memDC, 2);
}
else if (!dtOk)
{ // Hinweis ausgeben (Datentyp nicht darstellbar)
ShowTrendHint(&memDC, 1);
}
else //if (true == dtOk)
{ // Wert sichtbar, Daten vorhanden und Datentyp des gewählten Wertes ist für Anzeige geeignet
...
}
}
...
}
Nachher:
void CTrend::Draw(CDC *dc)
{
...
if (-1 != CDlgTrend::sm_comboBoxValueSel)
{ // Wenn in der ComboBox ein Wert zur Anzeige ausgewählt wurde
// Prüfen, ob bereits Daten aufgezeichnet wurden
if (0 == CTrendInterface::sm_trendvalues[CDlgTrend::sm_comboBoxValueSel].starttime)
{ // Wenn noch keine Daten aufgezeichnet wurden ...
ShowTrendHint(&memDC, 2); // ... Hinweis ausgeben (Keine Daten für Anzeige vorhanden)
}
else
{ // Wenn bereits Daten aufgezeichnet wurden ...
// ... Prüfen, ob der Benutzer die Daten einsehen darf
if (-1 == CTrendInterface::sm_trendvalues[CDlgTrend::sm_comboBoxValueSel].isVisible)
{ // Wenn der Benutzer die Daten nicht einsehen darf ...
ShowTrendHint(&memDC, 3); // ... Hinweis ausgeben (Wert nicht verfügbar in aktuellem Profil)
}
else
{ // Wenn der Benutzer die Daten einsehen darf ...
// Prüfen, ob der Datentyp des ausgewählten Wertes zur Anzeige geeignet ist
bool dtOk = CheckDatatype(CTrendInterface::sm_trendvalues[CDlgTrend::sm_comboBoxValueSel].kooIdxOfValue);
if (!dtOk)
{ // Wenn die Daten nicht zur Anzeige geeignet sind ...
ShowTrendHint(&memDC, 1); // ... Hinweis ausgeben (Datentyp nicht darstellbar)
}
else
{ // Wenn die Daten zur Anzeige geeignet sind ... (UND Werte vorhanden sind UND diese der Benutzer einsehen darf)
...
}
}
}
}
...
}
comment:3 by , 12 years ago
Weitere Änderungen:
- TrendInterface.h:
- static Membervariable sm_delete entfernt
- TrendInterface.cpp:
- CTrendInterface::SaveNewTrendValues(): Aufruf von DeleteAllTrendValues() entfernt
- CTrendInterface::DeleteAllTrendValues(): Rücksetzen von sm_delete entfernt
- gcvars.cpp:
- fkt_DeleteTrends(): Hier wird nicht mehr sm_delete gesetzt, sondern DeleteAllTrendValues() aufgerufen
- Compat_Trend.cpp:
- updfnc_deltrend(): Auch hier wird nicht mehr sm_delete gesetzt, sondern DeleteAllTrendValues() aufgerufen
comment:4 by , 12 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
Note:
See TracTickets
for help on using tickets.
Lösung:
1) In der Funktion 'CTrendInterface::DeleteAllTrendValues() muss auch die Variable overwrite zurückgesetzt werden. Denn diese dient später in der Funktion CTrend::DrawTrend() als Anhaltspunkt wieviele Werte im Moment dargestellt werden sollen. Ausserdem werden die Werte beim Löschen nicht wirklich gelöscht werden, sondern es wird lediglich der Startpunkt für die Aufzeichnung verschoben.