- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
编写以下代码
procedure TForm1.Edit1ApplyStyleLookup(Sender: TObject);
var
Obj: TFmxObject;
begin
Obj := Edit1.FindStyleResource('background');
if Obj <> nil then
ShowMessage('Obj is not nil')
else
ShowMessage('Obj is nil');
end;
XE6 中的代码运行良好,XE7 中的 Obj 为 nil。请问,这是什么原因,如何到达Obj?
如下代码,访问Obj与NIL值相同:
TMyEdit = class(TEdit)
protected
procedure ApplyStyle;override;
...
procedure TMyEdit.ApplyStyle;
var
Obj: TFmxObject;
begin
inherited;
Obj := Self.FindStyleResource('background');
...
end;
最佳答案
我在使用 C++Builder XE7 时遇到了同样的问题。我就是这样解决的。我创建了这个函数:
static Fmx::Types::TFmxObject* __fastcall FindStyle(
Fmx::Types::TFmxObject* AFmxObject, const System::UnicodeString AStyleLookup)
{
if(AFmxObject == NULL)
{
return NULL;
}
Fmx::Types::TFmxObject* Result = NULL;
const int LChildrenCount = AFmxObject->ChildrenCount;
for(int i = 0; i < LChildrenCount; ++i)
{
if(AFmxObject->Children->Items[i]->StyleName == AStyleLookup)
{
Result = AFmxObject->Children->Items[i];
break;
}
Result = FindStyle(AFmxObject->Children->Items[i], AStyleLookup);
if(Result != NULL)
{
break;
}
}
return Result;
}
只需像这样调用该函数:
#if __CODEGEARC__ < 0x0690
Fmx::Types::TFmxObject* LStyleResource = LEdit->FindStyleResource("background");
#else
Fmx::Types::TFmxObject* LStyleResource = FindStyle(LEdit, "background");
#endif
它并没有那么复杂,所以我想用 Delphi 编写它会很容易。
关于delphi - 在XE7中,TEdit.OnApplyStyleLookup不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25870188/
我正在为表单上的 tedit 对象定义自定义样式。 在样式编辑器中,我向背景属性添加了一个tRectangle,将其Align 属性设置为Client,设置填充和描边颜色。然后我保存了样书,tedit
我想在TEdit中格式化##.###.###-#,我使用以下代码: procedure TfrmPropiedad.edtRUTChangeTracking(Sender: TObject); var
我希望使用 VCL 和 Delphi 10+ 在 TEdit 或 TMemo 控件中看到彩色表情符号。 可以吗? 输入的文字: 👨🏼🎤👩🏾👩🏼👧🏻👦🏿 我看到的: 我想看
我有一个由两个 TComboBox 组成的表格和一个 TEdit控件,我希望能够更新 TEdit 中的单词使用组合框中的值进行控制,但不太确定如何使其工作。 例子: 组合框 #1 包含以下项目:sue
我是 super 新手,并尝试编写以下代码,将每个 TEdit.Text 设置为代码中提到的一个 procedure TForm2.Button1Click(Sender: TObject); var
我正在尝试编写一个数独求解器,我想控制 81 个 TEdit 控件作为数组,但它们的名称是 Edit1、Edit2、Edit3 而不是 Edit[1]、Edit[2] 等 我不想为所有 81 个控件分
这个问题不太可能对任何 future 的访客有帮助;它只与一个较小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于全世界的互联网受众。如需帮助使此问题更广泛适用,visit the
有什么办法可以添加placeholder文本要编辑? 我唯一的想法是始终在其 OnChange 事件中手动设置给定 edit 的颜色和文本,但这对我来说似乎有点乏味。 还有其他建议吗? 最佳答案 您正
我想将我的 TEdit 的 Texthint 更改为灰色。 我已经找到了这个https://stackoverflow.com/a/31550017/1862576并尝试通过 SendMessage
如何添加仅接受数字的 TEdit?我搜索信息但没有任何帮助。 我需要一个不接受任何字母或字符串的TEdit。 procedure TForm1.Edit1KeyPress(Sender: TObjec
当用户单击 TEdit1 或单击选择其中的某些文本时,如何选择 TEdit1 的所有文本 最佳答案 执行超出 TEdit 控件默认行为的任何操作都可能非常危险。您的用户知道标准 Windows 控件的
我想创建一个编辑框,用户必须在其中输入密码。当他们输入密码时,我希望不显示该字符,而是显示 *。是否有任何属性可以设置来执行此操作,我知道如何将 TEdit 设置为在输入时保持空白,但我不希望这样做。
TEdit(或 TCombo、TButtonedEdit)中的文本始终与顶部对齐。我还没有找到任何可以改变对齐方式的属性。通常这不是问题,除非我想设置更大的高度。 我用谷歌搜索了一下。有一些解决方案可
我想使用与默认不同的 Font.Color 绘制一段 TEdit.Text。有没有例子如何做到这一点? 我正在尝试做这样的事情: 注意:这张截图只是一个毛茸茸的草稿,但它让我相信什么问题是可以解决的。
我想在 Paintbox 中绘制 TEdit 的主题边框。该代码必须在 Windows Vista 和 7 下运行。我已尝试以下操作。它只能在 Windows XP 下运行。 var Detail
我有一个表单 TForm1,其中包含 5 个 TEdit 和 2 个 TBitBtn。 我还需要该程序,以便在 BitBtn1Click 上的 Edit1 和 Edit2 中输入数字数据后,Edit1
我在 Delphi 中编写代码时遇到了问题。也就是说,我无法访问组件,即使它们已声明并且我在上面的代码中使用了它们(之前在过程中,现在我尝试在函数中使用它们 - 也许这就是原因,我不知道,我不擅长De
如果用户使用屏幕阅读器(例如 Microsoft 讲述人),并且他们的焦点进入文本框: 他们听到的只是: Editing text 同时在可访问的应用程序中, 例如 Microsoft 文件资源管理器
创建一个简单的 FireMonkey 移动应用。 向表单添加 TEdit 字段。 分配 OnApplyStyleLookup 事件 编写以下代码 procedure TForm1.Edit1Apply
很容易获得 TEdit 控件的外部尺寸,但其中包括斜角(或框架,取决于 Ctrl3d 是否为真)。我想找出TEdit的白色输入区域的尺寸和位置。 我尝试了 TEdit.ClientRect,但如果 C
我是一名优秀的程序员,十分优秀!