Nun wollte ich noch den Rand (die 1px breite, dunkelgraue Linie um die Komponente) der CategoryPanelGroup entfernen. Leider finde ich keinen Anhaltspunkt, wo diese gezeichnet wird. Könnte mir bitte jemand helfen, diese Umrandung zu entfernen?
Leider habe ich diese Frage auch nach sechs Jahren immer noch. Ich habe mich damals mit dem dunkelgrauen 1px-Rand arrangiert, aber je nach Projekt und UI Design passt dieser einfach nicht. Ich würde diesen gerne entfernen oder umfärben können. Leider finde ich auch jetzt beim besten Willen nicht heraus, wo dieser genau generiert wird und wie ich ihn entsprechend entfernen könnte. Hat vielleicht jetzt jemand eine Idee?
Das ist der Window Frame, der wird im Message-Handler für WM_NCPAINT gezeichnet.
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
Mit einen kleinen Interceptor kannst du das leicht abstellen:
Delphi-Quellcode:
unit Unit2;
interface
uses
Winapi.Windows,
Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
Vcl.ExtCtrls, System.UITypes;
type
TCategoryPanelGroup =
class(
Vcl.ExtCtrls.TCategoryPanelGroup)
procedure WMNCPaint(
var Message: TWMNCPaint);
message WM_NCPAINT;
end;
TForm1 =
class(TForm)
CategoryPanelGroup1: TCategoryPanelGroup;
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm2 }
procedure TCategoryPanelGroup.WMNCPaint(
var Message: TWMNCPaint);
var
MitHässlichenRand: Boolean;
begin
MitHässlichenRand := False;
if MitHässlichenRand
then
begin
inherited;
end;
end;
end.
Bevor die Frage kommt: Ja, es reicht wenn du das in eine eigene
Unit schiebst und immer nach
Vcl.ExtCtrls in der Uses-Klausel aufnimmst.