AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Farbänderung Titelleiste TForm

Ein Thema von DerHaushaltsProfi · begonnen am 16. Mai 2015 · letzter Beitrag vom 17. Mai 2015
Antwort Antwort
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: Farbänderung in Delphi

  Alt 16. Mai 2015, 19:14
etzt die Schlechte: nur mit gewissen Aufwand. Also vergiss es.
Wo ist der Aufwand in Delphi >XE2 einfach das passende Theme auszuwählen? Der Aufwand hält sich also sehr in Grenzen.
Er schrieb in seinem ersten Post, dass er Turbo Delphi benutzt. Ich kenne die Version zwar nicht wirklich, aber ich bezweifle stark, dass es dort bereits Style bzw. Themes gab.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

AW: Farbänderung in Delphi

  Alt 16. Mai 2015, 19:26
Außerdem wollte er eher die Farbe des Rahmens und der Titelleiste ändern.

Wie gesagt, Style kann man ändern wenn man entweder die Komponenten installiert hat oder die Delphiversion die Funktion liefert. Ohne Style ist es Aufwand. Und bei Style hat sich jemand anderes den Aufwand gemacht.
  Mit Zitat antworten Zitat
redox
(Gast)

n/a Beiträge
 
#3

AW: Farbänderung in Delphi

  Alt 16. Mai 2015, 20:06
Der TE schwafelt oft über "Farbänderungen" herum, jedoch kann er noch nicht genau mitteilen, um welche Änderungen welcher Farben es denn konkret gehen soll.

Ein paar Zusatzinformationen vom Haushaltsprofie wären da oft ganz hilfreich:

- Welche Version von Delphi?
- Welche Version von Windows?

Turbo-Delphi wurde inzwischen "erraten", aber welche Version von Windows?

Wenn man die Windows-Version wüsste, könnte man ihm den Weg zu dem Systemsteuerungs-Dialog beschreiben, bei (in) dem er zumindest Ablesen könnte, daß die Zeile mit dem Helm wohl die Titelzeile ist...

Und so ein paar strengstens geheime Fachbegriffe wie "Titelzeile" des Fenster können ja kaum schaden...
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.683 Beiträge
 
Delphi 5 Professional
 
#4

AW: Farbänderung in Delphi

  Alt 16. Mai 2015, 20:31
Wenn man die Windows-Version wüsste, könnte man ihm den Weg zu dem Systemsteuerungs-Dialog beschreiben, bei (in) dem er zumindest Ablesen könnte, daß die Zeile mit dem Helm wohl die Titelzeile ist...
Jein. Aus dem Screenshot kann man ableiten, dass es Win7 ist. Klar kann man die Farben in der Systemsteuerung ändern, aber ich nehme nicht an, dass das Ziel ist, die Farbe aller Fenster zu ändern, sondern nur die des eigenen Programms; ich schließe das aus der Aussage
Ich finde dieses blau soooo hässlich und es passt einfach nicht zu meinem Programm
MfG Dalai
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.688 Beiträge
 
Delphi 2007 Enterprise
 
#5

AW: Farbänderung in Delphi

  Alt 17. Mai 2015, 00:33
Ich empfinde es in aller Regel zudem als "Übergriff", wenn ein Programm meint, es müsse sich nicht an den Standard halten, den ich systemweit selbst vorgebe. Wenn ich meine Titelleisten Gelb haben will, soll sich bitte auch jedes Programm bitteschön daran halten. Wenn das nicht zum Programm-Design passt, liegt das mit großer Wahrscheinlichkeit daran, dass das Programm selbst ebenfalls sämtliche Standards ignoriert, und versucht sein eigenes "stylisches" Süppchen auf den Herd zu stellen. Ich hasse das!!
GUI-Standards sind nicht ohne Grund da, und sind ein absolut wesentlicher Bestandteil der Usability eines PCs. Ja, auch so etwas profanes wie Farben zählen dazu. Windows ist hier sogar gar nicht so sehr rigoros, man hat durchaus viel Gestaltungsfreiheiten. (Man vergleiche mal mit iOS z.B.)
Es gibt noch einen Aspekt: Die Standard GUI-Elemente sind flott, weil direkt vom System verwaltet und optimiert. Jeder, der meint er müsse einen dämlichen Farbverlauf als Titelleistenhintergrund haben, kostet mich Leistung. Das mag bei kleinen Progrämmchen egal sein, aber es wäre nicht das erste Mal, dass mir ein Programm mit "schlabberigem" Neuzeichnen den Workflow versaut hat. (Consumer Video-Editing Tools sind da ganz groß drin!) Besser, man gewöhnt sich seine "Stylesucht" so schnell wie möglich wieder ab. Funktion und Usability sind 10000% wichtiger als cooles Eyecandy, und ein gut durchdachtes Design im Rahmen der jeweiligen Standards kann problemlos auch sehr schnittig aussehen.

Von daher: Lass den Quark.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.222 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Farbänderung in Delphi

  Alt 17. Mai 2015, 08:33
Ich empfinde es in aller Regel zudem als "Übergriff", wenn ein Programm meint, es müsse sich nicht an den Standard halten, den ich systemweit selbst vorgebe. Wenn ich meine Titelleisten Gelb haben will, soll sich bitte auch jedes Programm bitteschön daran halten. Wenn das nicht zum Programm-Design passt, liegt das mit großer Wahrscheinlichkeit daran, dass das Programm selbst ebenfalls sämtliche Standards ignoriert, und versucht sein eigenes "stylisches" Süppchen auf den Herd zu stellen. Ich hasse das!!
Mit welchen Browser bist du im Internet? Zähl mal zusammen wie viele Vorgaben es ignoriert?

GUI-Standards sind nicht ohne Grund da, und sind ein absolut wesentlicher Bestandteil der Usability eines PCs. Ja, auch so etwas profanes wie Farben zählen dazu. Windows ist hier sogar gar nicht so sehr rigoros, man hat durchaus viel Gestaltungsfreiheiten. (Man vergleiche mal mit iOS z.B.)
Aber wenn selbst MS dahingeht diese Vorgaben zu ignorieren? Wie oft war MS Office (teilweise) ein Fremdkörber auf dem eigenen OS? Wie viel GUI-Standards werden ignoriert (bzw. im Rahmen von Metro-UI) bzw. in einem wilden Mix zusammengestellt?

Besser, man gewöhnt sich seine "Stylesucht" so schnell wie möglich wieder ab. Funktion und Usability sind 10000% wichtiger als cooles Eyecandy, und ein gut durchdachtes Design im Rahmen der jeweiligen Standards kann problemlos auch sehr schnittig aussehen.
Stell die Suche nicht ein und sorge dafür das dein Programm in sich schlüssig ist. GUI-Vorgaben sind vor allem unter Windows nicht unbedingt auf den neuesten Stand bzw. man hätte eh unnötige Probleme sein Programm wirklich nach GUI-Vorgaben zu designen wenn man XP-Win10 unterstützen will da hier MS ja teilweise ja auch schon Änderungen vorgenommen hat die es schwer machen auf allen OS 10000%ig nach Windows auszusehen.


Aber wir schweifen wieder ab ...
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Farbänderung in Delphi

  Alt 17. Mai 2015, 08:48
Von daher: Lass den Quark.
Das ist mir zu pauschal.
Ich betreue u.a. eine Anwendung, die mit den DevExpress-Sytels arbeitet. Und diese Styles erfreuen sich bei den Anwendern höchster Beliebtheit. Mir selbst ist ein klassisches Design auch lieber, aber wenn Du schon das Stichwort "Usability" in den Raum wirfst: Hier ist doch stets die zentrale Frage "Für wen gut benutzbar"? zu stellen. Es gibt so viele Umgebungen, in denen Buttons größer, Labels größer, Farben deutlich sprechend ein müssen. Manchmal auch nur, weil diese Farben im Kontext eines Unternehmens eine gewisse Bedeutung erlangt haben, die jeder kennt und versteht.

Solange man nichts Besseres weiß bzw. keine anderen Vorgaben hat, ist es bestimmt ein guter Rat, sich an die jeweiligen Standards des OS zu halten. Nur aus Prinzip und ggf. wider besseren Wissens würde ich das nicht tun. Das ist und bleibt die Entscheidung des Entwicklers, um auf die Bedürfnisse des Anwenders einzugehen. Dann erst entsteht "Usability".
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.087 Beiträge
 
Delphi XE2 Professional
 
#8

AW: Farbänderung in Delphi

  Alt 17. Mai 2015, 02:27
Ich habe das in einem Spiel einmal so gelöst.
Falls ich beim Kopieren irgendein Detail vergessen habe: Sorry.

Delphi-Quellcode:
type
   TCaptionState=(csNothing,csWon,csLost,csEnd,csWarn,csInfo);

   // Farben der Window-Caption
   TCaptionColor=Record
      BK1:TColor;
      BK2:TColor;
      FC:TColor;
   End;
   TCaptionColors=Array[TCaptionState] of TCaptionColor;

const
   CaptionColors:TCaptionColors=
      ((BK1:$6A240A; BK2:$F0CAA6; FC:clWHite) // csNothing
      ,(BK1:clGreen; BK2:clYellow; FC:clWhite) // csWon
      ,(BK1:clRed; BK2:clYellow; FC:clWhite) // csLost
      ,(BK1:$FF8700; BK2:clYellow; FC:clWhite) // csEnd
      ,(BK1:clYellow; BK2:clRed; FC:clRed) // csWarn
      ,(BK1:clYellow; BK2:$00E948; FC:clBlack)); // csInfo
In Deklaration der Form:
Delphi-Quellcode:
    
    CaptionState:TCaptionState;
    PROCEDURE WMNCPAINT(var Msg:TMessage); message WM_NCPAINT;
  
    PROCEDURE WMNCACTIVATE(var Msg: TWMNCActivate); message WM_NCACTIVATE;
    PROCEDURE CMTEXTCHANGED(var Msg:TMessage); message CM_TEXTCHANGED;
    PROCEDURE DrawCaption;
Im implementation Teil

Delphi-Quellcode:
PROCEDURE TMain.WMNCPAINT(var Msg:TMessage);
begin
   inherited;
   DrawCaption;
end;
Delphi-Quellcode:
PROCEDURE TMain.WMNCACTIVATE(var Msg:TWMNCActivate) ;
begin
   inherited;
   if Msg.Active then DrawCaption;
end;
Delphi-Quellcode:
PROCEDURE TMain.CMTEXTCHANGED(var Msg:TMessage);
begin
   inherited;
   DrawCaption;
end;
Delphi-Quellcode:
PROCEDURE TMain.DrawCaption;
var FH,FW,CH,IH,IW,BW,X,Y:Integer; Bmp:TBitMap; Canvas:TCanvas; R:TRect;
    Metrics:TNONCLIENTMETRICS;
begin
   if WindowState=wsMinimized then Exit;
   if CaptionState=csNothing then Exit;
   Canvas:=TCanvas.Create;
   Canvas.Handle:=GetWindowDC(Self.Handle);
   CH:=GetSystemMetrics(SM_CYCAPTION)-1; // Unten scheint ein Pixel zu fehlen
   BW:=3*GetSystemMetrics(SM_CXSize); // W Buttons
   // Rect der Caption, abzüglich der Minimize,Maximize,Close Buttons definieren
   if WindowState=wsMaximized then begin
      SetRect(R,0,0,Width-BW,CH);
   end else begin
      FH:=GetSystemMetrics(SM_CYFRAME);
      FW:=GetSystemMetrics(SM_CXFRAME);
      SetRect(R,FW,FH,Width-FW-BW,FH+CH);
   end;
   // Icon in Bitmap kopieren
   IH:=GetSystemMetrics(SM_CYSMICON); // H Icon
   IW:=GetSystemMetrics(SM_CXSMICON); // W Icon
   Bmp:=TBitMap.Create;
   Bmp.Width:=IW;
   Bmp.Height:=IH;
   X:=R.Left+2;
   Y:=(R.Top+R.Bottom-IH) div 2;
   BitBlt(Bmp.Canvas.Handle,0,0,IW,IH,Canvas.Handle,X,Y,srccopy);
   // Canvas Hintergrund zeichen
   with CaptionColors[CaptionState] do
      GradientFillCanvas(Canvas,BK1,BK2,R,gdHorizontal);
   // Icon zeichnen
   Canvas.Draw(X,Y,Bmp);
   // Caption Text zeichnen
   Inc(R.Left,2+IW+4);
   Dec(R.Right,4);
   Metrics.cbSize:=SizeOf(TNONCLIENTMETRICS);
   SystemParametersInfo(SPI_GETNONCLIENTMETRICS,Metrics.cbSize,@Metrics,0);
   Canvas.Font.Height:=Metrics.lfCaptionFont.lfHeight;
   Canvas.Font.Style:=[fsBold];
   Canvas.Font.Color:=CaptionColors[CaptionState].FC;
   Canvas.Brush.Style:=bsClear;
   Y:=(R.Top+R.Bottom-Canvas.TextHeight(' ')) div 2;
   Canvas.TextRect(R,R.Left,Y,Caption);
   // Aufräumen
   ReleaseDC(Self.Handle,Canvas.Handle);
   Canvas.Free;
   Bmp.Free;
end;
Eine Farbänderung wird erreicht, indem CaptionState auf den gewünschten Wert gesetzt und Caption ein anderer Text zugeordnet wird.
Das zuweisen eines neuen Textes löst dann ein CM_TEXTCHANGED aus.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....

Geändert von Amateurprofi (17. Mai 2015 um 02:38 Uhr)
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Farbänderung in Delphi

  Alt 17. Mai 2015, 08:54
Der TE schwafelt oft über "Farbänderungen" herum, jedoch kann er noch nicht genau mitteilen, um welche Änderungen welcher Farben es denn konkret gehen soll.
Und auch dann muss man niemanden anblaffen, dass er schwafeln würde, sondern fragt einfach sachlich nach.
Oder - und auch das ist legitim - man klickt einfach weiter.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.352 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Farbänderung in Delphi

  Alt 17. Mai 2015, 09:55
+1
_
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz