Stringgrid - Bündel von Fragen
3. Jan 2004, 15:05
Hallo alle zusammen. Ich habe mich entschieden für ein Projekt Delphi zu benutzen. Meine Kenntnisse gehen hier aber leider nicht über das Schuldelphi hinaus. Bitte nehmt euch eine Sekunde Zeit, um meine Fragen zu beantworten.
Im Projekt verwende ich ein ziemlich großes Stringgrid (1025*1025). Dadurch entstehen erhebliche Geschwindigkeitsprobleme. Die möchte ich jetzt lösen:
Ich lasse über das ganze Grid verteilt Rechtecke einfärben, Text ausgeben und Kreise malen.
Ich möchte aber jetzt erreichen, dass immer nur der Teil des Stringgrids geladen wird, der auch gerade angezeigt wird. (Der restliche Teil ist ja 'verborgen' (man muss erst dorthin scrollen) und der soll noch nicht geladen werden.) Geht so etwas??!
Momentan kenne ich nur zwei Möglichkeiten:
- entweder über OnDrawCell, das aber extrem oft aufgerufen wird und dadurch das Programm extrem verlangsamt.
- oder ich lasse es ohne OnDrawCell malen, dann wird aber nur der angezeigte Teil des Stringgrids behandelt. Wenn ich scrolle, dann ist dort nichts zu sehen, gehe ich zurück, dann ist der alte Teil auch verschwunden.
Gibt es nicht irgendwie eine Aktion, die nur aufgerufen wird, wenn man die Scrollbalken betätigt? Das wäre optimal.
Habe auch noch ein paar weitere Fragen:
Wie erreiche ich es, dass beim Start nicht immer das erste Kästchen blau eingefärbt ist, also markiert ist?
Wie schalte ich es aus, dass man im StringGrid nicht mehr markieren kann und mit den Pfeiltasten nicht mehr Felder auswählen kann? (Wusste es schon einmal, habe es aber wieder vergessen. )
Wie male ich z.B. eine Ellipse in z.B. dem Feld (500/600). Habe ganz normal mit Canvas.Ellipse und dort die Pixelangaben eingegeben. Aber, wenn das Feld nicht sichtbar ist, dann erscheint die Ellipse immer oben links in meinem Programm. ;-( Dasselbe passiert bei TextOut. Wie erreiche ich es, dass Sachen in Felder gemalt werden, die nicht angezeigt werden? Also so, dass es gemalt wird und man dann erst dorthin scrollen muss, um es zu sehen.
Letzte Frage: Versteht ihr, was ich meine? Jedenfalls jetzt schon einmal vielen Dank für eure Hilfe.
Gruß, Moritz.
PS: Habe vorhin andere Themen durchgeforstet und keins gefunden, dass meine Frage beantwortet. Falls es doch schon eines geben sollte: Entschuldigung.
|