29-12-2012, 05:02 PM
هذه محاولة مني لدعم ال VCL Style في مكون SynEdit
عند تطبيق ال VCL Style فان مكون SynEdit لا يتم دعمه وهذا يعطي انطباعا سيئا في واجهة المستخدم .
بدون تعديل (بدون دعم ل VCL Style )
لدعم ال VCL Style كل ما أنت بحاجة لفعله هو ارفاق الوحدة VCLStyleSynEdit
النتيجة :
عند تطبيق ال 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

![[-]](https://delphi4arab.net/forum/D4A2020/collapse.png)