delphi中dev动态调用皮肤

zq62673240 2012-04-08 09:55:28
我做了一个动态皮肤调用 现在发现调用是可以了 但是在选择皮肤的框框里 焦点不会随着选择的那个皮肤变。。。就是选择了一个皮肤后 焦点就自动转到第一行了。。。。。代码如下

procedure TForm1.SkinChanged(Sender: TObject; const ASkinName: String);
begin

dxSkinsUserSkinLoadFromFile(ExtractFilePath(Application.ExeName)+
'Binary Skin Files\'+ASkinName+'.skinres');
//加了这句话之后焦点就变了。自动转到第一行。

dxSkinController1.NativeStyle:=False;
dxSkinController1.UseSkins:=True;
Ribbon.ColorSchemeName := 'UserSkin'; end;


...全文
759 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
山东蓝鸟贵薪 2012-04-08
  • 打赏
  • 举报
回复
不过有些控件是不支持“皮肤控件”
山东蓝鸟贵薪 2012-04-08
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
Fchooser好像没有setfocus 用了 dxSkinsUserSkinLoadFromFile 之后相当于重新刷新了一遍
[/Quote]
噢,这个样子,那可能是“焦点”的问题了
你将那个控件获取“焦点”试试
zq62673240 2012-04-08
  • 打赏
  • 举报
回复
Fchooser好像没有setfocus 用了 dxSkinsUserSkinLoadFromFile 之后相当于重新刷新了一遍
zq62673240 2012-04-08
  • 打赏
  • 举报
回复
我贴下代码

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, cxGraphics, cxControls, cxLookAndFeels, cxLookAndFeelPainters,
dxRibbonSkins, dxSkinsCore, dxSkinsdxBarPainter, dxBar, dxRibbonGallery,
dxSkinChooserGallery , cxClasses, dxRibbon, dxSkinsForm, Menus, StdCtrls,
cxButtons,dxSkinsDefaultPainters, dxStatusBar,dxRibbonStatusBar,ExtCtrls,
dxribbonform, cxContainer,cxEdit, cxTextEdit, cxMemo, cxRichEdit,
dxskinsdxribbonpainter; //加了这个单元

type
TForm1 = class(TdxRibbonForm)
dxRibbon1Tab1: TdxRibbonTab;
Ribbon: TdxRibbon;
dxBarManager1: TdxBarManager;
dxSkinController1: TdxSkinController;
dxRibbonStatusBar1: TdxRibbonStatusBar;
fchooser: TdxSkinChooserGalleryItem;
procedure FormCreate(Sender: TObject);
procedure SkinChanged(Sender: TObject; const ASkinName: String);
procedure SkinChooserSetup;
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
procedure Tform1.SkinChanged(Sender: TObject; const ASkinName: String);
begin
dxSkinsUserSkinLoadFromFile(ExtractFilePath(Application.ExeName)+
'Binary Skin Files\'+ASkinName+'.skinres');
dxSkinController1.NativeStyle:=False;
dxSkinController1.UseSkins:=True;
Ribbon.ColorSchemeName := 'UserSkin'; //加了这句。。

end;
procedure Tform1.SkinChooserSetup;
var
ABar: TdxBar;
f: TSearchRec;
Ret: Integer;
FileName,dir: string;
begin
ABar := dxBarManager1.Bars.Add;
ABar.Caption := 'Skins';
Ribbon.Tabs[0].AddToolBar(ABar);
FChooser := TdxSkinChooserGalleryItem.Create(dxBarManager1);
FChooser.OnSkinChanged := SkinChanged;
FChooser.GalleryInRibbonOptions.Collapsed := False;
DIR:=ExtractFilePath(Application.ExeName) + 'Binary Skin Files\*.skinres';

Ret:=FindFirst(Dir,faAnyFile,f);
while Ret = 0 do
begin
fchooser.AddSkinsFromFile(ExtractFilePath(Application.ExeName)+'Binary Skin Files\'+f.Name);
Ret:=FindNext(f)
end;
FindClose(f);

ABar.ItemLinks.Add(FChooser);
ABar.Visible := True;
end;
procedure TForm1.FormCreate(Sender: TObject);

begin
SkinChooserSetup;
end;

end.
zq62673240 2012-04-08
  • 打赏
  • 举报
回复
回复:sgzhou12345

我那个皮肤已经可以调用了,,那个路径设置好了的,现在就是在dxSkinChooserGalleryItem1的地方
焦点不会随着选择的皮肤变化而变化 一直都是在第一页。
山东蓝鸟贵薪 2012-04-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
重新SetFocus
[/Quote]
不是的,我加载皮肤时都不用这个的
kaikai_kk 2012-04-08
  • 打赏
  • 举报
回复
重新SetFocus
山东蓝鸟贵薪 2012-04-08
  • 打赏
  • 举报
回复
好像你必须加上一个 打开文件的控件吧

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧