我正在编写一个需要看起来像老式终端会话的备忘录组件.这应该非常简单,但FireMonkey样式的工作方式似乎令人难以置信的复杂.
在非移动FireMonkey应用程序中,我可以右键单击一个控件并选择"编辑自定义样式".此选项在移动应用中不可用.以下是其中一位FireMonkey开发人员给出的原因.
它支持iOS和Android上的不同风格.我们无法在iOS风格的Android上运行应用程序.但是当您尝试更改平台样式时,我们将自动在每个目标平台上使用它.如果要更改fm控件的默认样式,则应该在表单样式书中添加样式,或者加载到样式表平台样式并对其进行更改.
同样非常重要的是,当您在样式簿中加载平台样式时,您可能希望该应用程序实例不具有两个平台样式副本(一个 - fmx包中的系统和样式簿中的其他副本).为此,您应该在TStylebook.UseStyleManager中设置标志true.在这种情况下,样式书中的样式将取代平台样式.
好的,所以我想我需要创建一个自定义样式.如何创建自定义样式以仅覆盖字体和背景属性?
我想我可以覆盖这样的ApplyStyle过程.
procedure TMyMemo.ApplyStyle;
var
BackgroundObject: TFmxObject;
begin
inherited;
BackgroundObject := FindStyleResource('content');
if Assigned(BackgroundObject) then
begin
// Change the background color of the background
end;
end;
Run Code Online (Sandbox Code Playgroud)
我如何知道背景对象的类型以及需要更改的属性?
当然,改变一个控件的背景颜色不是这么难!我错过了FM风格的基本内容吗?
我编写了一个接受类类型(T)和接口类型(I)的函数,并将一个接口(I)返回给对象(T).这是代码.
interface
function CreateObjectInterface<T: Class, constructor; I: IInterface>(
out AObject: TObject): I;
Run Code Online (Sandbox Code Playgroud)
...
implementation
function TORM.CreateObjectInterface<T, I>(out AObject: TObject): I;
begin
AObject := T.Create;
if not Supports(AObject, GetTypeData(TypeInfo(I))^.Guid, Result) then
begin
AObject.Free;
AObject := nil;
raise EORMUnsupportedInterface.CreateFmt(
'Object class "%s" does not support interface "%s"',
[AObject.ClassName, GUIDToString(GetTypeData(TypeInfo(I))^.GUID)]
);
end;
end;
Run Code Online (Sandbox Code Playgroud)
该功能按预期工作,没有内存泄漏或其他不受欢迎的问题.
还有其他方法可以达到相同的效果吗?
我正在考虑在我们的Firebird数据库上实现全文搜索.我们的要求是:
任何人都可以推荐一种体面的方式来实现我们的需求吗?我已经看过以某种方式将DotLucence集成到Delphi中,但是无法真正找到有关如何实现它的信息.
我们有一个ASP.NET 2.0应用程序,可以作为试用版下载.因此,我们无法控制将要安装的环境.尽管我们努力生产可靠的安装程序,但仍然有很多用户报告问题.
我们使用Web部署项目生成编译的.net文件.然后,我们获取输出并通过VS 2010部署项目运行它以生成msi安装程序.
以下是我们遇到的几个问题:
我们之前尝试过使用InnoSetup安装程序.它在某种程度上起作用,但是我们遇到了安装的应用程序连接到错误的应用程序池的问题,并且从未找到通过InnoSetup脚本定义应用程序池的方法.
有人可以给我一个明确的列表,列出在Windows XP或更高版本的配置未知的计算机上运行和运行ASP.NET应用程序所需的内容吗?例如,检查.NET 2.0是否已安装,检查是否安装了II6,将文件复制到x,创建虚拟目录等.
更好的是,是否有人知道安装程序(或InnoSetup扩展程序)可以为您完成大部分设置?
我正在尝试创建一个完全透明的表单,我在其上绘制具有Alpha透明度的位图.问题是我无法弄清楚如何将位图的背景设置为Alpha 0(完全透视).
这是表单现在的样子(注意右上角不透明).

这就是我想要的样子(右上角完全透明):

这是我的来源:
unit frmMain;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, ActiveX,
GDIPObj, GDIPAPI, Vcl.StdCtrls, Vcl.ExtCtrls;
type
TForm7 = class(TForm)
Panel1: TPanel;
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
procedure Button2Click(Sender: TObject);
private
function CreateTranparentForm: TForm;
end;
var
Form7: TForm7;
implementation
{$R *.dfm}
// Thanks to Anders Melander for the transparent form tutorial
// (http://melander.dk/articles/alphasplash2/2/)
function CreateAlphaBlendForm(AOwner: TComponent; Bitmap: TBitmap; Alpha: Byte): TForm;
procedure PremultiplyBitmap(Bitmap: TBitmap);
var
Row, Col: integer;
p: PRGBQuad;
PreMult: array[byte, …Run Code Online (Sandbox Code Playgroud) 升级到Delphi XE7更新1后,当使用带有TIdSSLIOHandlerSocketOpenSSL的TIdHTTP连接到服务器时,我看到以下错误.
---------------------------
Debugger Exception Notification
---------------------------
Project Test_iOS raised exception class EAccessViolation with message 'Access violation at address 8FE090C9, accessing address C03F1E32'.
---------------------------
Break Continue Help
---------------------------
Run Code Online (Sandbox Code Playgroud)
异常在IdSSLOpenSSL的第3133行抛出.
经过测试,可在Windows和Android平台上正常运行.
升级之前一切正常.我也同时更新到XCode 6.1,所以这可能是问题的一部分.
还有其他人看到类似的错误吗?有解决方法吗?
我正在尝试模仿Chrome的标签拖动功能.我希望用户能够将选项卡拖动到选项卡条中的新位置,或将其拖放到应用程序外部以创建新窗口.在应用程序中拖动很容易,但是如何检测用户何时丢弃在我的应用程序上的某个位置?
本质上,我希望实现"撕下"标签.
我有一个显示打印预览表单的第三方组件.我想将预览表单的标题更改为更合适的标题.不幸的是,我没有第三方组件的源代码,组件也没有提供功能.
是否有可能以某种方式捕获模态形式,因为它正在显示并在显示之前设置它的属性?
我正在尝试在TChromeTabs中实现标签的流畅运动.我可以在这里看到缓动公式,但我不是数学家,也不知道如何将其转换为代码.到目前为止,我的尝试让我无处可去.
是否有可用的Easing功能的Delphi实现?
是否有任何可以挂钩的事件来检测网页上的活动元素何时发生变化?例如,当用户聚焦编辑框时.
我知道我可以检查计时器中的活动元素,但如果可能的话我宁愿避免这种情况.
delphi ×9
delphi-xe2 ×4
delphi-xe7 ×2
.net ×1
animation ×1
asp.net ×1
delphi-xe5 ×1
delphi-xe6 ×1
easing ×1
firebird ×1
generics ×1
graphics ×1
iis ×1
indy ×1
inno-setup ×1
installation ×1
interface ×1
ios ×1
sphinx ×1
ssl ×1
styles ×1
twebbrowser ×1