GTK2 Widgetset Systemfarben werden nicht übernommen

KOBOLD Messring GmbH
Beiträge: 155
Registriert: Mi 22. Aug 2007, 14:52
OS, Lazarus, FPC: Mandriva Linux 2008 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 65719 Hofheim am Taunus
Kontaktdaten:

GTK2 Widgetset Systemfarben werden nicht übernommen

Beitrag von KOBOLD Messring GmbH »

Wenn ich ein Projekt unter Windows (XP) mit GTK2 Widgetset kompiliere, werden keine Systemfarben übernommen. Speziell die Form.Color steht (per Default, habe ich nicht angefasst) auf clBtnFace (also das was man im Windows-Anzeige-Kontext-Menü als "3D-Elemente" oder so einstellt).
Dies funktioniert perfekt unter Linux (unter KDE heisst das dann "Fensterhintergrund") und die Lazarus-Anwendung integriert sich perfekt in das Desktop-Thema, nur unter Windows bekomme ich das mit GTK2 nicht hin, da ist alles immer Grau-in-Grau. Die Win32/64-Widgets übernehmen die Systemfarben wie gewünscht.
Ich brauche aber die integrierte GTK2-Listbox-Suchfunktion für meine Anwendung, deshalb möchte ich nicht Win32/64 Widgetset nehmen.

¿Gibt es da noch spezielle Einstellungen, Workarounds oder was muss man machen, damit dies auch mit GTK2 funktioniert?

Benutzeravatar
theo
Beiträge: 10951
Registriert: Mo 11. Sep 2006, 19:01

Re: GTK2 Widgetset Systemfarben werden nicht übernommen

Beitrag von theo »

Willst du nicht lieber die Funktionalität der Listbox nachbauen, statt so ein Gemurkse mit GTK2 auf Windows zu veranstalten?
Hinweise z.B. hier http://www.delphi3000.com/articles/article_560.asp?SK=" onclick="window.open(this.href);return false;

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Re: GTK2 Widgetset Systemfarben werden nicht übernommen

Beitrag von monta »

Das ist doch eigentlich völlig in Ordnung so...GTK2 übernimmt standardmäßig auch keine Windowseinstellungen.

Du brauchst eine Themeengin, die das ganze so aussehen lässt, als sei es Windows.

siehe auch: http://wiki.freepascal.org/GTK2_Interface#Themes" onclick="window.open(this.href);return false;
Johannes

KOBOLD Messring GmbH
Beiträge: 155
Registriert: Mi 22. Aug 2007, 14:52
OS, Lazarus, FPC: Mandriva Linux 2008 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 65719 Hofheim am Taunus
Kontaktdaten:

Re: GTK2 Widgetset Systemfarben werden nicht übernommen

Beitrag von KOBOLD Messring GmbH »

¡¡Danke Monta!!
Genau das wollte ich: eine Theme-Engine, ich dachte GTK2 macht das automatisch, aber OK, mit dem WIMP werde ichs versuchen.

@theo: Ich wollte das Rad nicht nochmal erfinden. Die GTK2-Suchfunktionalität der Listboxen ist exakt das was ich brauche und generell laufen meine GTK2-Apps auf Windows sehr stabil, ich glaube GTK2 unter Windows ist kein Gemurkse obwohl noch immer "beta" in der Lazarus-IDE dahintersteht, aber aus persönlicher Erfahrung kann ich sagen: Lazarus-GTK2-Apps laufen 100 mal stabiler unter Windows als z.B. das neue Office2007.

Benutzeravatar
theo
Beiträge: 10951
Registriert: Mo 11. Sep 2006, 19:01

Re: GTK2 Widgetset Systemfarben werden nicht übernommen

Beitrag von theo »

KOBOLD Messring GmbH hat geschrieben:ich glaube GTK2 unter Windows ist kein Gemurkse
Für mich ist das per Definition eine Gemurkse, ohne Not zusätzliche DLL-Abhängigkeiten und einen weiteres Toolkit dazwischen zu schalten.
Vielleicht bin ich aber auch nur altmodisch ;-)

KOBOLD Messring GmbH
Beiträge: 155
Registriert: Mi 22. Aug 2007, 14:52
OS, Lazarus, FPC: Mandriva Linux 2008 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 65719 Hofheim am Taunus
Kontaktdaten:

Re: GTK2 Widgetset Systemfarben werden nicht übernommen

Beitrag von KOBOLD Messring GmbH »

Vielleicht hast Du recht, ist doch ein Gemurkse, ich krieg's nämlich nicht zu laufen: alle Angaben, die ich beim Googlen finde, bezüglich der Pfadangaben, wo die Zusatz-dll vom WIMP hinmuss, widersprechen sich, bzw. sind anders, inzwischen habe ich den "Mist" 6 x auf dem Rechner (C:\Programme..., ...common files..., gtk runtime, App-Ordner...) und es geht doch nicht. :evil:
¿Hat jemand das schon mal zum Laufen gebracht?
Nach der Mittagspause mach ich mal mit dem Tip vom theo weiter...

Benutzeravatar
theo
Beiträge: 10951
Registriert: Mo 11. Sep 2006, 19:01

Re: GTK2 Widgetset Systemfarben werden nicht übernommen

Beitrag von theo »

KOBOLD Messring GmbH hat geschrieben: Nach der Mittagspause mach ich mal mit dem Tip vom theo weiter...
Obiger Code funzt. Du musst nur für die Windows Version windows und messages in die uses aufnehmen. Für GTK2 braucht's das Ganze ja eh nicht.
Es wird zwar kein extra Edit Control angezeigt, aber man kann einfach in die Listbox tippen. Mit Backspace können eingegebene Buchstaben wieder gelöscht werden, mit Escape der ganze Text.
Kann man ja noch anpassen.

KOBOLD Messring GmbH
Beiträge: 155
Registriert: Mi 22. Aug 2007, 14:52
OS, Lazarus, FPC: Mandriva Linux 2008 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 65719 Hofheim am Taunus
Kontaktdaten:

Re: GTK2 Widgetset Systemfarben werden nicht übernommen

Beitrag von KOBOLD Messring GmbH »

Gerade eben probiert, funzt wunderbar. Die beiden Konstanten LB_FINDSTRING = $018F; und LB_ERR = -1; habe ich gerade aus der Delphi-5 Unit Windows und Messages rauskopiert. Klar, 'ne Eingabebox sieht man da nicht, aber ist ja noch ausbaufähig.
Danke für den Tip in http://www.delphi3000.com" onclick="window.open(this.href);return false;.

marcov
Beiträge: 1103
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: GTK2 Widgetset Systemfarben werden nicht übernommen

Beitrag von marcov »

Geht das Thema automatisch mit das Thema von Windows mit? Zb wenn man in XP von Klassisch nach TeleTubbie und zuruck schaltet.

Ich habe immer das Problem das man kann versuchen GTK2 etwas einblenden zu lassen, aber das das nur sehr oberflächig wirkt. Eben ein Anfänger stellt in 10 Sekunden schon fest das es kein nativer App ist. Die zusätzliche DLLs sind dann noch das kleinsten Problem.

KOBOLD Messring GmbH
Beiträge: 155
Registriert: Mi 22. Aug 2007, 14:52
OS, Lazarus, FPC: Mandriva Linux 2008 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 65719 Hofheim am Taunus
Kontaktdaten:

Re: GTK2 Widgetset Systemfarben werden nicht übernommen

Beitrag von KOBOLD Messring GmbH »

@marcov:
Nein, das Programm reagiert überhaupt nicht auf Themen-wechsel. Nur die Programm-Titel-Leiste wechselt, aber alles andere bleibt bei den Standard-GTK2-Farben (grau-in-grau). Es muss ja nicht gerade so sein:
http://www.lazarusforum.de/viewtopic.ph ... 357#p25357
aber in bisschen OS-Integration hätte ich doch gern.
Ich werde erstmal mit einer eigenen Suchfunktion wie von theo vorgeschlagen und gefunden bei delphi3000.com weitermachen.
¿marcov, hast Du denn die WIMP-Sachen zum Laufen bekommen und wie?

Benutzeravatar
theo
Beiträge: 10951
Registriert: Mo 11. Sep 2006, 19:01

Re: GTK2 Widgetset Systemfarben werden nicht übernommen

Beitrag von theo »

KOBOLD Messring GmbH hat geschrieben:Die beiden Konstanten LB_FINDSTRING = $018F; und LB_ERR = -1; habe ich gerade aus der Delphi-5 Unit Windows und Messages rauskopiert.
Wieso? Die sind auch in Laz definiert. Ich sagte doch: uses Windows, Messages

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: GTK2 Widgetset Systemfarben werden nicht übernommen

Beitrag von pluto »

@KOBOLD Messring GmbH
es ist überhaupt kein Problem die standard Listbox um die genannte Funktion zu erweitern, hier die notwendigen schritte:
01 - Du erstellt dir eine neue unit und leitest dort von TCustomListBox ab bzw. von TListBox ab.
02 - Hier überschreibst du die Methode: KeyPress
03 - Beim Tippen muss du ein Edit Feld sichtbar machen z.b. an der Rechten unteren Seite(Das muss du vorher hinzufügen und installisieren)
04 - Hier muss die eigentliche Such Funktion rein. Sollte aber kein großes Problem sein.
So pauschal fehlt mir keine Lösung ein, aber du könntest meine Schritte mit theo's geposteten Link Kombinieren und Fertig.

PS:Zum Link den du gepostet hast: Ich gebe zu in den Farben habe ich etwas übertrieben, ich wollte halt die Möglichkeiten zeigen. Natürlich plane ich auch "systemfarben" zu unterstützen bzw. sowas sollte schon möglich sein.
MFG
Michael Springwald

creed steiger
Beiträge: 958
Registriert: Mo 11. Sep 2006, 22:56

Re: GTK2 Widgetset Systemfarben werden nicht übernommen

Beitrag von creed steiger »

Du kannst mal das probieren

http://gtk-win.sourceforge.net/home/index.php/en/Home" onclick="window.open(this.href);return false;

http://gtk-win.sourceforge.net/home/ind ... /Gtk2Prefs" onclick="window.open(this.href);return false;

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: GTK2 Widgetset Systemfarben werden nicht übernommen

Beitrag von pluto »

Bei Gelegenheit werde ich das machen. Ich setzte es auf meine "Liste" *G*. Hast du inzwischen dein Problem lösen können ?
Der Grund war doch, der das du eine ListBox haben möchtest die über eine Such Funktion beim eintippen haben sollen, darum hast du GKT2 gewählt richtig ?

Ich würde aber behaupten das nicht viele Windows Anwender davon was halten werden ein Linux Toolkit zu Installieren. Oder ?

zugeben, ich habe bisher noch nicht ausprobiert wie sich GTK1 oder GKT2 unter Windows verhält. Ich bin nicht sehr oft unter Windows.

Aber im Ernst: Warum mit Kanonen auf "Ameisen" schießen ?
MFG
Michael Springwald

KOBOLD Messring GmbH
Beiträge: 155
Registriert: Mi 22. Aug 2007, 14:52
OS, Lazarus, FPC: Mandriva Linux 2008 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 65719 Hofheim am Taunus
Kontaktdaten:

Re: GTK2 Widgetset Systemfarben werden nicht übernommen

Beitrag von KOBOLD Messring GmbH »

Also warum ich so eine wunderschöne Suchstring-Eingabe-Möglichkeit für eine Listbox haben will, wie es unter Linux Gang-und-Gebe ist und ich persönlich mich schon soooo dran gewöhnt habe und das jetzt auch noch für Windows-Arbeitsstationen: Hier die längliche Erklärung (anscheinend interessiert es ja) :
In dem Unternehmen wo ich arbeite sind die Produkte mit einer (meisst) 3-buchstabigen Abkürzung bezeichnet. Es gibt derer ca. 350. In einer Listbox (alfabetisch sortiert) muss man also ganz schön scrollen, bis man z.B. einen "SMV" oder "TGL" gefunden hat. Erfahrene Kollegen kennen aber diese Kurzbezeichnungen und wollen schnell über die Tastatur einen bestimmten Typ auswählen. Genau diese Funktionalität bringt die GTK2-Listbox.
Und von meinen Sprüchen, die ich als gemeiner EDV-Mensch manchmal loslasse: "Ach, du armer Kerl, arbeitest mit Windoof, na klar, da gibt's so was nicht", werden die Kollegen nicht glücklich. Und die Geschäftsleitung hat nun mal (leider) entschieden, dass hier alles für "normale" Mitarbeiter unter WindowsXP und MS-Office läuft. Nur bei den "kleinen" Tools, die ich so für die Firma mache, bin ich frei. Ich hab' allerdings 'ne Linux-Arbeitsstation, das Beste, um ein Windows-Netzwerk zu verwalten, finde ich. Deshalb bin ich so an die kleinen Nettigkeiten, die KDE im allgemeinen und Linux-Toolkits bieten. Wenn ich dann ein Programm für die Mitarbeiter unter Windows kompiliere, sehe ich dann, was da alles fehlt, oder wie umständlich das doch unter Windows ist und muss mir was überlegen.
1. Möglichkeit wäre zu sagen: was nicht ist, ist nicht. (Siehe miesen Spruch oben). Hilft aber nicht weiter.
2. Möglichkeit: GTK2 für Windows installieren. Machen die Kollegen ja nicht selbst, mache ich aus der EDV, ist also ein durchaus gangbarer Weg hier im Unternehmen, hier ein "Gemurkse" mit zusätzlichen DLLs und Toolkits zu veranstalten.
3. Möglichkeit: So Windows-Nativ wie möglich zu bleiben und z.B. diese Such-Eingabe-Funktionalität unter win32/64-Widgetset nachzubauen.
Genau das, wie pluto in den 4 Punkten beschrieben, werde ich jetzt machen. Klar ist das ein bisschen mit Kanonen auf "Ameisen" geballert, aber für mich OK. (Trotzdem murkse ich nebenher noch ein bisschen weiter, ich würd's doch soooo gerne nur einmal sehen, wie ein GTK2 sich in Windows integriert, beim GIMP geht's doch auch, zum Deibel noch eins...)

Antworten