小编Edu*_*ias的帖子

如何将PNG图像从TPngImageList分配给TuniImage?

Delphi XE2 Update 4

我在TPngImageList上加载了几个PNG文件128x128,我要选择一个,或者通过索引号或名称,并分配给TuniImage.Picture

TUniImage来自UniGUi框架.但它是一个TPicture类.我想应该与使用它的其他TPict相同.

delphi png delphi-xe2

1
推荐指数
1
解决办法
913
查看次数

在自定义组件中检索存储在DFM上的属性的值错误

德尔福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 custom-component delphi-xe2

1
推荐指数
1
解决办法
593
查看次数

UDP广播到所有IP在某些网络中不起作用

关于这个问题有很多其他答案,但我相信这是具体的.

我正在使用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,请遵循此解决方案,它就在那里.

http://www.code10.info/index.php?option=com_content&view=article&id=54:articleretrieve-network-adapter-information&catid=47:cat_coding_algorithms_network&Itemid=78

delphi udp indy10 delphi-xe2

0
推荐指数
1
解决办法
3921
查看次数

如何在Delphi Form Designer中为自定义组件添加上下文菜单操作?

我正在做一个自定义组件,Delphi XE2中TComponent的后代,我想右键单击它并有2个选项:Next和Previous(例如)

怎么办?请提供代码段或示例.

该选项应该在设计时出现,右键单击表单上的组件,现在是TComponent的后代.但如果有更好的选择来获得功能,则不需要这样做.

下一个和上一个将用于根据集合中的主题切换组件的颜色(通过所有者组件列表).

delphi components custom-component delphi-xe2

0
推荐指数
1
解决办法
1373
查看次数

如何在TMemIniFile上对章节进行排序

我使用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)

delphi oop delphi-10.1-berlin

-2
推荐指数
1
解决办法
319
查看次数