Wiederherstellen der Form
-
Hallo,
ich hab folgendes Problem:
Ich hab eine Form und darin ein Stringgrid. Über das Canvas zeichne ich mir eine Art mitlaufendes Diagramm in eine Zelle. Die Werte speicher ich in ein Feld(zweidimensional: Wert,Zeit). Wenn jetzt der Nutzer die Form minimiert und dann wieder groß macht, soll natürlich das Diagramm noch da sein, ist es aber nicht.
Ich hab mir eine Art Repaintfunktion geschrieben, wo ich die Werte zum zeichnen nochmal nehme, die funktioniert auch, wenn ich die Form grösser oder kleiner mache. Aber es wird nichts gezeichnet wenn ich die Form wiederherstelle. Ich hab es mit der Funktion OnRestore der Applikation versucht, aber die wird wahrscheinlich aufgerufen bevor die Form aktiv wird und bei den Formereignissen, hab ich auch schon sehr viel probiert, aber ich komm nicht weiter.
Könnt ihr mir da bitte weiterhelfen?
-
Du könntest versuchen den Inhalt des Canvas vor dem Minimieren in ein temporäres Bitmap zwischenzuspeichern. Das holst Du Dir dann wieder beim Repaint.
-
Hallo,
ich bin noch nicht so fit mit Borland, kannst du mir das bitte etwas genauer erklären?
-
Benutze einfach das OnDrawCell-Event des StringGrids, dann wird deine Zeichnung automatisch aktualisiert.
Siehe FAQ unter "StringGrid".
-
Kann st Du mal den Code Zeigen, wo Du das Canvas in die Zelle malst?
-
Hallo,
hier der Code der Repaintfunktion:
void __fastcall TMTeViewer::DiagrammRepaint(int ACol, int ARow, TStringGrid *sGrid) { if(ArrayValue != NULL) { sGrid->Canvas->Pen->Color = clBlack; sGrid->Canvas->Pen->Width = 1; rect = sGrid->CellRect(ACol,ARow); // ACol und Row wird übergeben b = 1; for( int x = 1; x < CellWidth; x++) { sGrid->Canvas->MoveTo((rect.left+b-1), (rect.bottom+rect.top)/2-(atof(ArrayValue[x-1][0].c_str()))); sGrid->Canvas->LineTo((rect.left+b), ((rect.bottom+rect.top)/2)-(atof(ArrayValue[x][0].c_str()))); b = b+1; } } }
Die Funktion funzt, wenn ich sie in der OnPaint der From aufrufe, aber nicht wenn ich sie in der OnRestore aufrufe. Warum?
-
Jansen schrieb:
Benutze einfach das OnDrawCell-Event des StringGrids [...]
-
Hallo,
das hab ich gerade noch schnell ausprobirt und es funktioniert.
Danke!
-
Dann ist ja alles in Butter.