Delphi XE2 Update 4
我在TPngImageList上加载了几个PNG文件128x128,我要选择一个,或者通过索引号或名称,并分配给TuniImage.Picture
TUniImage来自UniGUi框架.但它是一个TPicture类.我想应该与使用它的其他TPict相同.
德尔福XE2
我有followind自定义组件:
TNaharWebDBEdit = class(TUniDBEdit)
private
FThemeColor : TNaharPalleteColor;
FThemeController: TNaharThemeController;
procedure OnObserver(Sender: TObject; AParam, AValue: Variant);
procedure UpdateColor;
procedure SetColor(const Value: TNaharPalleteColor);
function GetThemeManager: TNaharThemeManager;
protected
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property ThemeColor: TNaharPalleteColor read FThemeColor write SetColor default npcWhite;
property ThemeManager: TNaharThemeManager read GetThemeManager;
end;
Run Code Online (Sandbox Code Playgroud)
SetColor代码是:
procedure TNaharWebDBEdit.SetColor(const Value: TNaharPalleteColor);
begin
FThemeColor := Value;
UpdateColor;
end;
Run Code Online (Sandbox Code Playgroud)
UpdateColor只是为目标指定的主题颜色和设置在Self.Color上.
一切正常.ThemeColor属性显示在属性视图中,我可以将其更改为其他值.然而,在我保存表单并再次打开后,它又恢复到原始值,甚至不是默认值.
我制作了12个这样的组件,以及所有类似的代码.仅在Panel(来自TuniPanel)上工作正常,该属性保留在设计期间分配的值并在运行时正确检索它.
某些值未保存或未恢复属性.怎么抓住那个?
编辑:
TNaharPalleteColor = (npcMainColor, npcColorA, npcColorB, npcColorC, npcColorD, npcWhite, npcBlack, npcUnknown, npcNone);
Run Code Online (Sandbox Code Playgroud)
我已将ThemeColor的值更改为npcWhite并保存.我在Notepad ++上打开了DFM,发现它没有被保存 …
关于这个问题有很多其他答案,但我相信这是具体的.
我正在使用Delphi XE2和Indy 10.5.8以及TIdUDPServer
在我的本地开发网络中,我拥有相同网络ip子范围内的所有内容,并且所有连接到同一个接入点(LinkSys)
我有Androids sendind UDP Broadcast到255.255.255.255请求在Delphi上用端口44444上的TIdUDPServer监听的服务器ip地址.
请求到达那里很好,我可以回答没问题.完全按预期工作.
但是我注意到在某些网络中它不起作用!它总是基于接入点的简单网络,我不确定但似乎问题发生在服务器PC连接到LAN端口,而设备使用wifi,都在同一个接入点.
可能是接入点不通过LAN和wifi广播UDP数据包的情况?我知道这种广播非常有限,但我没有发现任何信息告诉我在同一个接入点有这样的限制.
有没有办法测试或解决方法?
这个解决方案需要足够强大,以处理那里的许多AP.
编辑:对于那些想要从网络中获取更多信息的源代码,包括下面答案中提到的广播IP,请遵循此解决方案,它就在那里.
我正在做一个自定义组件,Delphi XE2中TComponent的后代,我想右键单击它并有2个选项:Next和Previous(例如)
怎么办?请提供代码段或示例.
该选项应该在设计时出现,右键单击表单上的组件,现在是TComponent的后代.但如果有更好的选择来获得功能,则不需要这样做.
下一个和上一个将用于根据集合中的主题切换组件的颜色(通过所有者组件列表).
我使用TMemIniFile来存储配置,我需要按照alpha顺序对这些部分进行排序.
为此,我创建了TMemIniFile的后代
TRWStudioMemIniFile = class(TMemIniFile)
public
procedure UpdateFile; override;
procedure GetSortedStrings(List: TStrings);
end;
{ TRWStudioMemIniFile }
procedure TRWStudioMemIniFile.GetSortedStrings(List: TStrings);
var
I, J: Integer;
Strings: TStrings;
begin
List.BeginUpdate;
try
Sections.Sort;
for I := 0 to Sections.Count - 1 do
begin
List.Add('[' + Sections[I] + ']');
Strings := TStrings(Sections.Objects[I]);
for J := 0 to Strings.Count - 1 do List.Add(Strings[J]);
List.Add('');
end;
finally
List.EndUpdate;
end;
end;
procedure TRWStudioMemIniFile.UpdateFile;
var
List: TStringList;
begin
List := TStringList.Create;
try
GetSortedStrings(List);
List.SaveToFile(FileName, Encoding);
finally
List.Free;
end;
end; …Run Code Online (Sandbox Code Playgroud)