StringGrid unter Carbon beim Scrollen sehr langsam
-
- Beiträge: 13
- Registriert: Mi 1. Nov 2006, 18:54
- OS, Lazarus, FPC: Mac OS 10.6 (L 0.9.xy FPC 2.2.z)
- CPU-Target: 64 Bit
- Wohnort: Villingen-Schwenningen
- Kontaktdaten:
StringGrid unter Carbon beim Scrollen sehr langsam
Hallo,
ich arbeite im Moment an einem Programm das per StringGrid Daten ausgeben soll.
Da die Felder sehr individuell sind in Größe, Farbe und Darstellung entfällt die Verwendung vom ListView. Hier scheint das CustomDraw grundsätzlich nicht zu funktionieren, warum auch immer
VirtualStringTree hab ich in Delphi geliebt, ist aber unter Lazarus total instabil bzw. lässt sich nicht mal installieren ^^
Daher verwende ich nun das StringGrid. Soweit passt auch alles, aber:
Das Scrollen per Mauswheel ist unzumutbar langsam. Das Grid Scrollt noch sekunden nachdem das Rad losgelassen wurde weiter und ruckelt vor sich hin. Auch ohne CustomDraw ist das nachstellbar, je größer die Anzeigefläche desto langsamer wird es. Bei mir so extrem das bei voller Ansicht sogar das ändern der Fenstergröße ruckelt.
Wenn ich das ganze unter Windows Compiliere ruckelt nix, 1A Scroll. Nur unter Mac.
Ich schiebe im Moment die schuld auf Carbon und deren Umsetzung in Lazarus, dennoch frage ich mich warum z.B. das Listview nicht ruckelt.
Nachstellen: Einfach eine StringGrid auf die Form, min. 10 Spalten und 50 Zeilen rein. Das ganze mit Daten füllen und fertig ist das geruckel.
PS: Mein Mac ist unheimlich schnell, daher kann die Hardware nicht schuld sein
Falls hier jemand bereits Erfahrung gemacht hat wäre ich über ein Feedback sehr dankbar.
ich arbeite im Moment an einem Programm das per StringGrid Daten ausgeben soll.
Da die Felder sehr individuell sind in Größe, Farbe und Darstellung entfällt die Verwendung vom ListView. Hier scheint das CustomDraw grundsätzlich nicht zu funktionieren, warum auch immer
VirtualStringTree hab ich in Delphi geliebt, ist aber unter Lazarus total instabil bzw. lässt sich nicht mal installieren ^^
Daher verwende ich nun das StringGrid. Soweit passt auch alles, aber:
Das Scrollen per Mauswheel ist unzumutbar langsam. Das Grid Scrollt noch sekunden nachdem das Rad losgelassen wurde weiter und ruckelt vor sich hin. Auch ohne CustomDraw ist das nachstellbar, je größer die Anzeigefläche desto langsamer wird es. Bei mir so extrem das bei voller Ansicht sogar das ändern der Fenstergröße ruckelt.
Wenn ich das ganze unter Windows Compiliere ruckelt nix, 1A Scroll. Nur unter Mac.
Ich schiebe im Moment die schuld auf Carbon und deren Umsetzung in Lazarus, dennoch frage ich mich warum z.B. das Listview nicht ruckelt.
Nachstellen: Einfach eine StringGrid auf die Form, min. 10 Spalten und 50 Zeilen rein. Das ganze mit Daten füllen und fertig ist das geruckel.
PS: Mein Mac ist unheimlich schnell, daher kann die Hardware nicht schuld sein
Falls hier jemand bereits Erfahrung gemacht hat wäre ich über ein Feedback sehr dankbar.
Re: StringGrid unter Carbon beim Scrollen sehr langsam
gastonx hat geschrieben:VirtualStringTree hab ich in Delphi geliebt, ist aber unter Lazarus total instabil bzw. lässt sich nicht mal installieren ^^
Das funzt prima unter Lazarus. Welche Version hast du denn getestet?
-
- Beiträge: 13
- Registriert: Mi 1. Nov 2006, 18:54
- OS, Lazarus, FPC: Mac OS 10.6 (L 0.9.xy FPC 2.2.z)
- CPU-Target: 64 Bit
- Wohnort: Villingen-Schwenningen
- Kontaktdaten:
Re: StringGrid unter Carbon beim Scrollen sehr langsam
Derzeit nutze ich v0.9.28.2
Beim installieren von VST kommen jede Menge Fehler, unter anderen Timerlist was dazu führt das weder die Header noch sonst was ordentlich gezeichnet werden
Beim installieren von VST kommen jede Menge Fehler, unter anderen Timerlist was dazu führt das weder die Header noch sonst was ordentlich gezeichnet werden
Re: StringGrid unter Carbon beim Scrollen sehr langsam
Ich meinte welchen VST Port. Es gibt zwei. Der hier läuft imho recht gut (auf Mac hab ich den aber nicht getestet):
http://lazarus-ccr.svn.sourceforge.net/ ... new/trunk/
Hat möglicherweise noch Abhängigkeiten. Bin mir nicht sicher ob die noch nötig sind. Die wären allenfalls hier:
https://code.google.com/p/luipack/sourc ... svn/trunk/
http://lazarus-ccr.svn.sourceforge.net/ ... new/trunk/
Hat möglicherweise noch Abhängigkeiten. Bin mir nicht sicher ob die noch nötig sind. Die wären allenfalls hier:
https://code.google.com/p/luipack/sourc ... svn/trunk/
-
- Beiträge: 13
- Registriert: Mi 1. Nov 2006, 18:54
- OS, Lazarus, FPC: Mac OS 10.6 (L 0.9.xy FPC 2.2.z)
- CPU-Target: 64 Bit
- Wohnort: Villingen-Schwenningen
- Kontaktdaten:
Re: StringGrid unter Carbon beim Scrollen sehr langsam
1. Versuch , sofort "vtgraphicsi.inc" nicht gefunden -.-
Unter include/intf/ ist die überall drin ausser in carbon.
Was hast Du da gemacht ?
Unter include/intf/ ist die überall drin ausser in carbon.
Was hast Du da gemacht ?
Re: StringGrid unter Carbon beim Scrollen sehr langsam
gastonx hat geschrieben:Was hast Du da gemacht ?
Gar nichts. Wie gesagt ich hab's nicht auf Mac getestet da ich keinen besitze.
Das ist aber "nur" Alpha-Blend Zeugs. Kannst ja mal versuchen, das soweit auszukommentieren bis es kompiliert.
-
- Beiträge: 13
- Registriert: Mi 1. Nov 2006, 18:54
- OS, Lazarus, FPC: Mac OS 10.6 (L 0.9.xy FPC 2.2.z)
- CPU-Target: 64 Bit
- Wohnort: Villingen-Schwenningen
- Kontaktdaten:
Re: StringGrid unter Carbon beim Scrollen sehr langsam
das ist doch zum Haare raufen, geht nicht mal dieses Extension packet.
Diese Funktion existiert nicht, also Kill und Set in LCLIntf und dessen incs.
Hab aber alle aktuell eigentlich
Code: Alles auswählen
function KillTimer(hWnd: THandle; nIDEvent: LongWord):Boolean;
begin
Result := LCLIntf.KillTimer(hWnd, nIDEvent);
end;
function SetTimer(hWnd: THandle; nIDEvent: LongWord; uElapse: LongWord; lpTimerFunc: TTimerNotify): LongWord;
begin
Result := LCLIntf.SetTimer(hWnd, nIDEvent, uElapse, nil{lpTimerFunc});
end;
Diese Funktion existiert nicht, also Kill und Set in LCLIntf und dessen incs.
Hab aber alle aktuell eigentlich
Re: StringGrid unter Carbon beim Scrollen sehr langsam
gastonx hat geschrieben:Hab aber alle aktuell eigentlich
Naja, zieh dir die SVN Version.
Diese Funktionen wurden am 10 Januar eingebaut.
http://svn.freepascal.org/cgi-bin/viewv ... ot=lazarus
-
- Beiträge: 13
- Registriert: Mi 1. Nov 2006, 18:54
- OS, Lazarus, FPC: Mac OS 10.6 (L 0.9.xy FPC 2.2.z)
- CPU-Target: 64 Bit
- Wohnort: Villingen-Schwenningen
- Kontaktdaten:
Re: StringGrid unter Carbon beim Scrollen sehr langsam
sooo
ich hab das nun alles hinbekommen.
VST ist drauf.
Nur folgendes Problem:
Die VST Fläche bleibt weiß.
Ich seh zwar das er nodes hinzufügt aber ich seh keine Spalten oder Header.
Liegts am Alphablend? Kann man das abschalten , finde hierzu keine Option :/
ich hab das nun alles hinbekommen.
VST ist drauf.
Nur folgendes Problem:
Die VST Fläche bleibt weiß.
Ich seh zwar das er nodes hinzufügt aber ich seh keine Spalten oder Header.
Liegts am Alphablend? Kann man das abschalten , finde hierzu keine Option :/
Re: StringGrid unter Carbon beim Scrollen sehr langsam
gastonx hat geschrieben:sooo
ich hab das nun alles hinbekommen.
VST ist drauf.
Nur folgendes Problem:
Die VST Fläche bleibt weiß.
Ich seh zwar das er nodes hinzufügt aber ich seh keine Spalten oder Header.
Liegts am Alphablend? Kann man das abschalten , finde hierzu keine Option :/
Ich glaube das wurde auf Carbon nicht wirklich getestet (wie so vieles, da die Mac-Laz Community nicht sehr gross ist).
Der Autor hat afaik keinen Mac, ich auch nicht.
Es wäre natürlich schön, wenn du VST auf Carbon hinkriegen könntest.
Ich glaube als Mac-Laz User muss man sich ein bisschen zu Helfen wissen.
Kompilieren und nicht crashen tut's ja offenbar schon mal.
-
- Beiträge: 13
- Registriert: Mi 1. Nov 2006, 18:54
- OS, Lazarus, FPC: Mac OS 10.6 (L 0.9.xy FPC 2.2.z)
- CPU-Target: 64 Bit
- Wohnort: Villingen-Schwenningen
- Kontaktdaten:
Re: StringGrid unter Carbon beim Scrollen sehr langsam
hehe jo das stimmt. Mac Technisch ist wenig los.
Ich werd mir das mal in ruhe anschauen, derweil weiter mit StringGrid ^^
Vielen Dank für Deine Infos.
Ich werd mir das mal in ruhe anschauen, derweil weiter mit StringGrid ^^
Vielen Dank für Deine Infos.
-
- Beiträge: 13
- Registriert: Mi 1. Nov 2006, 18:54
- OS, Lazarus, FPC: Mac OS 10.6 (L 0.9.xy FPC 2.2.z)
- CPU-Target: 64 Bit
- Wohnort: Villingen-Schwenningen
- Kontaktdaten:
Re: StringGrid unter Carbon beim Scrollen sehr langsam
Jetzt muss ich doch nochmal fragen
Ich hab ja das Problem das VST komplett Weiß ist, also nicht auf den Canvas zeichnet.
Nun habe ich mir mal den Debugger angeschaut und sehe das dieser
Sat Oct 16 01:00:18 N-iMac.local dataarray[44510] <Error>: CGContextRestoreGState: invalid context 0x0
Sat Oct 16 01:00:18 N-iMac.local dataarray[44510] <Error>: CGContextSaveGState: invalid context 0x0
Sat Oct 16 01:00:18 N-iMac.local dataarray[44510] <Error>: CGContextScaleCTM: invalid context 0x0
Sat Oct 16 01:00:18 N-iMac.local dataarray[44510] <Error>: CGContextRestoreGState: invalid context 0x0
Meldet, im Dauerlauf...
Kann damit jemand was anfangen?
PS: Sonderfrage für Newbie: Im VST Code steht {$ifdef DEBUG_VTV} ... , wie kann ich mir diesen Log einblenden lassen? Nicht wundern hab noch nicht all zu viel mit logs gemacht
Ich hab ja das Problem das VST komplett Weiß ist, also nicht auf den Canvas zeichnet.
Nun habe ich mir mal den Debugger angeschaut und sehe das dieser
Sat Oct 16 01:00:18 N-iMac.local dataarray[44510] <Error>: CGContextRestoreGState: invalid context 0x0
Sat Oct 16 01:00:18 N-iMac.local dataarray[44510] <Error>: CGContextSaveGState: invalid context 0x0
Sat Oct 16 01:00:18 N-iMac.local dataarray[44510] <Error>: CGContextScaleCTM: invalid context 0x0
Sat Oct 16 01:00:18 N-iMac.local dataarray[44510] <Error>: CGContextRestoreGState: invalid context 0x0
Meldet, im Dauerlauf...
Kann damit jemand was anfangen?
PS: Sonderfrage für Newbie: Im VST Code steht {$ifdef DEBUG_VTV} ... , wie kann ich mir diesen Log einblenden lassen? Nicht wundern hab noch nicht all zu viel mit logs gemacht
Re: StringGrid unter Carbon beim Scrollen sehr langsam
Ich weiss nur, dass LCL Carbon sehr strikt ist, mit dem OnPaint Ereignis. Ausserhalb läuft da scheint's gar nix.
Was das DEBUG_VTV betrifft, bin ich nicht ganz sicher.
Ich würde das mal bei Werkzeuge -> Lazarus kompilieren einrichten unter Einstellungen als
-dDEBUG_VTV
eintragen und danach die IDE mit Packages neu bauen.
könnte klappen, wenn du danach die Konsolenmeldungen anschaust.
Was das DEBUG_VTV betrifft, bin ich nicht ganz sicher.
Ich würde das mal bei Werkzeuge -> Lazarus kompilieren einrichten unter Einstellungen als
-dDEBUG_VTV
eintragen und danach die IDE mit Packages neu bauen.
könnte klappen, wenn du danach die Konsolenmeldungen anschaust.
-
- Beiträge: 768
- Registriert: Mo 4. Mai 2009, 13:24
- OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
- CPU-Target: x86_64-linux-qt/gtk2
- Kontaktdaten:
Re: StringGrid unter Carbon beim Scrollen sehr langsam
Wie Theo sagt, gibt es unter Carbon kein OnPaint, OnDrawCell, OnDrawItem etc. Dein TStringGrid kann also nur mit Text gefüllt sein und das ist bei einer Standarddarstellung sicher nicht zu langsam. Wahrscheinlich machst du irgendetwas eigenartiges, zum Beispiel wiederholt Zellen füllen. Falls du wirklich selber was zeichnen willst/musst, kannst du unter Darwin halbwegs gut Qt benutzen. Damit stehen alle benutzerdefinierten Paint-Events zur Verfügung.
Zeichenoperationen sind übrigens auch zwischen Windows und Linux verschieden. Ohne das genau beschreiben zu können, vermute ich etwas in der Art, dass Linux den Canvas immer komplett neu erzeugt und Windows nur den notwendigen Bereich. Oder Windows bricht die letzte Ausgabe ab, wenn eine neue Nachricht kommt. Meine Graphikausgaben werden jedenfalls unter Windows viel schneller gezeichnet.
Zeichenoperationen sind übrigens auch zwischen Windows und Linux verschieden. Ohne das genau beschreiben zu können, vermute ich etwas in der Art, dass Linux den Canvas immer komplett neu erzeugt und Windows nur den notwendigen Bereich. Oder Windows bricht die letzte Ausgabe ab, wenn eine neue Nachricht kommt. Meine Graphikausgaben werden jedenfalls unter Windows viel schneller gezeichnet.