Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - dynamisch erstellte Komponente beim Scrollen neuzeichnen
J.Borchert - Mo 26.09.11 17:53
Titel: dynamisch erstellte Komponente beim Scrollen neuzeichnen
Ich erstelle zur Laufzeit einige Panele auf einem StringGrid. Das klappt soweit ohne Probleme. Wenn ich jetzt an dem StringGrid scrolle, kommt die ganze Ansicht vollkommen durcheinander. Es handelt sich um einen Kalender, auf dem Informationen liegen. Pro Bildschirm ist etwa ein Monat sichtbar, deshalb möchte ich also scrollen.
Was muß ich tun, damit die Panele an ihrer originalen Stelle bleiben bzw. mitscrollen.
(also fest am StringGrid kleben ;-)
Martok - Di 27.09.11 01:21
Ich nehme an, du platzierst die Panels in den passenden CellRects?
Das Grid löst beim Scrollen das Ereignis OnTopLeftChanged aus, da kannst du dann die neuen Positionen ermitteln/setzen.
J.Borchert hat folgendes geschrieben : |
Was muß ich tun, damit die Panele an ihrer originalen Stelle bleiben bzw. mitscrollen.
(also fest am StringGrid kleben ;-) |
Das tun sie ja. Du willst, dass sie sich bewegen, nicht, dass sie kleben :P
J.Borchert - Di 27.09.11 20:26
Ja das habe ich versucht:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.sg4TopLeftChanged(Sender: TObject); var i:integer; r:TRect; begin for i:=1 to BitBtn77.Tag do begin r := sg4.CellRect( TPanel(sg4.FindComponent('pan'+IntToStr(i))).Tag, TPanel(sg4.FindComponent('pank1'+IntToStr(i))).Tag ); with TPanel(sg4.FindComponent('pan'+IntToStr(i))) do begin Left := r.Left; Top := r.Top; end; end; sg4h.LeftCol:=sg4.LeftCol; end; |
Die Procedure arbeitet nicht so, wie es soll. Fehlt noch etwas ?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!