دعم ال VCL Style في SynEdit
#1
هذه محاولة مني لدعم ال VCL Style في مكون SynEdit

عند تطبيق ال VCL Style فان مكون SynEdit لا يتم دعمه وهذا يعطي انطباعا سيئا في واجهة المستخدم .

بدون تعديل (بدون دعم ل VCL Style )

كود :
http://delphinews.files.wordpress.com/2012/12/synedit.png

لدعم ال VCL Style كل ما أنت بحاجة لفعله هو ارفاق الوحدة VCLStyleSynEdit

PHP كود :
(*
VCLStyleSynEdit By SMP3 .
My Blog : DelphiNews.WordPress.Com .
-----------------------------------------------------------
This small unit add the capability to SynEdit to support
VCL Style 
!
-----------------------------------------------------------

*)
unit VCLStyleSynEdit;

interface

uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
 
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, SynEdit,SynEditMiscClasses,Vcl.Themes,Vcl.Styles;
type TSynEdit = Class(SynEdit.TSynEdit )
 private
 
LStyle:TCustomStyleServices;
 protected
 
procedure CMSTYLECHANGED(var Message:TMessage);message CM_STYLECHANGED;
 
procedure Loaded; override;
 public
 
procedure UpdateStyle;
 
Constructor Create(AOwner: TComponent); override;

End;
implementation

{ TSynEdit }

procedure TSynEdit.CMSTYLECHANGED(var Message: TMessage);
begin
 UpdateStyle
;
 
Invalidate;
end;

constructor TSynEdit.Create(AOwner: TComponent);
begin
 inherited
;
Gutter.Gradient:=True;
Gutter.BorderStyle :=gbsRight;
UpdateStyle;

end;

procedure TSynEdit.Loaded;
begin
 inherited
;
 
UpdateStyle;
end;

procedure TSynEdit.UpdateStyle;
begin

LStyle 
:= TStyleManager.ActiveStyle;
if 
not LStyle.IsSystemStyle then begin

Color 
:= LStyle.GetStyleColor(scEdit);
with Gutter do begin
GradientEndColor 
:=LStyle.GetSystemColor(clBtnFace);
GradientStartColor :=LStyle.GetSystemColor(clWindow);
Font.Color :=LStyle.GetSystemColor(clWindowText );
BorderColor :=LStyle.GetStyleColor(scSplitter);
end;
ActiveLineColor :=LStyle.GetSystemColor(clHighlight);

end;
end;

initialization
TStyleManager
.Engine.RegisterStyleHook(TSynEdit,TScrollBoxStyleHook);
finalization
TStyleManager
.Engine.UnRegisterStyleHook(TSynEdit,TScrollBoxStyleHook);

end. 
النتيجة :

كود :
http://delphinews.files.wordpress.com/2012/12/vclstylesynedit.png

كود :
http://delphinews.files.wordpress.com/2012/12/vclstylesynedit2.png


الملفات المرفقة
.rar   VCL Style SynEdit.rar (الحجم : 265.93 ك ب / التحميلات : 46)
[-] كل من 1 user says قال شكرا ل SMP3 على المشاركة المفيدة
  • mobile
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم