Wie Border-farben und Name in jeder Instanz anders?

Für Fragen rund um die Ide und zum Debugger
wp_xyz
Beiträge: 5193
Registriert: Fr 8. Apr 2011, 09:01

Re: Wie Border-farben und Name in jeder Instanz anders?

Beitrag von wp_xyz »

Ja, mich würde sowas auch interessieren. Ich öffne manchmal eine zweite Instanz, um ein Beispielprojekt aus der Lazarus-Installation anzusehen. Weil Lazarus nur ein einziges Projekt verarbeiten kann, müsste ich sonst mein eigentliches Projekt schließen. Wenn man die beiden Instanzen besser unterscheiden könnte, wäre das hilfreich. br_klaus, vielleicht sollten wir einen Feature-Request im Bug-Tracker machen?

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

Re: Wie Border-farben und Name in jeder Instanz anders?

Beitrag von theo »

wp_xyz hat geschrieben:vielleicht sollten wir einen Feature-Request im Bug-Tracker machen?
Das kannst du komplett vergessen. Das wird niemals akzeptiert, das ist einfach zu schräg.
Ich wette, dieses "Feature" würde sogar zurückgewiesen, wenn du einen Patch einsendest (Bitte auf allen Plattformen und Window Managern testen).
Mein Tipp: Lasst die Entwickler damit in Ruhe.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Wie Border-farben und Name in jeder Instanz anders?

Beitrag von Christian »

Nutzer möchten auf Ihren Rechnern normalerweise auch entscheiden. Individualisierung von Benutzeroberflächen war in den 90gern.
Heute soll ein Programm sich ins System intigrieren.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Wie Border-farben und Name in jeder Instanz anders?

Beitrag von Socke »

Christian hat geschrieben:Nutzer möchten auf Ihren Rechnern normalerweise auch entscheiden. Individualisierung von Benutzeroberflächen war in den 90gern.
Heute soll ein Programm sich ins System intigrieren.
Sehe ich auch so.
br_klaus hat geschrieben:
Socke hat geschrieben:Die Lazarus-Entwickler machen das nicht, weil es für Lazarus unnötig und für eigene Anwendungen für die wichtigsten Funktionalitäten recht simpel zu implementieren ist.
Wenn es so simpel zu implementieren ist, kannst Du mir bitte sagen, wie ich das beim Lazarusprogramm machen kann? Ich kenne mich da leider überhaupt nicht aus.
Welche Units müßte ich dazu ändern und was tun, daß zB der Titelbalken rot wird (und auch die anderen Fenster alle eine Rotfärbung erhalten) und der Name geändert wird?
Ich sagte, die wichtigsten Funktionalitäten seien recht simpel zu implementieren. Die Titelleiste kann noch wesentlich mehr, als nur das Fenster durch die Gegend zu schieben. Insbesondere müssen alle Funktionalitäten auch für Personen mit eingeschränkten Bedienungsmöglichkeiten verwendbar bleiben. Dieser Punkt wird gerne außer Acht gelassen.

Beispiel:
  • Formular auf "Ohne Rahmen" einstellen
  • Ein TImage (oder TPaintBox oder was ganz anderes) auf dem Formular ablegen (aka Titelleiste)
  • In den Events OnMouseDown und OnMouseUp der Titelleiste den Zustand in einer Variablen zwischenspeichern
  • Im OnMouseMove Event der Titelleiste das Formular verschieben
  • Für alle Icons entsprechende Komponenten ablegen und diese Implementieren (unter anderem Anwendungs-Icon, Schaltflächen zum Schließen, Maximieren/Normalgröße, Minimieren, Hilfe-Funktion)
  • Komponenten an die richtige Position schieben
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

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

Re: Wie Border-farben und Name in jeder Instanz anders?

Beitrag von theo »

Und wenn es halbwegs professionell und cross-platform sein soll, bitte noch das ganze Doppelclick-und Rechtsclick-verhalten des jeweiligen Window Managers implementieren.
Anbei ein Screenshot von einem KWin Rechtsclick auf der Titelleiste als Anregung.
Viel Spaß!
Dateianhänge
lintitle.png

br_klaus
Beiträge: 244
Registriert: Do 21. Jan 2010, 22:33
OS, Lazarus, FPC: Windows Vista (L 0.9.31 FPC 2.5.1)
CPU-Target: 32Bit
Wohnort: z.z. Brasilien, sonst 82335 Berg-Leoni (südlich von München)

Re: Wie Border-farben und Name in jeder Instanz anders?

Beitrag von br_klaus »

Socke hat geschrieben:Beispiel:
  • Formular auf "Ohne Rahmen" einstellen
  • Ein TImage (oder TPaintBox oder was ganz anderes) auf dem Formular ablegen (aka Titelleiste)
  • In den Events OnMouseDown und OnMouseUp der Titelleiste den Zustand in einer Variablen zwischenspeichern
  • Im OnMouseMove Event der Titelleiste das Formular verschieben
  • Für alle Icons entsprechende Komponenten ablegen und diese Implementieren (unter anderem Anwendungs-Icon, Schaltflächen zum Schließen, Maximieren/Normalgröße, Minimieren, Hilfe-Funktion)
  • Komponenten an die richtige Position schieben
Das muß man alles beachten, wenn man nur die Farbe (und den Titel) ändern will? Brauche ich dazu wirklich ein eigenes Timage oder Paintbox? Und eigene MouseEvents? Da ändert sich doch überhaupt nichts, nur andere Farbe (und anderen Titel).

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Wie Border-farben und Name in jeder Instanz anders?

Beitrag von Socke »

br_klaus hat geschrieben:Das muß man alles beachten, wenn man nur die Farbe (und den Titel) ändern will? Brauche ich dazu wirklich ein eigenes Timage oder Paintbox? Und eigene MouseEvents? Da ändert sich doch überhaupt nichts, nur andere Farbe (und anderen Titel).
Wenn du wirklich nur die Farbe ändern willst, kannst du die auch direkt auf das Formular zeichnen. Den Rest musst du natürlich immer noch implementieren um dem Benutzer eine gewohnte Umgebung zu bieten.

Alternativ änderst du dem Benutzer einfach das Farbschema des Window-Managers/Windows. Damit ändert sich die Farbe bei deinem Programm und bei allen anderen Programmen auch. Gleichzeitig bringst du den Benutzer gegen dich auf, weil du seine Einstellungen ungefragt änderst.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

martin_frb
Beiträge: 588
Registriert: Mi 25. Mär 2009, 21:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
CPU-Target: mostly 32 bit

Re: Wie Border-farben und Name in jeder Instanz anders?

Beitrag von martin_frb »

Muss es den die Titel-leiste sein?

Wenn es nur um das betrachten von sources geht, dann ändere doch die Gutter-Farbe im Editor.
Dafuer brauchst du eine komplett eigenständige Zweit-Installation. Mit eigenem "--primary-config-path" (google)

Die IDE bar, enthaelt ja den Project Titel (tip: In den Optionen einstellen, das Projekt Name als erstes vor deb Wort "Lazarus" angezeigt wird. Dann sieht man den auch im Task-Bar-Button.

---
Oder probiere mal die IDE mit/ohne Manifest zu bauen...
Ohne Manifest ist die app "old style"

---
Ansonsten "AnchorDocking" installieren. Das zeichnet in JEDEM Fenster eine interne dock/drag-Bar. Da kann man sicher die Farbe aendern (im Quellcode).
Musst du selber suchen, kann ich Dir nicht helfen.

br_klaus
Beiträge: 244
Registriert: Do 21. Jan 2010, 22:33
OS, Lazarus, FPC: Windows Vista (L 0.9.31 FPC 2.5.1)
CPU-Target: 32Bit
Wohnort: z.z. Brasilien, sonst 82335 Berg-Leoni (südlich von München)

Re: Wie Border-farben und Name in jeder Instanz anders?

Beitrag von br_klaus »

Socke hat geschrieben:Wenn du wirklich nur die Farbe ändern willst, kannst du die auch direkt auf das Formular zeichnen. Den Rest musst du natürlich immer noch implementieren um dem Benutzer eine gewohnte Umgebung zu bieten.

Alternativ änderst du dem Benutzer einfach das Farbschema des Window-Managers/Windows. Damit ändert sich die Farbe bei deinem Programm und bei allen anderen Programmen auch. Gleichzeitig bringst du den Benutzer gegen dich auf, weil du seine Einstellungen ungefragt änderst.
Eine Änderung des Windows Farbschemas bringt ja nichts. Da ändern sich ja alle Programme. Ich will ja unterschiedliche Farben je nach Lazarus Instanz.

Wie mache ich das dann konkret bei Lazarus (direkt auf das Formular zeichnen)? Auf welches Formular? die Mainform? und auch alle anderen Formen? Kannst du mir einen kleinen Beispielcode geben, wie ich das bei einer der Lazarusformen machen kann? Und was meinst du mit dem "Rest", der dann noch implementiert werden muss?

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Wie Border-farben und Name in jeder Instanz anders?

Beitrag von Socke »

br_klaus hat geschrieben:Wie mache ich das dann konkret bei Lazarus (direkt auf das Formular zeichnen)? Auf welches Formular? die Mainform? und auch alle anderen Formen? Kannst du mir einen kleinen Beispielcode geben, wie ich das bei einer der Lazarusformen machen kann? Und was meinst du mit dem "Rest", der dann noch implementiert werden muss?
Ich sprach allgemein von selbst erstellten Anwendungen; nicht von Lazarus als fertiges Programm. Da Lazarus bereits befüllte Formulare hat, müssten diese zusätzlich noch verschoben werden, damit genug Platz für eine Titelleiste verfügbar ist.

Welches Formular: Jedes, das geändert werden soll.
Beispielcode: Leider nicht
Rest: Als Beispiel hatte ich die Funktionalität "Fenster verschieben" angeführt. Der Rest sind alle anderen Funktionen (Größe, Schließen, Kontextmenü etc.)
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

br_klaus
Beiträge: 244
Registriert: Do 21. Jan 2010, 22:33
OS, Lazarus, FPC: Windows Vista (L 0.9.31 FPC 2.5.1)
CPU-Target: 32Bit
Wohnort: z.z. Brasilien, sonst 82335 Berg-Leoni (südlich von München)

Re: Wie Border-farben und Name in jeder Instanz anders?

Beitrag von br_klaus »

Socke hat geschrieben:Ich sprach allgemein von selbst erstellten Anwendungen; nicht von Lazarus als fertiges Programm. Da Lazarus bereits befüllte Formulare hat, müssten diese zusätzlich noch verschoben werden, damit genug Platz für eine Titelleiste verfügbar ist.

Welches Formular: Jedes, das geändert werden soll.
Beispielcode: Leider nicht
Rest: Als Beispiel hatte ich die Funktionalität "Fenster verschieben" angeführt. Der Rest sind alle anderen Funktionen (Größe, Schließen, Kontextmenü etc.)
Das verstehe ich nicht. Wieso muß zur Änderung der Farbe der Titelleiste einer Form diese Form verschoben werden?

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Wie Border-farben und Name in jeder Instanz anders?

Beitrag von Socke »

br_klaus hat geschrieben:Das verstehe ich nicht. Wieso muß zur Änderung der Farbe der Titelleiste einer Form diese Form verschoben werden?
Wie bereits geschrieben: Es wird aufgrund der Unmöglichkeit nicht die Windows-Titelleiste geändert, sondern eine eigene erstellt. Weiterhin wird nicht das Formular sondern dessen Inhalt verschoben.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Wie Border-farben und Name in jeder Instanz anders?

Beitrag von Michl »

Ich nutze Windows (weiss nicht, ob das bei Linux/MAC anders ist). Wenn ich eine neue Instanz von Lazarus öffne steht doch in der Taskleiste "Lazarus IDE v. ... <Projektname>". Wozu dann noch zusätzlich die Farbe ändern?!

Bzw. könnte man evtl. diesen Hinweis in der Taskleiste evtl. deutlicher gestalten, welche Instanz genutzt wird, indem man statt "Lazarus IDE v...." nur das Lazarusicon und dann gleich das geöffnete Projekt dahinter schreibt?!

Nur so ne Idee...

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

martin_frb
Beiträge: 588
Registriert: Mi 25. Mär 2009, 21:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
CPU-Target: mostly 32 bit

Re: Wie Border-farben und Name in jeder Instanz anders?

Beitrag von martin_frb »

Michl hat geschrieben:Ich nutze Windows (weiss nicht, ob das bei Linux/MAC anders ist). Wenn ich eine neue Instanz von Lazarus öffne steht doch in der Taskleiste "Lazarus IDE v. ... <Projektname>". Wozu dann noch zusätzlich die Farbe ändern?!

Bzw. könnte man evtl. diesen Hinweis in der Taskleiste evtl. deutlicher gestalten, welche Instanz genutzt wird, indem man statt "Lazarus IDE v...." nur das Lazarusicon und dann gleich das geöffnete Projekt dahinter schreibt?!

Nur so ne Idee...
Laesst sich in den Optionen einstellen

br_klaus
Beiträge: 244
Registriert: Do 21. Jan 2010, 22:33
OS, Lazarus, FPC: Windows Vista (L 0.9.31 FPC 2.5.1)
CPU-Target: 32Bit
Wohnort: z.z. Brasilien, sonst 82335 Berg-Leoni (südlich von München)

Re: Wie Border-farben und Name in jeder Instanz anders?

Beitrag von br_klaus »

Socke hat geschrieben:
br_klaus hat geschrieben:Das verstehe ich nicht. Wieso muß zur Änderung der Farbe der Titelleiste einer Form diese Form verschoben werden?
Wie bereits geschrieben: Es wird aufgrund der Unmöglichkeit nicht die Windows-Titelleiste geändert, sondern eine eigene erstellt. Weiterhin wird nicht das Formular sondern dessen Inhalt verschoben.
Verstehe ich trotzdem nicht. was hat denn das mit Windows-Titelleiste zu tun? Benutzt Lazarus nur diese, und kann die nicht jedesmal individuell angepaßt werden?
Und wozu wird der Inhalt des Formulars verschoben (wohin denn verschoben? )?

Antworten